Integrations · Cursor

Cursor MCP Enrichment — Connect RichAPI to Cursor

Add RichAPI's hosted MCP server to Cursor and call enrichment endpoints from the Composer window while you are writing the code that will call them. Waterfall endpoints (email_finder, email_verifier, phone_finder) cost nothing on a miss; every other endpoint bills on a 2xx, including an empty one.

In short: RichAPI operates a hosted Model Context Protocol (MCP) server at https://mcp.richapi.ai/mcp, authenticated with an x-api-key header. It works in Cursor. Cursor reads MCP configuration from ~/.cursor/mcp.json (global) or .cursor/mcp.json (per project), using the same mcpServers object shape as Claude Desktop, and a remote HTTP server is reached through the mcp-remote npx shim. The server exposes the same endpoints as the RichAPI REST API at https://api.richapi.ai/api/v1, including email_finder, email_verifier, phone_finder, enrich_company, enrich_profile, people_search, web_tech_stack and website_intelligence. All tools are read-only lookups; none send email, post content, or write to a CRM. MCP and REST share one API key and one prepaid credit pool. On the waterfall endpoints (email_finder, email_verifier, phone_finder) a call that finds nothing returns 2xx with success false and billed false and costs zero credits; all other endpoints bill on any 2xx response including an empty result. New accounts get 100 free credits with no credit card. RichAPI is a data API with no prospecting UI and no campaign sending.

Last updated November 4, 2026

Connect it

  1. 1. Create a RichAPI account at app.richapi.ai/signup and copy your API key.

    100 free credits, no card.

  2. 2. Put the key in your shell environment as RICHAPI_KEY so it never lands in a file you might commit.

  3. 3. Add the server to ~/.cursor/mcp.json for every project, or .cursor/mcp.json for one repo.

    Cursor uses the same mcpServers key as Claude, so the mcp-remote shim config is identical.

  4. 4. Open Cursor Settings → MCP and confirm richapi shows a green dot and a tool list.

    A red dot almost always means npx could not run or the key env var was empty when Cursor launched.

  5. 5. In Composer, ask for one call against real input and read the response before you write a single line of parsing code.

Cursor

What you can ask for

Call email_finder once for [name]
Call email_finder once for [name] at [domain], then write me a TypeScript type that matches the response exactly, including the nullable fields.
Here is my enrichment worker
Here is my enrichment worker. Run enrich_profile against three real LinkedIn URLs and tell me which fields my parser assumes are always present but are not.
Run email_verifier on the 12
Run email_verifier on the 12 addresses in fixtures/emails.json and rewrite the fixture with the real responses instead of the ones I made up.
Check web_tech_stack for these 8
Check web_tech_stack for these 8 customer domains and add a column to the seed file for which ones run [competitor].
People_search for heads of data
people_search for heads of data at 50-200 person fintechs, then draft the request body my scheduler should send nightly.

Why it Matters

Most enrichment bugs are shape bugs: you wrote the parser against a response you imagined. With the MCP server in Cursor the model can call the live endpoint, read what actually came back, and write the type from that instead of from the docs.

Cursor MCP enrichment: call the endpoint before you write the parser

RichAPI runs a hosted MCP server. Connect it to Cursor and the agent that is writing your enrichment code can also run it, against live data, while it writes.

The bug you keep shipping in enrichment code is not a logic bug. It is a shape bug: you wrote response.data.email against the example in a README, the real response nests it one level deeper on a partial hit, and you find out in production on row 4,000.

Install

Create an account at app.richapi.ai/signup, copy your key, and export it before launching Cursor:

export RICHAPI_KEY="rk_..."

Cursor reads MCP servers from ~/.cursor/mcp.json for every project, or .cursor/mcp.json inside a single repo. It uses the same mcpServers object as Claude, so the config is the one from the Claude integration:

{
  "mcpServers": {
    "richapi": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://mcp.richapi.ai/mcp",
        "--header",
        "x-api-key: ${RICHAPI_KEY}"
      ]
    }
  }
}

Recent Cursor builds also accept a remote server directly, with a url and a headers object instead of a command. That shape is cleaner when it works and version-dependent enough that we will not print it as the recommended path. The shim above works on every version that supports MCP at all.

Then open Settings → MCP. richapi should show green with its tools listed. Red usually means one of two things: npx was not on the PATH Cursor inherited, or RICHAPI_KEY was empty because you exported it in a terminal opened after Cursor.

If you put .cursor/mcp.json in a repo, keep the ${RICHAPI_KEY} reference rather than the literal key, and commit it only if your team is happy with that file being read by everyone with clone access. The key stays in the environment either way.

What this changes in a repo

The tools map one-to-one onto the REST endpoints, so anything you can curl, Composer can call:

  • email_finder and email_verifier — the pair most enrichment pipelines are built around.
  • phone_finder — a mobile from a LinkedIn URL, or name plus company.
  • enrich_profile and enrich_company — both take a LinkedIn URL, not a domain. This trips people up often enough that it is worth having the agent discover it by calling the endpoint rather than by reading your assumption back to you.
  • people_search — profiles filtered by industry, headcount, title, location.
  • web_tech_stack — what a domain runs.

Three things worth asking for by name:

Call email_finder once with this input and write the TypeScript interface from the actual response, including every nullable field.

My fixtures in test/fixtures/ were hand-written. Replace them with real responses from enrich_profile for these three URLs.

Run email_verifier against our seed list and tell me which of my status branches are never hit by real data.

The last one is the one that saves a weekend. Handwritten fixtures encode your assumptions, so the tests pass and production does not.

Every waterfall call returns a receipt

An empty call could mean the sources ran and found nothing, or it could mean something broke. The execution_log on waterfall responses separates the two. It shows who ran and what each returned, and a billed field sits beside it.

We do not publish the source roster, because it changes as sources are added and dropped. The per-call log is the honest version of that answer.

Cost, and the part you should read before enabling agent mode

Billing is prepaid credits from one pool shared between MCP and REST. Rates: each tool above bills its published per-call rate, with people_search priced per result, which makes any cost estimate meaningless unless you state the result count. See /pricing for the current rate tiers, or run numbers through the waterfall cost calculator.

On email_finder, email_verifier and phone_finder, a call that finds nothing costs zero. sources ran, nobody found data, you were not charged. Everywhere else a 2xx bills, including a 2xx with an empty body. We would rather put that limit on this page than have you meet it on an invoice.

Now the agent-mode part. Cursor's agent can loop. A prompt like "enrich every domain in this CSV" will do exactly that, one call at a time, without asking you again. Nothing in the catalog sends email or writes to a CRM, so the worst case is spent credits rather than a message to a customer. Try it on the 100 free credits before you fund anything, and keep bulk loops in code where you can see the iteration count.

Where we stop with Cursor

There is no prospecting UI, no sequencer, no CRM app. If you want a grid you can click through, that is Clay, and scheduled runs belong in n8n rather than an editor session. Cursor is for the stage where you are still deciding what the pipeline should do.

Cursor FAQ

Is this an official Cursor integration? No. It is a standard MCP server and Cursor is a standard MCP client. There is no marketplace listing to install.

Does Cursor's config differ from Claude's? The mcpServers shape is the same, so the shim block above works in both. The file location differs (~/.cursor/mcp.json or .cursor/mcp.json), and Cursor's native remote-server support has moved between releases, which is why we default to the shim.

Will my key end up in the repo? Not if you reference ${RICHAPI_KEY} as shown. Never paste the literal key into .cursor/mcp.json in a tracked repo.

Can I use the same key from code? Yes. One key, one credit pool, https://api.richapi.ai/api/v1/{endpoint} with an x-api-key header. Prove the call in Composer, then ship the version that worked.

Why not just curl it? You can, and for one call you should. The gain is that the model reads the response too, so the code it writes matches what came back instead of what the docs implied.

Start with Cursor

100 free credits, no card. Add the config, restart Cursor, and have it write your response type from a real call instead of a guess. Other clients on the integrations hub: Claude, VS Code, Windsurf.

FAQ

Frequently asked questions

No — Cursor MCP Enrichment — Connect RichAPI to Cursor authenticates through the connection you set up, using the same key and credit pool as the REST API. Revoking access from your RichAPI dashboard disconnects it immediately.
No — MCP and REST share the same credit pool and the same published endpoint rates. There's no separate MCP surcharge.

More from RichAPI

More companies

Browse company profiles with company overviews, key details, and email formats.

Start free with 100 credits

Get 100 free credits to explore RichAPI with no card required.

Free tools

Use our Email Permutator, llms.txt Generator, Waterfall Calculator, and live API demo — all free to try.

Related integrations