docs get started
Welcome to RecruitMCP
A sourcing and outreach backend for recruiters, driven by your AI agent over MCP or by your own code over REST.
RecruitMCP is a sourcing and outreach backend for recruiters, driven by your AI agent over MCP or by your own code over REST. MCP tools and REST share one implementation, so scopes, previews, idempotency, and error codes behave the same in both.
Two modules
- Sourcing: three layers. Raw filters and full profiles for builders, building blocks (lookups, seen register, lists), and guided searches from job text to a delivered shortlist. See API layers.
- Outreach: accounts, sequences, enrollments, and conversations, with safety limits on every send.
Sourcing returns facts only: distance, experience years, tenure, current title and company. There is no fit score. Your agent or your code makes the judgment.
Connect in one line
Paste into your agent:
Set up RecruitMCP from https://recruitmcp.com/mcp.md
Or add https://mcp.recruitmcp.com/mcp as a custom connector. claude.ai and other clients that support OAuth sign in with your API key on a consent page; clients without OAuth send Authorization: Bearer rmcp_live_…. Per-client steps: claude.ai, Claude Desktop, and Claude Code.
Your first search
Use RecruitMCP. Find a Senior Backend Engineer in Ghent, 30 km, 5+ years.
Show me the estimate and wait for my go.
What just happened: your agent called start_search without confirm. That is free: it read the job text, built a plan, and returned a plain-language summary, applied_filters, and estimate.credits_max with requires_confirm: true. Say "go" and it calls start_search with confirm: true, then get_search_results with wait_seconds until the shortlist is ready.
Prefer the API
Create a workspace. The response includes api_key once.
curl -sS -X POST https://api.recruitmcp.com/v1/workspaces \
-H 'content-type: application/json' \
-d '{"name":"Northwind Search","email":"ada@northwind.example"}'
Then preview a run straight from job text:
curl -sS -X POST 'https://api.recruitmcp.com/v1/runs?dry_run=true' \
-H "Authorization: Bearer $RECRUITMCP_KEY" \
-H 'content-type: application/json' \
-d '{"job_description":"Senior backend engineer in Ghent, Belgium. Go, 5+ years.","target":30}'
Drop dry_run and add an Idempotency-Key header to start it. Every paid or sending call works this way. Responses carry RecruitMCP-Version: 2026-11-01. The contract is openapi.yaml, rendered at the API reference. Typed clients for TypeScript and Python are generated from it: see SDKs.