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.

Start free — 25 credits

Last updated September 22, 2026

Connect it.

  1. 01

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

    25 free credits, no card.

  2. 02

    Open Windsurf Settings → Cascade → MCP servers and edit the raw config, or edit ~/.codeium/windsurf/mcp_config.json directly.

  3. 03

    Add the richapi server under mcpServers using the mcp-remote shim, exactly as in the Claude config.

  4. 04

    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. 05

    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.

Copy, paste, edit the brackets, run.

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](/integrations/claude): ```json { "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`](/api/phone-finder) — the three waterfall endpoints, where a miss is free. - `enrich_company` and `enrich_profile` — LinkedIn URL in, not a domain. - `people_search` — filtered profiles, billed per result. - [`web_tech_stack`](/api/tech-stack-lookup) — what a domain runs. The pattern that pays for the setup is the filter-then-enrich job: > Read `prospects.csv`. Call `enrich_company` on the LinkedIn URLs, drop anything under 200 people, then run `email_finder` only on the survivors. Write the result to `prospects_enriched.csv` with 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 25 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 provider roster, because it changes as providers 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](/pricing); the [waterfall cost calculator](/tools/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 providers ran and were paid; you were not charged. Everywhere else a 2xx bills, including an empty one.

Where we stop with Windsurf

We are the data layer. No prospecting UI, no sequencer, no CRM app. A job that has to run every Monday belongs in [n8n](/integrations/n8n), not in an editor session you have to remember to open, and a list a non-engineer needs to click through belongs in [Clay](/integrations/clay).

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

25 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](/integrations), starting with [Claude](/integrations/claude).

Frequently asked.

Does Windsurf see my RichAPI key?
No — Windsurf MCP Enrichment — Connect RichAPI to Cascade 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.
Does this cost more than using the REST API directly?
No — MCP and REST share the same credit pool and the same published endpoint rates. There's no separate MCP surcharge.

More integrations

Try it with 25 free credits.