You build a prospecting agent with Claude Code by attaching a B2B data MCP server and letting Claude call its tools from the terminal. With Clu, our product, that is one command, claude mcp add --transport http cleanlist https://mcp.cleanlist.ai/v1/mcp, followed by /mcp to finish the OAuth sign-in. There is no API key to paste. The agent then calls search_people at 0 credits, prices any paid step with estimate_cost, and enriches at 1 credit per verified email or 11 for email plus phone. A 200-lead Clu run with verified emails costs at most 200 credits. Inside the Clu app, Clu, its GTM agent, takes the same job in one sentence and also writes and sends the sequence.
Last updated: October 29, 2026, when the credit prices below were brought in line with the Clu pricing page. The commands, rate limits and product boundaries were checked against the Clu MCP server, the Clu REST API v2 surface and Anthropic's Claude Code documentation on August 15, 2026.
What is a prospecting agent, and what can one actually do in 2026?
A prospecting agent is a loop that runs against a data provider: define a cohort, search for people who match it, review what came back, enrich the ones worth paying for, and write the result somewhere durable. In Claude Code the loop lives in your terminal, the tools come from an MCP server, and the output lands in your repository as files you can diff. With Clu attached, the agent can search people and companies at 0 credits, enrich verified emails and direct dials through a multi-provider waterfall, and build lead lists. Sending belongs to Clu Sequences (email on paid plans) or your own sequencer rather than to the agent, and there is no dialer, so the agent stops at a finished list.
How do I connect Clu to Claude Code?
Run one command, then authenticate inside the session:
claude mcp add --transport http cleanlist https://mcp.cleanlist.ai/v1/mcpThen start Claude Code and run /mcp. Anthropic documents claude mcp add --transport http <name> <url> as the syntax for remote HTTP servers and states "Use /mcp to authenticate with remote servers that require OAuth 2.0 authentication" (code.claude.com/docs/en/mcp, fetched August 15, 2026). The Clu endpoint returns 401 until that grant exists, which is exactly how Claude Code knows to prompt you. Anthropic's docs also note that a server needing sign-in shows up in claude mcp list as ! Needs authentication, and that claude mcp login <name> completes the flow outside the panel. Nothing installs locally: mcp.cleanlist.ai is a hosted remote server, so credentials live in an OAuth grant rather than a config file. Setup detail sits on the Clu MCP server page.
What goes in .mcp.json, and what does project scope mean for my team?
Adding the server with --scope project writes it to a .mcp.json file at your repository root, which you check into version control so every teammate gets the same tools. Anthropic publishes the standardized format, and for Clu it looks like this:
{
"mcpServers": {
"cleanlist": {
"type": "http",
"url": "https://mcp.cleanlist.ai/v1/mcp"
}
}
}The type field is required. Anthropic's docs state that an entry with a url and no type is read as a stdio server and skipped. Claude Code prompts each teammate for approval before loading a project-scoped server, and claude mcp reset-project-choices clears those answers. Here is the consequence people miss: the Clu OAuth grant is per user, but the Clu credit wallet is shared across your whole organization. A project-scoped .mcp.json means every teammate who approves it spends from one balance. Before you hand that file to a team, read the spend controls: signed quotes, rate limits and one wallet are what stop an agent overspending, and they are set out in spend control for B2B data APIs.
How do I confirm the agent actually connected?
Run claude mcp list for a health status, then /mcp inside the session to see the server's tool list. Published tool counts are worth distrusting until you see them: of 60 vendors we probed, only 6 publish a tool count you can check (GTM MCP server census). Clu ships 30+ tools across roughly 30 REST v2 endpoints, and a given connector exposes a curated subset, so read what your own client shows rather than trusting a blog post. As of August 10, 2026 a connected Clu session exposed 14: search_people, search_companies, enrich_person, enrich_list, add_person_enrichments, add_company_enrichments, estimate_cost, create_list, get_lists, add_leads_to_list, list_leads_in_list, remove_leads_from_list, delete_list and whoami. Ask Claude to call whoami first. It costs 0 credits and returns the identity, scopes, plan tier and organization your grant resolves to, which is the cheapest way to catch a session pointed at the wrong workspace.
What does a real prospecting agent loop look like, step by step?
Six steps, and only the last one spends credits, behind a signed quote. Search first, because Clu search costs nothing, then spend only on the rows that survived a human glance:
1. whoami 0 credits confirm org + balance
2. search_people({...filters, limit: 200}) 0 credits default is 25, ask for volume
3. write matches to data/prospects/raw.json 0 credits local file, reviewable in git
4. create_list + add_leads_to_list (200) 0 credits saving to a list is free
5. estimate_cost({list_id, mode:"partial"}) 0 credits signed quote_id, 5-minute TTL
6. enrich_list({list_id, quote_id}) 200 credits 1 credit per verified emailStep 3 is the step that makes Claude Code better than a chat window for this job. The agent writes the raw cohort to disk, you read the file, you delete the rows that are wrong, and only then does anything get paid for. Clu enrichment is asynchronous, so enrich_list returns a workflow the agent polls until it settles.
What does a 200-lead agent run cost in credits?
Clu prices the run in credits at the same rates as the app and the REST API: 0 for search and for saving leads to a list, 1 per verified email, 10 per phone number, 11 for a full contact record with both, 1 per company enrichment, 3 per lead for AI research and 5 to qualify a lead against your ICP. So a 200-lead run works out like this:
| Step | Rate | 200 leads |
|---|---|---|
| People search | 0 | 0 credits |
| Save to a list | 0 | 0 credits |
| Enrich, email only | 1 per lead | 200 credits |
| Enrich, email and phone | 11 per lead | 2,200 credits |
Email-only end to end is at most 200 credits. Email plus phone is at most 2,200. Emails and phone numbers are charged only when found, so the settled figure usually lands under the quote.
Which Clu plan does an agent run of that size imply?
Clu self-serve pricing is Free at $0 with 50 credits a month, Starter at $49 per seat a month with 750 credits per seat, and Pro at $89 per seat with 1,500 per seat, with 25% off annual billing. Do the division. On Starter a credit is about 6.5 cents, so the 200-credit email-only run is roughly $13 and fits comfortably inside the monthly allowance. The 2,200-credit full-contact run is more than one Pro seat's 1,500 credits, so it takes Pro's 3,000-credit level, $149 a month for one seat (a second seat would make it $178), about 5 cents a credit or roughly $109 for the run. The Free tier's 50 credits buys 50 verified emails, which is enough to judge the waterfall and not enough to run a campaign. Current rates are on the Clu pricing page.
How do I stop the agent from overspending my credits?
Clu gates every paid operation behind a signed quote, and this is the mechanic to design around. The agent must call estimate_cost first, which returns the price of the job, your current balance, whether that balance covers it, and an HMAC-signed quote_id carrying a five-minute TTL. The Clu server rejects the paid call if the real cost would exceed the quote or the quote has expired, so an agent cannot start a job you never priced. Three properties sit underneath it. Search, reading lists and checking your balance are 0 credits, so an exploring agent burns nothing. Email and phone enrichment is pay for results, and an async run reserves credits up front then refunds the unused portion. Your balance is a hard ceiling, shared across the app, the API and MCP.
How do I design an agent around the 60-search daily cap?
Clu enforces 60 requests per minute per organization, 30 requests per minute per API key, and a hard cap of 60 People Searches per UTC day per key. Exceeding a limit returns HTTP 429 with a Retry-After header. That daily cap is the one that bites agents, because it resets at UTC midnight rather than on a rolling window, and a model iterating on filter combinations will burn through 60 searches in an afternoon without noticing. Three habits fix it. Search broad and page through results instead of issuing many narrow queries. Have Claude Code cache every raw search response to a file and re-read the file on the next turn rather than re-running the query. Put a standing rule in CLAUDE.md that the agent asks before its tenth search of a session.
What should I put in CLAUDE.md so the agent knows my ICP?
Anthropic's docs state that CLAUDE.md files "are loaded into the context window at the start of every session" and live at ./CLAUDE.md or ./.claude/CLAUDE.md for project-shared instructions (code.claude.com/docs/en/memory, fetched August 15, 2026). That makes it the right place for standing prospecting rules. Keep it under 200 lines, which is Anthropic's stated target, and write rules concrete enough to verify:
# Prospecting rules
- Our ICP: RevOps and GTM engineering leaders, 50 to 500 headcount,
US and Canada, B2B software. Seniority: Director and above.
- Always call `search_people` first. Search costs 0 credits.
- Write every raw search response to `data/prospects/` before enriching.
- Never call an enrichment tool without calling `estimate_cost` first
and showing me the quote. Wait for my yes.
- Default to `partial` mode (1 credit). Only use `full` (11 credits)
when I ask for phone numbers by name.
- Do not attempt revenue, technographic or intent filters. Clu
does not have them and the run will return nothing.That last rule saves more time than the rest combined.
How do I keep agent runs reviewable instead of a wall of chat?
Have the agent commit its evidence. In Claude Code the filesystem is available, so the run can leave a trail: the filter object it used, the raw search response, the quote it was given, and the settled credit charge. A workable convention is one directory per run, data/prospects/2026-08-15-revops-ca/, holding filters.json, raw.json, quote.json and settled.json. Reviewing a bad cohort then becomes reading a diff rather than scrolling a transcript. It also gives you a real answer when someone asks why last month's credits went where they went, because Clu's wallet is shared across the app, the REST API and MCP, and a shared wallet with no per-run record is impossible to audit after the fact.
What happens when an enrichment run half-fails?
Clu REST API v2 has no webhooks, so an async enrichment returns a workflow identifier the agent polls until it reports completed or failed. Read the settled charge from the workflow rather than assuming the estimate was the bill, because pay for results means the actual figure often lands below the quote. Two rough edges are worth knowing before you write the glue. Some documented response fields come back empty on most records today, so do not build downstream logic on them without checking a real payload first. And on the REST path, /search/people returns a provider person_id in the lead_id field, and that identifier does not round-trip into POST /lead-lists/{id}/leads, so piping search output straight into a list by id will not work.
What can a Clu prospecting agent not do?
Publishing the boundary beats letting an agent discover it mid-run. Clu has no dialer, and Sequences (email on paid plans) are not part of this build, so the agent does not send an email or place a call. There is no intent data and no buying-signal feed. There are no revenue-range or technographic filters, both rejected outright by the company search validator. funding_stage does work, with a casing trap: series_b returned 10,498 companies on September 7, 2026 and Series B returns zero rows and no error. There are no real-time job-change alerts: "recently changed jobs" exists as a query-time filter, so an agent can ask who moved, and on Pro a job-change agent watches your CRM contacts and reports each move after the profile refresh that catches it, monthly or every two weeks. The similar-companies lookup is synthesized from filters rather than produced by a native lookalike model, so treat its output as a candidate set to review.
What can the agent not do over MCP specifically?
Four capabilities exist at Clu and were not on the MCP connector when it was last checked on August 10, 2026. CSV file import is portal-only, so upload the file in the Clu importer at app.cleanlist.ai/lists and run enrich_list against the resulting list id. CRM and sequencer sync run in the Clu app or through the REST API: HubSpot and Salesforce sync on Pro, and agents that add people to Salesloft and Lemlist. Skills, the AI research columns, run in the app. Similar-company lookup ran only in the app then; the MCP server page now lists find_similar_companies at 1 credit. The server is also server-side only: there is no published Clu npm package, so the local in-context install path is not supported. Read tools/list in your own client before writing a prompt that assumes a tool exists.
Should I use Claude Code, the Claude app, or the REST API?
Pick by where the output has to land. Claude Code suits this job when the result is a file or a pipeline, because it has the filesystem, git, a project-scoped .mcp.json your team shares, and a CLAUDE.md carrying standing ICP rules into every session. The Claude desktop and web apps suit one-off asks: add https://mcp.cleanlist.ai/v1/mcp under Settings, then Connectors, as a custom connector, and the results live in the transcript. The Clu REST API v2 at api.cleanlist.ai/api/v2 suits scheduled work with no human present, authenticating with a clapi_ bearer token across roughly 30 endpoints and 14 OAuth scopes. Note the different gate: programmatic REST access requires a Pro plan at $89 per seat a month or above. For the rest of a rep's day in Claude (account briefs, call follow-ups, pipeline reviews and Anthropic's Sales plugin), see our Claude for sales guide.
Can ChatGPT build the same prospecting agent today?
Clu documents and tests Claude and Claude Code first, and mcp.cleanlist.ai/v1/mcp is a standard remote MCP endpoint over HTTP with OAuth, so a spec-compliant client that supports remote servers can point at it. Clu's plans list the MCP server for Claude and ChatGPT from Starter, and because Clu ships no first-party ChatGPT app, in ChatGPT you add the endpoint as a remote MCP server. Clu is also not listed in Anthropic's connector directory, which is why the install above is a manual custom connector rather than a directory click. If cross-client coverage is a hard requirement today, other vendors publish wider matrices: Apollo states support for Claude, ChatGPT and Perplexity, and Clay states ChatGPT, Claude and Codex. The ten-server comparison covers who supports what.
Which ChatGPT plans can add a custom MCP server, and how, is covered in our ChatGPT for sales guide.
How accurate is the data the agent gets back?
Clu orchestrates a multi-provider waterfall rather than reselling one owned database, stopping at the first verified result with email verification behind it. In the Clu 500-Lead Enrichment Benchmark, our own test on 500 stratified B2B leads, that waterfall returned a verified email for 98% of leads and a direct dial for 85%. Those two figures measure different things and are not interchangeable: 98% is email, 85% is direct dial. The structural reason a miss costs nothing is that Clu owns no contact database, so a lookup that returns nothing is not billed. For an agent, the practical consequence is that the credit quote is a ceiling rather than an invoice, and the settled charge is the number to log.
What is the shortest path to testing this in twenty minutes?
Create a Clu account, which opens on Pro for 14 days with 250 credits and three seats. Run claude mcp add --transport http cleanlist https://mcp.cleanlist.ai/v1/mcp, open Claude Code, run /mcp, and complete the OAuth sign-in. Ask Claude to call whoami, then ask it to find 25 people matching your ICP. Both calls cost 0 credits, and 25 is the Clu search default. Have Claude write the results to a file and read them yourself. Then pick the ten that look right, ask for a cost estimate, and approve it. Enriching those ten one by one with enrich_person spends 10 credits on ten verified emails and leaves 240 of the trial allowance, which is enough to compare the output against whatever you pay for today. Saving them to a list first costs 0 credits.
FAQ
How do I build a prospecting agent with Claude Code?
Attach a B2B data MCP server, put your ICP and spending rules in CLAUDE.md, then run a loop: search, review the file, get a quote, enrich, save the result. Clu, our product, connects with one claude mcp add command and an OAuth sign-in, searches at 0 credits and enriches at 1 credit per verified email. In its app, Clu does it from one sentence and sends the sequence. Apollo and Clay also state MCP support for Claude.
Do I need an API key to use Clu in Claude Code?
No. The Clu MCP server authenticates over OAuth. You run claude mcp add --transport http cleanlist https://mcp.cleanlist.ai/v1/mcp, then /mcp inside the session, and sign in through a browser window. There is no key to copy, paste or store in a config file, and you can revoke the grant at any time. The separate clapi_ bearer key exists for the Clu REST API v2, which is a different surface with a different gate: programmatic REST access requires a Pro plan at $89 per seat a month or above, while the MCP server is included from Starter at $49 and is in beta. If you want the same tools inside the Claude desktop or web app instead, add the endpoint under Settings, then Connectors, as a custom connector.
Can a teammate's agent drain my Clu credits?
Yes, and a project-scoped .mcp.json makes it more likely, so plan for it. The Clu OAuth grant is per user, but the credit wallet is shared across your whole organization, and a .mcp.json checked into the repository hands every teammate the same server. Three guardrails limit the damage. Search, list reads and balance checks cost 0 credits, so exploration is free. Every paid operation requires a signed quote_id from estimate_cost with a five-minute TTL, and the server rejects a call priced above its quote. Your balance is a hard ceiling. What Clu does not offer today is a read-only agent key, because scopes are granted per user rather than per key.
How many searches can a prospecting agent run per day?
Clu caps People Search at 60 per UTC day per API key, alongside 60 requests per minute per organization and 30 requests per minute per key. The daily cap resets at UTC midnight rather than on a rolling window, and it is the limit agent workflows hit first, because a model refining filters treats searching as free thinking. Search does cost 0 credits, so the constraint is the quota rather than your balance. Design around it by searching broadly and paging through results, caching raw responses to files that the agent re-reads instead of re-querying, and putting a search budget in CLAUDE.md. Exceeding any limit returns HTTP 429 with a Retry-After header.
Can the agent find companies that just raised funding?
Yes, with one trap. The funding_stage filter carries data: a probe on September 7, 2026 sent funding_stages with the value series_b and Company Search returned 10,498 companies. The enum is lowercase with underscores, so Series B returns zero rows and no error, which is the most common way an agent workflow quietly produces nothing. Revenue ranges and technographics are different: the Clu backend rejects those keys outright, and Clu sells no intent data. Build cohorts on the filters that carry data, which are title, seniority, location, headcount band, industry, skills, education and past roles, then enrich and score. The full inventory sits on the Clu People Search page.
Is a prospecting agent the same thing as an AI SDR?
No. An AI SDR product owns the sending: it writes the email, sends it, watches the reply and books the meeting. A prospecting agent built on Claude Code and Clu stops earlier, at a researched and enriched list, because this build leaves sending to Clu Sequences or your own sequencer, and Clu has no dialer. On Pro, Clu syncs finished leads to HubSpot or Salesforce and its agents add people to Salesloft cadences and Lemlist campaigns, so the sending happens in those tools or in Sequences. Inside the Clu app, Clu, its GTM agent, takes that next step too: it writes the sequence and sends it from your own mailbox. That boundary is worth stating before you scope a build, because a stack that assumes one prompt runs all the way to a booked meeting will fail at the handoff. The GTM engineering guide covers where each layer sits.
References & Sources
- [1]
- [2]
- [3]
- [4]
- [5]

