[{"data":1,"prerenderedAt":81},["ShallowReactive",2],{"docs:rendered-article:\u002Fdocs\u002Fpublic\u002Fguides\u002Fmcp":3},{"path":4,"slug":5,"title":8,"description":9,"category":6,"categoryLabel":10,"order":11,"status":12,"family":13,"subfamily":13,"content":14,"html":15,"examplesHtml":16,"excerpt":17,"readTimeMinutes":18,"headings":19,"examplesHeadings":79,"lastUpdated":13,"endpointId":13,"requiredFlag":13,"relatedArticlePaths":80,"badge":13},"\u002Fdocs\u002Fguides\u002Fmcp",[6,7],"guides","mcp","Connect AI agents (MCP)","Connect Claude, ChatGPT, Cursor, and other AI agents to ReverseContact using the Model Context Protocol.","Guides",50,"new",null,"\n## What is MCP\n\nThe [Model Context Protocol](https:\u002F\u002Fmodelcontextprotocol.io) (MCP) is an open standard that lets AI assistants call external tools directly. Once connected, your AI agent can enrich profiles, search people and companies, and more, all through natural conversation.\n\nReverseContact exposes **8 tools** via MCP (beta). Same data, same credits, same rate limits as the REST API.\n\n## Prerequisites\n\n- A ReverseContact account\n- An MCP-compatible client (claude.ai, Cowork, Claude Desktop, Claude Code, ChatGPT, Codex, Cursor, etc.)\n\nTwo ways to authenticate:\n\n- **Sign in with your account (OAuth)**: clients with OAuth support (claude.ai, Cowork, Claude Desktop, Claude Code, mobile, ChatGPT) connect with no API key. The first connection opens your browser, you approve the access, and a dedicated API key named `MCP - {app}` is created in your workspace automatically.\n- **API key**: every other client authenticates with an active API key (`rc_*`) in the `Authorization` header. Create one from [API Keys](https:\u002F\u002Fapp.reversecontact.com\u002Fapi-keys).\n\n## Server details\n\n| Property | Value |\n|----------|-------|\n| URL | `https:\u002F\u002Fapi.reversecontact.com\u002Fmcp` |\n| Transport | Streamable HTTP (POST only) |\n| Authentication | OAuth 2.1 (sign in) or `Authorization: Bearer rc_your_api_key` |\n| Protocol | JSON-RPC 2.0 |\n\n## Setup by client\n\nFor clients using an API key, replace `rc_your_api_key` with your actual key in the examples below.\n\n### Claude.ai, Claude Desktop, Cowork and mobile (custom connector)\n\nClaude surfaces connect through a custom connector, no API key involved:\n\n1. Open **Settings** > **Connectors** > **Add custom connector**.\n2. Paste `https:\u002F\u002Fapi.reversecontact.com\u002Fmcp` as the URL and confirm.\n3. Click **Connect**: your browser opens the ReverseContact consent page. Sign in if needed, pick the workspace shown, and approve.\n\nThe connector is then available in claude.ai chats, Claude Desktop, Cowork and the mobile apps. To revoke it later, delete its `MCP - {app}` key from [API Keys](https:\u002F\u002Fapp.reversecontact.com\u002Fapi-keys).\n\n### Claude Code\n\nClaude Code supports HTTP MCP servers natively. The fastest path is one command in your terminal, no API key needed:\n\n::: code-group [Terminal]\n```bash [bash]\nclaude mcp add --transport http reversecontact https:\u002F\u002Fapi.reversecontact.com\u002Fmcp\n```\n:::\n\nThen start a Claude Code session and run `\u002Fmcp`: select `reversecontact` and authenticate. Your browser opens the consent page, you approve, and the tools come online.\n\nFor headless or CI environments where the browser flow is not an option, pass an API key explicitly instead:\n\n::: code-group [Terminal]\n```bash [bash]\nclaude mcp add --transport http reversecontact \\\n  https:\u002F\u002Fapi.reversecontact.com\u002Fmcp \\\n  --header \"Authorization: Bearer rc_your_api_key\"\n```\n:::\n\nAlternatively, add a `.mcp.json` file at the root of your project to share the server with your team:\n\n::: code-group [.mcp.json]\n```json [JSON]\n{\n  \"mcpServers\": {\n    \"reversecontact\": {\n      \"type\": \"http\",\n      \"url\": \"https:\u002F\u002Fapi.reversecontact.com\u002Fmcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer rc_your_api_key\"\n      }\n    }\n  }\n}\n```\n:::\n\n### ChatGPT\n\nChatGPT connects through a custom connector and signs in with OAuth, no API key involved. Custom connectors require a paid ChatGPT plan (Plus, Pro, Business, Enterprise or Edu) with developer mode enabled:\n\n1. Open **Settings** > **Connectors** > **Advanced settings** and toggle **Developer mode** on.\n2. Back in **Connectors**, click **Create**: name it `ReverseContact`, paste `https:\u002F\u002Fapi.reversecontact.com\u002Fmcp` as the MCP server URL, and keep Authentication on **OAuth**.\n3. Confirm and click **Create**: your browser opens the ReverseContact consent page. Sign in if needed, pick the workspace shown, and approve.\n\nEnable the connector from the composer (plus menu) in any chat. To revoke it later, delete its `MCP - {app}` key from [API Keys](https:\u002F\u002Fapp.reversecontact.com\u002Fapi-keys).\n\n### Codex\n\nThe Codex CLI reads the bearer token from an environment variable, so the key never lands in a config file:\n\n::: code-group [Terminal]\n```bash [bash]\nexport RC_API_KEY=\"rc_your_api_key\"\ncodex mcp add reversecontact \\\n  --url https:\u002F\u002Fapi.reversecontact.com\u002Fmcp \\\n  --bearer-token-env-var RC_API_KEY\n```\n:::\n\nAdd the `export` line to your shell profile so the variable is set whenever Codex launches. This writes the server to `~\u002F.codex\u002Fconfig.toml`:\n\n::: code-group [config.toml]\n```toml [TOML]\n[mcp_servers.reversecontact]\nurl = \"https:\u002F\u002Fapi.reversecontact.com\u002Fmcp\"\nbearer_token_env_var = \"RC_API_KEY\"\n```\n:::\n\n### Cursor\n\nCreate a `.cursor\u002Fmcp.json` file at the root of your project. Cursor connects over HTTP natively, keyed on `url` (no `type` field):\n\n::: code-group [.cursor\u002Fmcp.json]\n```json [JSON]\n{\n  \"mcpServers\": {\n    \"reversecontact\": {\n      \"url\": \"https:\u002F\u002Fapi.reversecontact.com\u002Fmcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer rc_your_api_key\"\n      }\n    }\n  }\n}\n```\n:::\n\n### Google Gemini\n\nThe Gemini app does not support custom MCP connectors yet, so ReverseContact cannot be connected there for now. We will add setup instructions as soon as Google opens custom connectors in Gemini.\n\n### Other clients (mcp-remote)\n\nMost clients that support HTTP MCP servers (VS Code, Windsurf, Gemini CLI, etc.) accept the same URL and `Authorization: Bearer rc_your_api_key` header through their own config format. If your MCP client only supports stdio transport, use `mcp-remote` as a bridge:\n\n::: code-group [mcp-remote]\n```bash [bash]\nnpx mcp-remote https:\u002F\u002Fapi.reversecontact.com\u002Fmcp \\\n  --header \"Authorization: Bearer rc_your_api_key\"\n```\n:::\n\nThis works with any client that supports stdio-based MCP servers.\n\n## Available tools\n\n### Enrichment\n\n| Tool | What it does | Credits | Response |\n|------|-------------|---------|----------|\n| `enrich_person` | Get a person's LinkedIn profile from cache, or resolve by email\u002Fname | 1 (cached) \u002F 2 (resolve if found) | Instant |\n| `enrich_person_live` | Force a fresh LinkedIn scrape for a person profile (URL only) | 2 (live) | Async |\n| `enrich_company` | Get a company's LinkedIn profile from cache (description, size, HQ, industry) | 1 (cached) | Instant |\n| `enrich_company_live` | Force a fresh LinkedIn scrape for a company profile (URL only) | 2 (live) | Async |\n\n### Search\n\n| Tool | What it does | Credits | Response |\n|------|-------------|---------|----------|\n| `search_persons` | Search people by name, title, company, industry, location | 1 \u002F page | Instant |\n| `search_companies` | Search companies by name, domain, industry, size, location | 1 \u002F page | Instant |\n\n### Utility (free)\n\n| Tool | What it does | Credits | Response |\n|------|-------------|---------|----------|\n| `check_usage` | Check your credit balance and rate limit status | 0 | Instant |\n| `check_task` | Poll the status of an async operation | 0 | Instant |\n\n## Example prompts\n\nOnce the MCP server is connected, ask your AI agent in natural language. These examples map to the tools above and use the same credits as the REST API.\n\n1. **Enrich a person from an email**\n   > Enrich the LinkedIn profile for `alex@acme.com` and summarize current title, company, and recent experience.\n\n2. **Enrich a company from a domain**\n   > Look up the company for domain `stripe.com` and return industry, employee range, headquarters, and a one-paragraph description.\n\n3. **Search people with filters**\n   > Find people who are Heads of Sales or VPs of Sales at SaaS companies in the United States. Return the first page of results with name, title, and company.\n\n4. **Search companies with filters**\n   > Search for fintech companies with 50 to 200 employees headquartered in France. List name, domain, and size.\n\n5. **Check usage before a batch**\n   > Check my ReverseContact credit balance and rate limit status before I run a larger enrichment batch.\n\n6. **Async live enrichment workflow**\n   > Live-enrich the LinkedIn profile `https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fexample` with `enrich_person_live` and, if the tool returns a task id, poll until the result is ready, then summarize the profile.\n\nTip: for live enrichments the agent receives a `taskId` from `enrich_person_live` or `enrich_company_live` and should call `check_task` until status is `succeeded` or `errored`. You usually do not need to manage that loop yourself.\n\n## Async workflow\n\nThe live tools (`enrich_person_live`, `enrich_company_live`) run asynchronously. They return a `taskId` instead of data:\n\n::: code-group [Async response]\n```json [JSON]\n{\n  \"taskId\": \"abc123\",\n  \"status\": \"processing\",\n  \"message\": \"Scraping LinkedIn profile. Poll with check_task in ~10 seconds.\"\n}\n```\n:::\n\nUse `check_task` with the `taskId` to poll for results. Tasks typically complete in 10–60 seconds.\n\n**Status flow:** `in_progress` → `succeeded` or `errored`\n\nWhen succeeded, `check_task` returns the full data payload. Your AI agent handles this polling automatically. Just ask for what you need.\n\n## Credits and rate limits\n\nMCP tools consume the same credits and respect the same rate limits as the REST API. That means:\n\n- MCP calls use the same endpoint pricing as REST.\n- MCP calls count toward the same gateway RPM limits as REST API calls.\n- Agent LLM turns are different: they consume credits but do not affect gateway RPM until the Agent triggers a real tool call.\n\nUse `check_usage` to inspect your current balance before expensive operations.\n\nSee [Rate limits & credits](\u002Fdocs\u002Fguides\u002Frate-limits-credits) for details on quotas and throttling.\n\n## Troubleshooting\n\n| Error | Cause | Fix |\n|-------|-------|-----|\n| `Authentication required` (code -32001) | Missing or invalid credentials | OAuth clients: re-authenticate from the client (the access expires if its key is deleted). API key clients: check the key is active and the `Bearer` prefix is present |\n| `SSE streaming not supported` (code -32601) | Client sent a GET request | Your client must use POST. Use `mcp-remote` if it defaults to SSE |\n| `RATE_LIMIT_EXCEEDED` | Too many requests per minute | Wait for the rate limit window to reset. Check limits with `check_usage` |\n| `INSUFFICIENT_CREDITS` | Not enough credits for the operation | Top up credits from the dashboard |\n| `TRIAL_RESTRICTED` | Trial plans cannot use live\u002Fasync endpoints | Upgrade to a paid plan |\n| Connection timeout | Client cannot reach the server | Verify the URL is `https:\u002F\u002Fapi.reversecontact.com\u002Fmcp` and your network allows HTTPS |\n","\u003Ch2 id=\"what-is-mcp\">What is MCP\u003C\u002Fh2>\n\u003Cp>The \u003Ca href=\"https:\u002F\u002Fmodelcontextprotocol.io\">Model Context Protocol\u003C\u002Fa> (MCP) is an open standard that lets AI assistants call external tools directly. Once connected, your AI agent can enrich profiles, search people and companies, and more, all through natural conversation.\u003C\u002Fp>\n\u003Cp>ReverseContact exposes \u003Cstrong>8 tools\u003C\u002Fstrong> via MCP (beta). Same data, same credits, same rate limits as the REST API.\u003C\u002Fp>\n\u003Ch2 id=\"prerequisites\">Prerequisites\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>A ReverseContact account\u003C\u002Fli>\n\u003Cli>An MCP-compatible client (\u003Ca href=\"http:\u002F\u002Fclaude.ai\">claude.ai\u003C\u002Fa>, Cowork, Claude Desktop, Claude Code, ChatGPT, Codex, Cursor, etc.)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Two ways to authenticate:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Sign in with your account (OAuth)\u003C\u002Fstrong>: clients with OAuth support (\u003Ca href=\"http:\u002F\u002Fclaude.ai\">claude.ai\u003C\u002Fa>, Cowork, Claude Desktop, Claude Code, mobile, ChatGPT) connect with no API key. The first connection opens your browser, you approve the access, and a dedicated API key named \u003Ccode>MCP - {app}\u003C\u002Fcode> is created in your workspace automatically.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>API key\u003C\u002Fstrong>: every other client authenticates with an active API key (\u003Ccode>rc_*\u003C\u002Fcode>) in the \u003Ccode>Authorization\u003C\u002Fcode> header. Create one from \u003Ca href=\"https:\u002F\u002Fapp.reversecontact.com\u002Fapi-keys\">API Keys\u003C\u002Fa>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"server-details\">Server details\u003C\u002Fh2>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Property\u003C\u002Fth>\n\u003Cth>Value\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>URL\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>https:\u002F\u002Fapi.reversecontact.com\u002Fmcp\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Transport\u003C\u002Ftd>\n\u003Ctd>Streamable HTTP (POST only)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Authentication\u003C\u002Ftd>\n\u003Ctd>OAuth 2.1 (sign in) or \u003Ccode>Authorization: Bearer rc_your_api_key\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Protocol\u003C\u002Ftd>\n\u003Ctd>JSON-RPC 2.0\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch2 id=\"setup-by-client\">Setup by client\u003C\u002Fh2>\n\u003Cp>For clients using an API key, replace \u003Ccode>rc_your_api_key\u003C\u002Fcode> with your actual key in the examples below.\u003C\u002Fp>\n\u003Ch3 id=\"claudeai-claude-desktop-cowork-and-mobile-custom-connector\">\u003Ca href=\"http:\u002F\u002FClaude.ai\">Claude.ai\u003C\u002Fa>, Claude Desktop, Cowork and mobile (custom connector)\u003C\u002Fh3>\n\u003Cp>Claude surfaces connect through a custom connector, no API key involved:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Open \u003Cstrong>Settings\u003C\u002Fstrong> &gt; \u003Cstrong>Connectors\u003C\u002Fstrong> &gt; \u003Cstrong>Add custom connector\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003Cli>Paste \u003Ccode>https:\u002F\u002Fapi.reversecontact.com\u002Fmcp\u003C\u002Fcode> as the URL and confirm.\u003C\u002Fli>\n\u003Cli>Click \u003Cstrong>Connect\u003C\u002Fstrong>: your browser opens the ReverseContact consent page. Sign in if needed, pick the workspace shown, and approve.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>The connector is then available in \u003Ca href=\"http:\u002F\u002Fclaude.ai\">claude.ai\u003C\u002Fa> chats, Claude Desktop, Cowork and the mobile apps. To revoke it later, delete its \u003Ccode>MCP - {app}\u003C\u002Fcode> key from \u003Ca href=\"https:\u002F\u002Fapp.reversecontact.com\u002Fapi-keys\">API Keys\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3 id=\"claude-code\">Claude Code\u003C\u002Fh3>\n\u003Cp>Claude Code supports HTTP MCP servers natively. The fastest path is one command in your terminal, no API key needed:\u003C\u002Fp>\n\u003Cdiv class=\"docs-code-group\">\u003Cdiv class=\"docs-code-group-header\">\u003Cspan class=\"docs-code-group-title\" data-static-title>Terminal\u003C\u002Fspan>\u003Cdiv class=\"docs-code-group-actions\">\u003Cspan class=\"docs-code-group-lang\">bash\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"docs-code-group-copy\" data-copy-code=\"true\">\u003Csvg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv class=\"docs-code-group-panel active\" data-tab=\"0\" role=\"tabpanel\">\u003Cpre class=\"shiki shiki-themes github-light github-dark\" style=\"--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e\" tabindex=\"0\" data-language=\"bash\">\u003Ccode class=\"language-bash\">\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#6F42C1;--shiki-dark:#B392F0\">claude\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> mcp\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> add\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\"> --transport\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> http\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> reversecontact\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> https:\u002F\u002Fapi.reversecontact.com\u002Fmcp\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Cp>Then start a Claude Code session and run \u003Ccode>\u002Fmcp\u003C\u002Fcode>: select \u003Ccode>reversecontact\u003C\u002Fcode> and authenticate. Your browser opens the consent page, you approve, and the tools come online.\u003C\u002Fp>\n\u003Cp>For headless or CI environments where the browser flow is not an option, pass an API key explicitly instead:\u003C\u002Fp>\n\u003Cdiv class=\"docs-code-group\">\u003Cdiv class=\"docs-code-group-header\">\u003Cspan class=\"docs-code-group-title\" data-static-title>Terminal\u003C\u002Fspan>\u003Cdiv class=\"docs-code-group-actions\">\u003Cspan class=\"docs-code-group-lang\">bash\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"docs-code-group-copy\" data-copy-code=\"true\">\u003Csvg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv class=\"docs-code-group-panel active\" data-tab=\"0\" role=\"tabpanel\">\u003Cpre class=\"shiki shiki-themes github-light github-dark\" style=\"--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e\" tabindex=\"0\" data-language=\"bash\">\u003Ccode class=\"language-bash\">\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#6F42C1;--shiki-dark:#B392F0\">claude\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> mcp\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> add\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\"> --transport\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> http\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> reversecontact\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\">  https:\u002F\u002Fapi.reversecontact.com\u002Fmcp\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\">  --header\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> \"Authorization: Bearer rc_your_api_key\"\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Cp>Alternatively, add a \u003Ccode>.mcp.json\u003C\u002Fcode> file at the root of your project to share the server with your team:\u003C\u002Fp>\n\u003Cdiv class=\"docs-code-group\">\u003Cdiv class=\"docs-code-group-header\">\u003Cspan class=\"docs-code-group-title\" data-static-title>.mcp.json\u003C\u002Fspan>\u003Cdiv class=\"docs-code-group-actions\">\u003Cspan class=\"docs-code-group-lang\">JSON\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"docs-code-group-copy\" data-copy-code=\"true\">\u003Csvg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv class=\"docs-code-group-panel active\" data-tab=\"0\" role=\"tabpanel\">\u003Cpre class=\"shiki shiki-themes github-light github-dark\" style=\"--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e\" tabindex=\"0\" data-language=\"json\">\u003Ccode class=\"language-json\">\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\">  \"mcpServers\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">: {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\">    \"reversecontact\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">: {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\">      \"type\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">: \u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\">\"http\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\">      \"url\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">: \u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\">\"https:\u002F\u002Fapi.reversecontact.com\u002Fmcp\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\">      \"headers\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">: {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\">        \"Authorization\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">: \u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\">\"Bearer rc_your_api_key\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">      }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">    }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">  }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Ch3 id=\"chatgpt\">ChatGPT\u003C\u002Fh3>\n\u003Cp>ChatGPT connects through a custom connector and signs in with OAuth, no API key involved. Custom connectors require a paid ChatGPT plan (Plus, Pro, Business, Enterprise or Edu) with developer mode enabled:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Open \u003Cstrong>Settings\u003C\u002Fstrong> &gt; \u003Cstrong>Connectors\u003C\u002Fstrong> &gt; \u003Cstrong>Advanced settings\u003C\u002Fstrong> and toggle \u003Cstrong>Developer mode\u003C\u002Fstrong> on.\u003C\u002Fli>\n\u003Cli>Back in \u003Cstrong>Connectors\u003C\u002Fstrong>, click \u003Cstrong>Create\u003C\u002Fstrong>: name it \u003Ccode>ReverseContact\u003C\u002Fcode>, paste \u003Ccode>https:\u002F\u002Fapi.reversecontact.com\u002Fmcp\u003C\u002Fcode> as the MCP server URL, and keep Authentication on \u003Cstrong>OAuth\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003Cli>Confirm and click \u003Cstrong>Create\u003C\u002Fstrong>: your browser opens the ReverseContact consent page. Sign in if needed, pick the workspace shown, and approve.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Enable the connector from the composer (plus menu) in any chat. To revoke it later, delete its \u003Ccode>MCP - {app}\u003C\u002Fcode> key from \u003Ca href=\"https:\u002F\u002Fapp.reversecontact.com\u002Fapi-keys\">API Keys\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3 id=\"codex\">Codex\u003C\u002Fh3>\n\u003Cp>The Codex CLI reads the bearer token from an environment variable, so the key never lands in a config file:\u003C\u002Fp>\n\u003Cdiv class=\"docs-code-group\">\u003Cdiv class=\"docs-code-group-header\">\u003Cspan class=\"docs-code-group-title\" data-static-title>Terminal\u003C\u002Fspan>\u003Cdiv class=\"docs-code-group-actions\">\u003Cspan class=\"docs-code-group-lang\">bash\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"docs-code-group-copy\" data-copy-code=\"true\">\u003Csvg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv class=\"docs-code-group-panel active\" data-tab=\"0\" role=\"tabpanel\">\u003Cpre class=\"shiki shiki-themes github-light github-dark\" style=\"--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e\" tabindex=\"0\" data-language=\"bash\">\u003Ccode class=\"language-bash\">\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#D73A49;--shiki-dark:#F97583\">export\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\"> RC_API_KEY\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#D73A49;--shiki-dark:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\">\"rc_your_api_key\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#6F42C1;--shiki-dark:#B392F0\">codex\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> mcp\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> add\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> reversecontact\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\">  --url\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> https:\u002F\u002Fapi.reversecontact.com\u002Fmcp\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\">  --bearer-token-env-var\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> RC_API_KEY\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Cp>Add the \u003Ccode>export\u003C\u002Fcode> line to your shell profile so the variable is set whenever Codex launches. This writes the server to \u003Ccode>~\u002F.codex\u002Fconfig.toml\u003C\u002Fcode>:\u003C\u002Fp>\n\u003Cdiv class=\"docs-code-group\">\u003Cdiv class=\"docs-code-group-header\">\u003Cspan class=\"docs-code-group-title\" data-static-title>config.toml\u003C\u002Fspan>\u003Cdiv class=\"docs-code-group-actions\">\u003Cspan class=\"docs-code-group-lang\">TOML\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"docs-code-group-copy\" data-copy-code=\"true\">\u003Csvg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv class=\"docs-code-group-panel active\" data-tab=\"0\" role=\"tabpanel\">\u003Cpre class=\"shiki shiki-themes github-light github-dark\" style=\"--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e\" tabindex=\"0\" data-language=\"bash\">\u003Ccode class=\"language-bash\">\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">[mcp_servers.reversecontact]\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#6F42C1;--shiki-dark:#B392F0\">url\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> =\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> \"https:\u002F\u002Fapi.reversecontact.com\u002Fmcp\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#6F42C1;--shiki-dark:#B392F0\">bearer_token_env_var\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> =\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> \"RC_API_KEY\"\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Ch3 id=\"cursor\">Cursor\u003C\u002Fh3>\n\u003Cp>Create a \u003Ccode>.cursor\u002Fmcp.json\u003C\u002Fcode> file at the root of your project. Cursor connects over HTTP natively, keyed on \u003Ccode>url\u003C\u002Fcode> (no \u003Ccode>type\u003C\u002Fcode> field):\u003C\u002Fp>\n\u003Cdiv class=\"docs-code-group\">\u003Cdiv class=\"docs-code-group-header\">\u003Cspan class=\"docs-code-group-title\" data-static-title>.cursor\u002Fmcp.json\u003C\u002Fspan>\u003Cdiv class=\"docs-code-group-actions\">\u003Cspan class=\"docs-code-group-lang\">JSON\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"docs-code-group-copy\" data-copy-code=\"true\">\u003Csvg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv class=\"docs-code-group-panel active\" data-tab=\"0\" role=\"tabpanel\">\u003Cpre class=\"shiki shiki-themes github-light github-dark\" style=\"--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e\" tabindex=\"0\" data-language=\"json\">\u003Ccode class=\"language-json\">\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\">  \"mcpServers\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">: {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\">    \"reversecontact\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">: {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\">      \"url\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">: \u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\">\"https:\u002F\u002Fapi.reversecontact.com\u002Fmcp\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\">      \"headers\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">: {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\">        \"Authorization\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">: \u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\">\"Bearer rc_your_api_key\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">      }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">    }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">  }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Ch3 id=\"google-gemini\">Google Gemini\u003C\u002Fh3>\n\u003Cp>The Gemini app does not support custom MCP connectors yet, so ReverseContact cannot be connected there for now. We will add setup instructions as soon as Google opens custom connectors in Gemini.\u003C\u002Fp>\n\u003Ch3 id=\"other-clients-mcp-remote\">Other clients (mcp-remote)\u003C\u002Fh3>\n\u003Cp>Most clients that support HTTP MCP servers (VS Code, Windsurf, Gemini CLI, etc.) accept the same URL and \u003Ccode>Authorization: Bearer rc_your_api_key\u003C\u002Fcode> header through their own config format. If your MCP client only supports stdio transport, use \u003Ccode>mcp-remote\u003C\u002Fcode> as a bridge:\u003C\u002Fp>\n\u003Cdiv class=\"docs-code-group\">\u003Cdiv class=\"docs-code-group-header\">\u003Cspan class=\"docs-code-group-title\" data-static-title>mcp-remote\u003C\u002Fspan>\u003Cdiv class=\"docs-code-group-actions\">\u003Cspan class=\"docs-code-group-lang\">bash\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"docs-code-group-copy\" data-copy-code=\"true\">\u003Csvg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv class=\"docs-code-group-panel active\" data-tab=\"0\" role=\"tabpanel\">\u003Cpre class=\"shiki shiki-themes github-light github-dark\" style=\"--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e\" tabindex=\"0\" data-language=\"bash\">\u003Ccode class=\"language-bash\">\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#6F42C1;--shiki-dark:#B392F0\">npx\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> mcp-remote\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> https:\u002F\u002Fapi.reversecontact.com\u002Fmcp\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\">  --header\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> \"Authorization: Bearer rc_your_api_key\"\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Cp>This works with any client that supports stdio-based MCP servers.\u003C\u002Fp>\n\u003Ch2 id=\"available-tools\">Available tools\u003C\u002Fh2>\n\u003Ch3 id=\"enrichment\">Enrichment\u003C\u002Fh3>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Tool\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003Cth>Credits\u003C\u002Fth>\n\u003Cth>Response\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>enrich_person\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Get a person’s LinkedIn profile from cache, or resolve by email\u002Fname\u003C\u002Ftd>\n\u003Ctd>1 (cached) \u002F 2 (resolve if found)\u003C\u002Ftd>\n\u003Ctd>Instant\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>enrich_person_live\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Force a fresh LinkedIn scrape for a person profile (URL only)\u003C\u002Ftd>\n\u003Ctd>2 (live)\u003C\u002Ftd>\n\u003Ctd>Async\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>enrich_company\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Get a company’s LinkedIn profile from cache (description, size, HQ, industry)\u003C\u002Ftd>\n\u003Ctd>1 (cached)\u003C\u002Ftd>\n\u003Ctd>Instant\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>enrich_company_live\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Force a fresh LinkedIn scrape for a company profile (URL only)\u003C\u002Ftd>\n\u003Ctd>2 (live)\u003C\u002Ftd>\n\u003Ctd>Async\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch3 id=\"search\">Search\u003C\u002Fh3>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Tool\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003Cth>Credits\u003C\u002Fth>\n\u003Cth>Response\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>search_persons\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Search people by name, title, company, industry, location\u003C\u002Ftd>\n\u003Ctd>1 \u002F page\u003C\u002Ftd>\n\u003Ctd>Instant\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>search_companies\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Search companies by name, domain, industry, size, location\u003C\u002Ftd>\n\u003Ctd>1 \u002F page\u003C\u002Ftd>\n\u003Ctd>Instant\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch3 id=\"utility-free\">Utility (free)\u003C\u002Fh3>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Tool\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003Cth>Credits\u003C\u002Fth>\n\u003Cth>Response\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>check_usage\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Check your credit balance and rate limit status\u003C\u002Ftd>\n\u003Ctd>0\u003C\u002Ftd>\n\u003Ctd>Instant\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>check_task\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Poll the status of an async operation\u003C\u002Ftd>\n\u003Ctd>0\u003C\u002Ftd>\n\u003Ctd>Instant\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch2 id=\"example-prompts\">Example prompts\u003C\u002Fh2>\n\u003Cp>Once the MCP server is connected, ask your AI agent in natural language. These examples map to the tools above and use the same credits as the REST API.\u003C\u002Fp>\n\u003Col>\n\u003Cli>\n\u003Cp>\u003Cstrong>Enrich a person from an email\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Enrich the LinkedIn profile for \u003Ccode>alex@acme.com\u003C\u002Fcode> and summarize current title, company, and recent experience.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Enrich a company from a domain\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Look up the company for domain \u003Ccode>stripe.com\u003C\u002Fcode> and return industry, employee range, headquarters, and a one-paragraph description.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Search people with filters\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Find people who are Heads of Sales or VPs of Sales at SaaS companies in the United States. Return the first page of results with name, title, and company.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Search companies with filters\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Search for fintech companies with 50 to 200 employees headquartered in France. List name, domain, and size.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Check usage before a batch\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Check my ReverseContact credit balance and rate limit status before I run a larger enrichment batch.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Async live enrichment workflow\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Live-enrich the LinkedIn profile \u003Ccode>https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fexample\u003C\u002Fcode> with \u003Ccode>enrich_person_live\u003C\u002Fcode> and, if the tool returns a task id, poll until the result is ready, then summarize the profile.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Tip: for live enrichments the agent receives a \u003Ccode>taskId\u003C\u002Fcode> from \u003Ccode>enrich_person_live\u003C\u002Fcode> or \u003Ccode>enrich_company_live\u003C\u002Fcode> and should call \u003Ccode>check_task\u003C\u002Fcode> until status is \u003Ccode>succeeded\u003C\u002Fcode> or \u003Ccode>errored\u003C\u002Fcode>. You usually do not need to manage that loop yourself.\u003C\u002Fp>\n\u003Ch2 id=\"async-workflow\">Async workflow\u003C\u002Fh2>\n\u003Cp>The live tools (\u003Ccode>enrich_person_live\u003C\u002Fcode>, \u003Ccode>enrich_company_live\u003C\u002Fcode>) run asynchronously. They return a \u003Ccode>taskId\u003C\u002Fcode> instead of data:\u003C\u002Fp>\n\u003Cdiv class=\"docs-code-group\">\u003Cdiv class=\"docs-code-group-header\">\u003Cspan class=\"docs-code-group-title\" data-static-title>Async response\u003C\u002Fspan>\u003Cdiv class=\"docs-code-group-actions\">\u003Cspan class=\"docs-code-group-lang\">JSON\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"docs-code-group-copy\" data-copy-code=\"true\">\u003Csvg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv class=\"docs-code-group-panel active\" data-tab=\"0\" role=\"tabpanel\">\u003Cpre class=\"shiki shiki-themes github-light github-dark\" style=\"--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e\" tabindex=\"0\" data-language=\"json\">\u003Ccode class=\"language-json\">\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\">  \"taskId\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">: \u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\">\"abc123\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\">  \"status\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">: \u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\">\"processing\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\">  \"message\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">: \u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\">\"Scraping LinkedIn profile. Poll with check_task in ~10 seconds.\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Cp>Use \u003Ccode>check_task\u003C\u002Fcode> with the \u003Ccode>taskId\u003C\u002Fcode> to poll for results. Tasks typically complete in 10–60 seconds.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Status flow:\u003C\u002Fstrong> \u003Ccode>in_progress\u003C\u002Fcode> → \u003Ccode>succeeded\u003C\u002Fcode> or \u003Ccode>errored\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>When succeeded, \u003Ccode>check_task\u003C\u002Fcode> returns the full data payload. Your AI agent handles this polling automatically. Just ask for what you need.\u003C\u002Fp>\n\u003Ch2 id=\"credits-and-rate-limits\">Credits and rate limits\u003C\u002Fh2>\n\u003Cp>MCP tools consume the same credits and respect the same rate limits as the REST API. That means:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>MCP calls use the same endpoint pricing as REST.\u003C\u002Fli>\n\u003Cli>MCP calls count toward the same gateway RPM limits as REST API calls.\u003C\u002Fli>\n\u003Cli>Agent LLM turns are different: they consume credits but do not affect gateway RPM until the Agent triggers a real tool call.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Use \u003Ccode>check_usage\u003C\u002Fcode> to inspect your current balance before expensive operations.\u003C\u002Fp>\n\u003Cp>See \u003Ca href=\"\u002Fdocs\u002Fguides\u002Frate-limits-credits\">Rate limits &amp; credits\u003C\u002Fa> for details on quotas and throttling.\u003C\u002Fp>\n\u003Ch2 id=\"troubleshooting\">Troubleshooting\u003C\u002Fh2>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Error\u003C\u002Fth>\n\u003Cth>Cause\u003C\u002Fth>\n\u003Cth>Fix\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Authentication required\u003C\u002Fcode> (code -32001)\u003C\u002Ftd>\n\u003Ctd>Missing or invalid credentials\u003C\u002Ftd>\n\u003Ctd>OAuth clients: re-authenticate from the client (the access expires if its key is deleted). API key clients: check the key is active and the \u003Ccode>Bearer\u003C\u002Fcode> prefix is present\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>SSE streaming not supported\u003C\u002Fcode> (code -32601)\u003C\u002Ftd>\n\u003Ctd>Client sent a GET request\u003C\u002Ftd>\n\u003Ctd>Your client must use POST. Use \u003Ccode>mcp-remote\u003C\u002Fcode> if it defaults to SSE\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>RATE_LIMIT_EXCEEDED\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Too many requests per minute\u003C\u002Ftd>\n\u003Ctd>Wait for the rate limit window to reset. Check limits with \u003Ccode>check_usage\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>INSUFFICIENT_CREDITS\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Not enough credits for the operation\u003C\u002Ftd>\n\u003Ctd>Top up credits from the dashboard\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>TRIAL_RESTRICTED\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Trial plans cannot use live\u002Fasync endpoints\u003C\u002Ftd>\n\u003Ctd>Upgrade to a paid plan\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Connection timeout\u003C\u002Ftd>\n\u003Ctd>Client cannot reach the server\u003C\u002Ftd>\n\u003Ctd>Verify the URL is \u003Ccode>https:\u002F\u002Fapi.reversecontact.com\u002Fmcp\u003C\u002Fcode> and your network allows HTTPS\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n","","What is MCP The Model Context Protocol (MCP) is an open standard that lets AI assistants call external tools directly. Once connected, your AI agent can enrich profiles, search...",7,[20,24,27,30,33,37,40,43,46,49,52,55,58,61,64,67,70,73,76],{"id":21,"title":22,"level":23},"what-is-mcp","What is MCP",2,{"id":25,"title":26,"level":23},"prerequisites","Prerequisites",{"id":28,"title":29,"level":23},"server-details","Server details",{"id":31,"title":32,"level":23},"setup-by-client","Setup by client",{"id":34,"title":35,"level":36},"claudeai-claude-desktop-cowork-and-mobile-custom-connector","Claude.ai, Claude Desktop, Cowork and mobile (custom connector)",3,{"id":38,"title":39,"level":36},"claude-code","Claude Code",{"id":41,"title":42,"level":36},"chatgpt","ChatGPT",{"id":44,"title":45,"level":36},"codex","Codex",{"id":47,"title":48,"level":36},"cursor","Cursor",{"id":50,"title":51,"level":36},"google-gemini","Google Gemini",{"id":53,"title":54,"level":36},"other-clients-mcp-remote","Other clients (mcp-remote)",{"id":56,"title":57,"level":23},"available-tools","Available tools",{"id":59,"title":60,"level":36},"enrichment","Enrichment",{"id":62,"title":63,"level":36},"search","Search",{"id":65,"title":66,"level":36},"utility-free","Utility (free)",{"id":68,"title":69,"level":23},"example-prompts","Example prompts",{"id":71,"title":72,"level":23},"async-workflow","Async workflow",{"id":74,"title":75,"level":23},"credits-and-rate-limits","Credits and rate limits",{"id":77,"title":78,"level":23},"troubleshooting","Troubleshooting",[],[],1785860236959]