RoleDawn

Hiring Signals MCP Server for Claude, Cursor and VS Code

By the RoleDawn team · Published · Updated

Add the remote MCP server https://roledawn.com/mcp to your AI client (Streamable HTTP, no sign-up, no key needed to start). Your assistant then gets four read-only tools: list_hiring_signals (companies that just started hiring a team, such as their first SDR or RevOps hire, with the job post), list_company_jobs (one company's open Greenhouse, Lever or Ashby jobs), get_app and list_app_reviews (App Store and Google Play). In Claude Code run: claude mcp add --transport http roledawn https://roledawn.com/mcp

  • One URL, nothing to install. A remote server: no Docker, no npm package, no local process to keep running.
  • Free to start. No sign-up and no key for the first 50 calls a day; a free key (email only) gives hiring signals their own 50 daily calls.
  • Answers with evidence. Every hiring signal links to the company's own job post, so you can check it before you reach out.
  • Read-only and public data only. No logins, no personal contact details, nothing the tools can change.

What is the server URL?

https://roledawn.com/mcp, transport Streamable HTTP (stateless, JSON responses over POST). Server name com.roledawn/mcp. With a free key, either send the header X-RoleDawn-Key: rd_your_key or use https://roledawn.com/mcp?key=rd_your_key.

How do I add it to Claude Code?

claude mcp add --transport http roledawn https://roledawn.com/mcp

With your free key, and for all your projects (--scope user):

claude mcp add --transport http roledawn https://roledawn.com/mcp --scope user --header "X-RoleDawn-Key: rd_your_key"

To share it with your team, commit a .mcp.json at the project root (or run the command with --scope project):

{
  "mcpServers": {
    "roledawn": {
      "type": "http",
      "url": "https://roledawn.com/mcp"
    }
  }
}

How do I add it to Claude Desktop or claude.ai?

  1. Open Customize > Connectors, click + Add, then Add custom connector. (Team and Enterprise owners add it under Organization settings > Connectors.)
  2. Name it RoleDawn and paste https://roledawn.com/mcp as the remote MCP server URL.
  3. Choose No sign in for authentication. With a key, add the request header X-RoleDawn-Key, or use https://roledawn.com/mcp?key=rd_your_key as the URL.

Custom connectors work on Claude's Free, Pro, Max, Team and Enterprise plans, according to Anthropic's help center.

How do I add it to Cursor?

Add this to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):

{
  "mcpServers": {
    "roledawn": {
      "url": "https://roledawn.com/mcp"
    }
  }
}

With your key:

{
  "mcpServers": {
    "roledawn": {
      "url": "https://roledawn.com/mcp",
      "headers": {
        "X-RoleDawn-Key": "rd_your_key"
      }
    }
  }
}

How do I add it to VS Code (GitHub Copilot agent mode)?

Run MCP: Add Server from the Command Palette and follow the prompts with the URL above, or add this to .vscode/mcp.json (drop headers if you have no key):

{
  "servers": {
    "roledawn": {
      "type": "http",
      "url": "https://roledawn.com/mcp",
      "headers": {
        "X-RoleDawn-Key": "rd_your_key"
      }
    }
  }
}

Clients that only run local (stdio) servers can bridge to it with npx mcp-remote https://roledawn.com/mcp.

Which tools does the server have?

ToolWhat it returns
list_hiring_signalsCompanies that just started hiring in a role family (first_hire) or are hiring clearly more in it (surge), each with the job post. Up to 20 companies per call.
list_company_jobsEvery open job on one company's Greenhouse, Lever or Ashby board: title, location, department, remote, URL, posting date.
get_appOne App Store or Google Play app: rating, ratings count, star histogram, installs, version, release notes, price.
list_app_reviewsReviews shown on the store page, with star filter, sorting and paging; developer replies on Google Play.

Role family ids for list_hiring_signals include sdr, sales, revops, marketing, security, data-engineering and more: the full list is in the tool's input schema and on /api.

How do I find companies that just started hiring a team?

Ask, for example: "Which companies started hiring their first SDR in the last 7 days?". The client sends:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_hiring_signals",
    "arguments": {
      "family": [
        "sdr"
      ],
      "since": "7d",
      "limit": 2
    }
  }
}

Real result, captured 2026-10-07 (long text and lists shortened, marked …). The first text block is the summary the model reads; structuredContent holds the data:

2 companies with first_hire signals in sdr (last 7d), from offset 0. More: call again with offset=2. 39 companies matched; the free API returns the top 20. Full list: https://roledawn.com/weekly-list

{
  "family": "sdr",
  "since": "7d",
  "type": "first_hire",
  "window_start": "2026-09-30T10:44:43.779Z",
  "generated_at": "2026-10-07T10:44:43.779Z",
  "total": 39,
  "count": 2,
  "limit": 2,
  "offset": 0,
  "next_offset": 2,
  "free_rows": 20,
  "truncated": true,
  "signals": [
    {
      "company": "SwiftConnect",
      "company_key": "swiftconnect",
      "company_url": "https://roledawn.com/companies/swiftconnect",
      "title": "Sales Development Representative",
      "family": "sdr",
      "type": "first_hire",
      "signal": "New SDR/BDR team",
      "evidence": "New on their board",
      "founding": true,
      "location": "United States",
      "job_url": "https://jobs.lever.co/swiftconnect/3305b93a-6112-4334-a4f5-cb0a36f5eeed",
      "posted": "2026-10-06T18:58:48.406Z",
      "detected": "2026-10-07T06:30:17.442Z",
      "roles_last_30d": null,
      "roles_prior_30d": null
    },
    {
      "company": "Coperniq",
      "company_key": "coperniq",
      "company_url": "https://roledawn.com/companies/coperniq",
      "title": "Founding BDR",
      "family": "sdr",
      "type": "first_hire",
      "signal": "New SDR/BDR team",
      "evidence": "Likely new team · inferred",
      "founding": true,
      "location": "Remote",
      "job_url": "https://jobs.ashbyhq.com/coperniq/d89d3086-b05a-4fd4-adad-c8f44b11be07",
      "posted": "2026-09-22T05:03:19.128Z",
      "detected": "2026-10-05T19:07:14.382Z",
      "roles_last_30d": null,
      "roles_prior_30d": null
    }
  ]
}

How do I list one company's open jobs?

Ask, for example: "What jobs does Stripe have open on its Greenhouse board right now?". The client sends:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_company_jobs",
    "arguments": {
      "ats": "greenhouse",
      "company": "stripe",
      "limit": 2
    }
  }
}

Real result, captured 2026-10-07 (long text and lists shortened, marked …). The first text block is the summary the model reads; structuredContent holds the data:

Stripe (greenhouse): 733 matching open jobs, showing 2 from offset 0. More: call again with offset=2.

{
  "ats": "greenhouse",
  "company": "stripe",
  "company_name": "Stripe",
  "board_url": "https://job-boards.greenhouse.io/stripe",
  "fetched_at": "2026-10-07T09:32:29.178Z",
  "total": 733,
  "count": 2,
  "limit": 2,
  "offset": 0,
  "next_offset": 2,
  "jobs": [
    {
      "id": "8241345",
      "title": "Account Executive, Velocity Scaled Grower (Italian or Spanish fluency)",
      "company": "stripe",
      "company_name": "Stripe",
      "ats": "greenhouse",
      "location": "Dublin",
      "department": "1185 Account Executives (EMEA)",
      "remote": false,
      "url": "https://stripe.com/jobs/search?gh_jid=8241345",
      "posted_at": "2026-10-07T09:23:16.000Z"
    },
    {
      "id": "8257892",
      "title": "Security Engineer, New Grad",
      "company": "stripe",
      "company_name": "Stripe",
      "ats": "greenhouse",
      "location": "Dublin",
      "department": "5112 General University",
      "remote": false,
      "url": "https://stripe.com/jobs/search?gh_jid=8257892",
      "posted_at": "2026-10-07T08:45:47.000Z"
    }
  ]
}

How do I get an app's rating and store details?

Ask, for example: "What is the Google Play rating and install count of Spotify?". The client sends:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_app",
    "arguments": {
      "id": "com.spotify.music",
      "store": "google"
    }
  }
}

Real result, captured 2026-10-07 (long text and lists shortened, marked …). The first text block is the summary the model reads; structuredContent holds the data:

Spotify: Music and Podcasts by Spotify AB (google, us): rating 4.35 from 36442165 ratings, version n/a, updated 2026-10-05T08:34:41.000Z.

{
  "store": "google",
  "id": "com.spotify.music",
  "country": "us",
  "lang": "en",
  "title": "Spotify: Music and Podcasts",
  "developer": "Spotify AB",
  "developer_id": "Spotify+AB",
  "url": "https://play.google.com/store/apps/details?id=com.spotify.music",
  "icon": "https://play-lh.googleusercontent.com/IzQgYCcnCFCD08GR-3bdtcT8xzOvrNkC84avGT5CwTX2VIqmTmKKJcP_Cd4JoBOdmCMlTndlOzV6hrthg2fOWA",
  "genre": "Music & Audio",
  "price": 0,
  "currency": "USD",
  "free": true,
  "rating": 4.35,
  "ratings_count": 36442165,
  "reviews_count": 1855375,
  "histogram": {
    "1": 3716306,
    "2": 1064307,
    "3": 1312656,
    "4": 3101459,
    "5": 27247421
  },
  "rating_current_version": null,
  "ratings_count_current_version": null,
  "installs": "1,000,000,000+",
  "min_installs": 1000000000,
  "version": null,
  "release_notes": "We’re always making changes and improvements to Spotify. To make sure you don’t miss a thing, just keep your Updates turned on.",
  "released_at": "2014-05-27T00:00:00.000Z",
  "updated_at": "2026-10-05T08:34:41.000Z",
  "content_rating": "Teen",
  "min_os_version": null,
  "size_bytes": null,
  "contains_ads": true,
  "in_app_purchases": true,
  "description": "With the Spotify music and podcast app, you can play millions of songs, albums and original podcasts for free. We have even added audiobooks, so you can enjoy …",
  "fetched_at": "2026-10-07T10:33:11.799Z"
}

How do I read an app's store reviews?

Ask, for example: "Show me the 1- and 2-star UK App Store reviews of WhatsApp.". The client sends:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_app_reviews",
    "arguments": {
      "id": "310633997",
      "store": "apple",
      "country": "gb",
      "rating": [
        1,
        2
      ],
      "limit": 2
    }
  }
}

Real result, captured 2026-10-07 (long text and lists shortened, marked …). The first text block is the summary the model reads; structuredContent holds the data:

WhatsApp Messenger (apple, gb): 5 matching reviews on the store page, showing 2 from offset 0. More: call again with offset=2.

{
  "store": "apple",
  "id": "310633997",
  "country": "gb",
  "lang": null,
  "app_title": "WhatsApp Messenger",
  "app_url": "https://apps.apple.com/gb/app/whatsapp-messenger/id310633997",
  "rating": 4.7,
  "ratings_count": 4199657,
  "fetched_at": "2026-10-07T10:33:05.390Z",
  "total": 5,
  "count": 2,
  "limit": 2,
  "offset": 0,
  "next_offset": 2,
  "reviews": [
    {
      "id": "13051642211",
      "rating": 2,
      "title": "Superb app but anti-disabled",
      "text": "This is an excellent app and well designed. However the sign in process on the iPad is unnecessarily ridiculous and really hard if you’re physically disabled. I…",
      "date": "2025-08-23T16:29:26.000Z",
      "app_version": null,
      "thumbs_up": null,
      "developer_reply": null,
      "developer_reply_date": null
    },
    {
      "id": "12906618413",
      "rating": 1,
      "title": "Review from a blind persons perspective.",
      "text": "I use WhatsApp every single day for important daily communication with my friends, family and business contacts. For four years I have enjoyed the app significa…",
      "date": "2025-07-18T13:17:24.000Z",
      "app_version": null,
      "thumbs_up": null,
      "developer_reply": null,
      "developer_reply_date": null
    }
  ]
}

Can I test the server with curl?

Yes. initialize, tools/list and ping are free; each tools/call counts as one API request.

curl -X POST https://roledawn.com/mcp -H "content-type: application/json" -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'
curl -X POST https://roledawn.com/mcp -H "content-type: application/json" -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'

What are the limits, and when do I need the key?

  • No key: 50 tool calls per IP per day for all four tools together, 60 per minute; reset at 00:00 UTC.
  • Free key (get one, email only): list_hiring_signals counts 50 calls per day for your key instead of the IP. Useful when your client runs in the cloud and shares an IP with other users.
  • list_hiring_signals returns the top 20 companies per query. The full weekly list, with a suggested opening line for each company, is the RoleDawn Weekly List.

FAQ

Do I need an API key or an account?

No. The server works without a key: 50 tool calls per IP per day across all four tools and 60 per minute. Hosted clients often call from shared IP addresses, so for list_hiring_signals you can add a free personal key from roledawn.com/api/key (email only, shown right away): it then counts 50 calls per day for your key instead of the IP.

How do I send the key?

As an X-RoleDawn-Key header (or Authorization: Bearer with the key) in clients that support headers, such as Claude Code, Cursor and VS Code. In clients that only take a URL, put it on the server URL: https://roledawn.com/mcp?key=rd_your_key. The key is only used for list_hiring_signals; the other tools keep the per-IP allowance.

Which transport does the server use?

Streamable HTTP with plain JSON responses over POST. It is stateless: no session id and no SSE stream to keep open. It supports MCP protocol versions 2025-11-25, 2025-06-18, 2025-03-26 and 2024-11-05.

Can the tools change anything?

No. All four tools are read-only and marked readOnlyHint. They read public job boards, public app-store pages and RoleDawn's own hiring-signal data; they never log in anywhere and return no personal contact details.

What happens when I reach the daily limit?

The tool returns an error result with code rate_limited and the number of seconds to wait; counts reset at 00:00 UTC. For list_hiring_signals the message points to the free key.

My client only runs local (stdio) servers. Can I still use it?

Yes. Bridge to the remote server with npx mcp-remote https://roledawn.com/mcp.

Is there a plain REST API too?

Yes. Every tool wraps a GET endpoint documented at roledawn.com/api: /api/v1/signals, /api/v1/jobs, /api/v1/app and /api/v1/app-reviews. Using Clay? See how to pull hiring signals into clay with an http api column at roledawn.com/guides/clay-http-api-hiring-signals.

Related: MCP section of the API docs · Hiring Signals API · Hiring signals in Clay · App Reviews API · Free API key · Companies that just started hiring a new team. RoleDawn is not affiliated with Anthropic, Cursor or Microsoft.