# FUNEL MCP Server

FUNEL is a B2B sales-intelligence platform: find verified business contacts from public data, enrich them with AI, run email outreach, and sync to your CRM. The FUNEL MCP (Model Context Protocol) server lets AI assistants and agents use FUNEL directly: search the data pool, read lead sheets, check prices, build lead lists, and run enrichment from Claude, Cursor, VS Code, or any MCP-capable client.

- Server URL: https://mcp.funel.to/mcp
- Transport: Streamable HTTP (MCP 2025-11-25)
- Auth: FUNEL API key as a bearer token (`Authorization: Bearer fnl_live_...`), or OAuth (Sign in with FUNEL) for the Claude.ai and ChatGPT apps
- Create a key: sign up free at https://funel.to, then Integrations > API keys in the app. Default read scopes cover all search tools; the spend tools need the opt-in spend scopes (`write:sheets`, `run:enrichment`, `run:ai`) plus a daily credit cap you set on the key
- Setup guide (human-readable): https://funel.to/mcp
- Positioning: search free, pay per lead, not per question

## Read tools (free)

- `search_people`: search 23M+ professional profiles by title, seniority, industry, location, company size, and more; returns a match count plus sample records
- `search_companies`: search 13M+ companies by industry, size band, HQ country, and keywords
- `search_local_businesses`: search local businesses by search term, location, ratings, and contact filters
- `list_sheets`: list the user's lead sheets
- `get_sheet_rows`: read rows from a sheet, including manual edits and AI-column outputs
- `get_record`: full detail for one saved contact or company
- `get_account`: identity, key scopes, credit balance, and daily budget
- `get_pricing`: the full credit price list
- `search` / `fetch`: federated search and detail fetch in the shape ChatGPT connectors expect

Fair use on free searches: 300 pool searches per account per day, sample size capped at 25 records per call, sample emails masked.

## Spend tools (live, quote-and-confirm gated)

These tools charge credits and require the matching spend scope on the key:

- `create_lead_list`: create a sheet and fill it from the pool. Cost: per record unlocked, tiered by data source and freshness; the quote shows the exact total
- `add_records`: add more pool records to an existing sheet. Cost: per record, tiered (same as above)
- `enrich_records`: run person, company, or email enrichment on sheet rows. Cost per row: profile 1 credit (3 for deep), company 2 credits, email 5 credits
- `find_email`: find and verify the work email for one profile. Cost: 5 credits
- `run_ai_column`: evaluate an AI prompt over sheet rows, one cell per row. Cost per cell: 1, 3, or 15 credits depending on the model
- `export_sheet`: export a sheet as CSV or JSON. Free
- `get_run_status`: progress and credits for an enrichment or AI run. Free
- `stop_run`: stop a running enrichment or AI run; unused reserved credits are refunded. Free

Overall, credit rates match the app: a contact from the pool is about 1 to 6 credits depending on how rare the profile is (about 3.5 on a mixed list), and a fully email-verified lead is about 8 credits on a typical list. Full pricing: https://funel.to/pricing.md (or call `get_pricing`).

## How billing works

1. The first call to a paid tool returns an exact price quote and a confirmation code. Nothing is charged.
2. Calling the same tool again with the code executes it. Codes are single-use and expire after 5 minutes.
3. The quoted price is a hard ceiling: you are never charged more than the quote. If the price rises before you confirm, nothing runs and you get a fresh quote instead.
4. Failures and results served from cache are refunded automatically.
5. Every key carries a daily credit cap the account owner controls. Once the cap is hit, spend tools refuse until the next day; a cap of 0 makes the key read-only.

An agent cannot spend credits without the price appearing in the conversation first.

## Setup per client

Claude Code:

```
claude mcp add --transport http funel https://mcp.funel.to/mcp --header "Authorization: Bearer fnl_live_..."
```

Cursor (`~/.cursor/mcp.json`):

```json
{
  "mcpServers": {
    "funel": {
      "url": "https://mcp.funel.to/mcp",
      "headers": { "Authorization": "Bearer fnl_live_..." }
    }
  }
}
```

VS Code (`.vscode/mcp.json`):

```json
{
  "servers": {
    "funel": {
      "type": "http",
      "url": "https://mcp.funel.to/mcp",
      "headers": { "Authorization": "Bearer fnl_live_..." }
    }
  }
}
```

OpenAI Agents SDK (Python):

```python
from agents import Agent, HostedMCPTool

agent = Agent(
    name="Lead researcher",
    tools=[
        HostedMCPTool(
            tool_config={
                "type": "mcp",
                "server_label": "funel",
                "server_url": "https://mcp.funel.to/mcp",
                "authorization": "fnl_live_...",
                "require_approval": "never",
            }
        )
    ],
)
```

Anthropic Messages API (note the beta header `mcp-client-2025-11-20`):

```python
import anthropic

client = anthropic.Anthropic()
response = client.beta.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    betas=["mcp-client-2025-11-20"],
    mcp_servers=[
        {
            "type": "url",
            "url": "https://mcp.funel.to/mcp",
            "name": "funel",
            "authorization_token": "fnl_live_...",
        }
    ],
    messages=[{"role": "user", "content": "Find heads of marketing at software companies in Berlin"}],
)
```

Claude.ai and ChatGPT apps: no API key needed; both connect with Sign in with FUNEL (OAuth).

- Claude.ai: Settings > Connectors > Add custom connector, paste `https://mcp.funel.to/mcp`, then sign in with FUNEL when prompted and approve the connection. Claude supports the full flow, including write actions.
- ChatGPT: Settings > Apps & Connectors (enable developer mode) > Add, paste the same URL, then sign in with FUNEL. Write actions (building lists, running enrichment) require a ChatGPT Business or Enterprise plan; other plans can search and read.

The connection screen shows exactly which permissions the app is granted and lets the user set a daily credit cap before approving. Connections can be reviewed and disconnected anytime in the FUNEL app under Integrations > API keys > Connected AI clients.

## Data

Records are compiled from publicly available business information, merged into one canonical record. Contact details are re-verified at export and every field carries a freshness date. Sample records returned by search tools mask email addresses and omit phone numbers.

## Links

- Human setup page: https://funel.to/mcp
- Pricing: https://funel.to/pricing (machine-readable: https://funel.to/pricing.md)
- Privacy: https://funel.to/legal/privacy
- Terms: https://funel.to/legal/terms
- Contact: admin@funel.to
