Skip to the page

Ask Claude for a lead list: connect an MCP server that returns rows with their sources

SpecStream

Lead lists · · 7 min read

To get a lead list from Claude, connect Claude to an MCP server that finds records on the live web and returns them as rows. Add SpecStream at https://api.specstream.ai/mcp as a custom connector, describe the companies and the facts you want on each one, and Claude shows you the most the list can cost before anything runs. You approve that maximum, the run finds every match, and each value comes back with the URL of the page it was read on and the time it was read. Then you download the list as CSV or Excel, or send it to Google Sheets or your CRM.

Below: the setup in Claude, Claude Code and Cursor, a request that works, the price step, what a row holds, how to get the rows into a sheet, and when your agent needs a search instead of a list.

Connect SpecStream to Claude

You need a SpecStream account. New accounts start with $10 of credit, no card. Sign up.

Claude (claude.ai and Claude Desktop)

  1. Go to Customize > Connectors and click Add custom connector. On a Team or Enterprise plan, an Owner adds it under Organization settings > Connectors, and members then click Connect.
  2. Name it SpecStream and paste https://api.specstream.ai/mcp as the MCP server URL.
  3. Leave OAuth client on Use Claude's published identity and Authentication on Sign in now.
  4. Click Add, then Connect, and sign in to SpecStream.
  5. In a chat, click +, choose Connectors, and make sure SpecStream is on.

Claude Code

claude mcp add --transport http specstream https://api.specstream.ai/mcp

Run /mcp, pick SpecStream, and sign in in the browser window that opens. Add --scope user to have SpecStream in every project.

Cursor

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

{
  "mcpServers": {
    "specstream": {
      "url": "https://api.specstream.ai/mcp"
    }
  }
}

Cursor opens a browser window to sign in the first time it connects. The exact steps for each client, including setup with an API key, are in Claude, Cursor and every other client.

Ask for the list

Write the request the way you would brief a researcher: the kind of company, the place, the conditions every row must meet, and the facts to bring back on each one.

Use SpecStream. Find dental practices in Florida with three or more locations. Leave out practices owned by a dental service organization. For each one, bring back the website, the number of locations, the city of the head office and the owner's name. Show me the price before you start.

Claude sends it to the compile tool, which reads the request back as conditions and facts, each marked required or optional. Read that reading before you go on: if it took "three or more locations" as "three locations", say so in your own words, and Claude changes it with edit_spec. Reading and pricing a request never spend anything.

Requests that work well name a trait you can see on a company's own pages or in public records: the tools it runs, the roles it hires for, the certificates it states, the markets it entered, a filing it made.

See the price, then approve it

quote_capacity_work prices the exact request and returns the most the run can cost. The quote lasts 30 minutes. Claude shows you that maximum and waits for your yes. Only then does it call authorize_capacity_work with the amount you approved, and the run can never cost more than that.

What a list costs:

What you get Price
A delivered row 5¢, 15¢ or $1, depending on what the row needs
A person's email on a row, when the request asks for it 5¢ more
A phone on a row, when the request asks for it 15¢ more
Duplicates, rows you already own, rows a page contradicts Not charged
A run that finds nothing Nothing

What the run doesn't use goes back to your balance. For example, if the quote prices the rows at 15¢ and each one carries the owner's email, 50 rows cost $10, the credit a new account starts with.

What comes back

get_find shows the run's progress, and list_find_rows reads the rows as they arrive. A run keeps working until it reaches the count you asked for, up to four hours on the largest lists, so a long list finishes even after the chat moves on. Ask Claude "how is the dental list doing?" and it checks.

Each row holds:

Column What it holds
Name The practice's name
Each fact you asked for The value, the URL of the page it was read on, and the time it was read
Each condition Whether the row meets it, with the page that states it
Owner email, when asked An address a page printed, or the company's published pattern, labeled likely

When you doubt a row, ask Claude to open it: get_find_decisions returns each condition's answer with its reason, value, source and time. A row that fails a condition is not delivered and not billed.

Get it into a sheet or your CRM

  • A file. Ask "Export the dental list as CSV." export_find makes a download link for CSV, Excel, JSON or HTML that works for 24 hours.
  • A link. share_find makes a link to a fixed copy of the rows that anyone with it can open.
  • Google Sheets. In your SpecStream workspace, open Connections, choose Google Sheets and sign in. Pick the spreadsheet, match each fact to a column, and turn on Keep sending to add new and changed matches to the same sheet. The full steps are in the Google Sheets guide.
  • A CRM. The same way, the rows go to HubSpot, Salesforce, Pipedrive, Attio and the other tools on the integrations page, matched to the records you already have.

Keep the list up to date

On the list in your workspace, Watch for new ones opens a schedule that reruns the request hourly to yearly, inside a maximum per run and per month that you set. A recheck charges half the row rate for a new or changed row and 1¢ for a row that comes back unchanged, and each row is labeled changed, unchanged or no longer matching. New matches arrive in Slack, email, your sheet, your CRM or a signed webhook. The Free plan keeps one list up to date, and Pro keeps ten. See keeping data up to date.

A search, a page or a list: which one your agent needs

The same connector gives Claude three tools, priced for three jobs:

The job Tool Price
One fact now, such as who runs a company or when a law takes effect search_web $5 per 1,000 searches of up to 10 results
The text of pages you already have the addresses of read_pages $0.80 per 1,000 pages; a page with no text is not charged
Many records that each meet your conditions, with the same facts on every row compile, then a quote 5¢, 15¢ or $1 a delivered row

If the answer is one value, Claude should search. If the answer is a table you would paste into a sheet, ask for the list. A search for a list also returns its first rows and an estimate of its size, so Claude can show you a sample before you price the whole thing. More on each: the Search API, the Extract API and Deep Search.

Start

Connect SpecStream in Claude, paste the request above with your own market in it, and approve the price Claude shows you. The $10 of credit you get on sign up, no card, pays for the first list.

More from the blog

Every post