Integrations · Windsurf
Windsurf MCP Enrichment — Connect RichAPI to Cascade
Add RichAPI's hosted MCP server to Windsurf's mcp_config.json and Cascade can run a one-off enrichment job end to end: read the file, call the endpoint per row, write the output. Waterfall misses cost zero credits; everything else bills on a 2xx, so cap the row count before you start.
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 Windsurf's Cascade agent. Windsurf reads MCP configuration from ~/.codeium/windsurf/mcp_config.json, using an mcpServers object with the same shape as Claude Desktop, and a remote HTTP server is reached through the mcp-remote npx shim. Tools mirror the RichAPI REST API at https://api.richapi.ai/api/v1 and include email_finder, email_verifier, phone_finder, enrich_company, enrich_profile, people_search and web_tech_stack. All tools are read-only lookups; none send email or write to a CRM, so an agent loop can spend credits but cannot contact anyone. MCP and REST share one 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; every other endpoint bills on any 2xx response including an empty result. RichAPI is not listed in Windsurf's MCP plugin store. New accounts get 100 free credits with no credit card.
Last updated November 4, 2026
Connect it
1. Create a RichAPI account at app.richapi.ai/signup and copy your API key.
100 free credits, no card.
2. Open Windsurf Settings → Cascade → MCP servers and edit the raw config, or edit ~/.codeium/windsurf/mcp_config.json directly.
3. Add the richapi server under mcpServers using the mcp-remote shim, exactly as in the Claude config.
4. Refresh the server list in Settings.
RichAPI's tools appear in Cascade's tool list; a failure here is almost always npx missing from the PATH Windsurf inherited.
5. Start with one row.
Ask Cascade for a single lookup, read the response, then tell it how many rows it may process.

What you can ask for
Read prospects.csv, call email_finder for each row, and write prospects_enriched.csv with an extra column for the result and one for whether we were billed. Stop after 25 rows and ask me.
This list has 400 rows and I only want the ones at companies over 200 people. Call enrich_company for the LinkedIn URLs first, drop the rest, then find emails only for what survives.
Verify the addresses in unsubscribes.csv and tell me how many are invalid, before I argue with marketing about the bounce rate.
phone_finder for the 30 LinkedIn URLs in ae-territory.md. List the misses separately, with the provider statuses.
people_search for RevOps leads at Series B fintechs in the Nordics, cap the results, and save the raw JSON so I can inspect it before we do anything with it.
Why it Matters
A list job that runs once does not deserve a pipeline. Cascade can read the file, loop the calls and write the output, which turns an afternoon of glue code into a paragraph, as long as you cap the loop before it spends credits you did not budget.
Windsurf MCP enrichment: let Cascade run the list job
RichAPI runs a hosted MCP server. Connect it to Windsurf and Cascade can do the whole job rather than one step of it: open the file, call the endpoint for each row, and write the result back to disk.
In a chat window you get an answer you then copy somewhere. In Cascade the output is a file in your workspace.
Install
Create an account at app.richapi.ai/signup and copy your key.
Windsurf keeps MCP servers in ~/.codeium/windsurf/mcp_config.json. Reach it through Settings → Cascade → MCP servers, or edit the file. The shape is the mcpServers object you already know from Claude:
{
"mcpServers": {
"richapi": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.richapi.ai/mcp",
"--header",
"x-api-key: ${RICHAPI_KEY}"
]
}
}
}
Export RICHAPI_KEY in your environment before launching Windsurf, or put the literal key here and accept that it is sitting in a file in your home directory.
Some Windsurf versions accept a remote server directly through a serverUrl field instead of a command. Where that works it is fewer moving parts; it has also changed between releases, so we are not printing it as the default. The shim works either way.
Refresh the server list and the tools appear in Cascade. If they do not, it is almost always npx: Windsurf launched from the dock does not always inherit the PATH your shell has.
We are not in Windsurf's MCP plugin store. There is no one-click install for this, just the config above.
What Cascade is actually good at here
The tools map one-to-one onto the REST endpoints:
email_finder,email_verifier,phone_finder— the three waterfall endpoints, where a miss is free.enrich_companyandenrich_profile— LinkedIn URL in, not a domain.people_search— filtered profiles, billed per result.web_tech_stack— what a domain runs.
The pattern that pays for the setup is the filter-then-enrich job:
Read
prospects.csv. Callenrich_companyon the LinkedIn URLs, drop anything under 200 people, then runemail_finderonly on the survivors. Write the result toprospects_enriched.csvwith a column for whether we were billed.
Ordering the steps that way is the whole trick. Enriching first and filtering afterwards means you paid for every row you were about to throw away. Cascade will happily do it in either order, so say which one you want.
Cap the loop before you start it
Cascade is autonomous by design, which is the feature and also the thing to be careful with. "Enrich this file" against a 4,000-row CSV is a 4,000-call instruction and it will not check in halfway.
Every RichAPI tool is a read-only lookup. Nothing sends email, posts anything, or writes to a CRM, so a runaway loop costs credits rather than reputation. Still: put a row cap in the prompt, run the first batch, look at the output, then raise it. The 100 free credits are a good size for exactly this test.
Receipts
Waterfall calls return an execution_log showing who ran and what each returned, plus a billed flag. Ask Cascade to keep that column in the output file and your misses stop being indistinguishable from bugs.
We do not publish the source roster, because it changes as sources are added and dropped. The per-call log is the honest version.
Cost
Prepaid credits, one pool shared with REST. Each tool above bills its published per-call rate; people_search bills per result, so any estimate needs a result count attached. Rate tiers are on /pricing; the waterfall cost calculator will price a list before you run it.
On email_finder, email_verifier and phone_finder, a call that finds nothing costs zero. The sources ran and were paid; you were not charged. Everywhere else a 2xx bills, including an empty one.
Where we stop with Windsurf
Windsurf FAQ
Is this an official Windsurf integration? No. Standard MCP server, standard client, and no plugin store listing.
Does Windsurf's config differ from Claude's? Same mcpServers shape, different file: ~/.codeium/windsurf/mcp_config.json.
Why is Cascade not showing the tools? Refresh the MCP server list first. Then check that npx resolves in the environment Windsurf actually launched with.
Can I keep the tool list short? Connect only what you use. A long tool list makes model tool-selection worse in any client, and this catalog is not small.
Same key from my code? Yes. One key, one credit pool, api.richapi.ai.
Start with Windsurf
100 free credits, no card. Connect the server, hand Cascade a 25-row file, and see what comes back before you point it at the real list. Other clients are on the integrations hub, starting with Claude.
FAQ
Frequently asked questions
More from RichAPI
More companies
Browse company profiles with company overviews, key details, and email formats.
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.