MCP — Model Context Protocol
Drive outsend from Claude, Cursor, Claude Code or any MCP client. Your subscription, your tokens — live at https://outsend.xyz/mcp.
Status: live. The MCP server is in production. Ask your AI assistant for "1,000 plumbers in Lyon with emails" and it drives outsend for you.
The MCP server exposes outsend as a remote MCP server (Streamable HTTP, stateless) that any MCP-compatible client can connect to: Claude.ai (custom connectors), Claude Desktop, Claude Code, Cursor, the Anthropic API, or any future client that speaks the protocol.
You authenticate with an API key (osk_…) created in Settings → API keys. During the alpha, accounts are invitation-based: start here — the invitation code is applied for you. The AI client then calls outsend on your behalf — using your own LLM subscription, with zero outsend-side LLM cost.
Connect
Endpoint: https://outsend.xyz/mcp — auth via Authorization: Bearer osk_… (or X-API-Key).
Claude Code:
claude mcp add outsend --transport http https://outsend.xyz/mcp \
--header "Authorization: Bearer osk_YOUR_KEY"
Cursor (~/.cursor/mcp.json):
{ "mcpServers": { "outsend": { "url": "https://outsend.xyz/mcp",
"headers": { "Authorization": "Bearer osk_YOUR_KEY" } } } }
Clients without header configuration (e.g. Claude.ai custom connectors): use the secret-URL variant — treat the URL itself as a password and don't share it:
https://outsend.xyz/mcp/k/osk_YOUR_KEY
If the key leaks, revoke it in Settings → API keys; the URL dies with it.
Tools
| Tool | What it does |
|---|---|
list_modules |
Catalog of data modules (needs/produces/when to use) |
get_pipeline_schema |
Machine contract for building pipelines |
estimate_scrap |
Cost (EF) and volume of an extraction, without launching |
create_scrap_job |
Start a Google Maps extraction (async, supports stop_at) |
create_enrichment_job |
Enrich a finished job: emails, reviews, socials, verify, techstack… |
get_job |
Status, counters, download URL |
get_job_results |
Preview rows (≤ 50/call) + total + CSV download link |
list_jobs |
Recent jobs |
create_pipeline |
Create and start a multi-step pipeline |
list_pipelines |
Pipelines with status |
create_veille / list_veilles |
Recurring monitoring on a job or pipeline |
get_events |
Account event feed (job.completed…) |
Jobs are asynchronous: the assistant creates a job, polls get_job, then fetches a preview with get_job_results — full data always goes through the download URL, never inline in the chat.
Scope and limits
The MCP server inherits the key's normal permissions:
- It cannot access other users' data.
- The same EF gate and quotas as the web app apply — an over-quota pipeline is refused identically.
- It cannot touch billing, account settings, admin surfaces, or manage API keys.
- Rate limit: 600 MCP calls / hour / account.
BYOK vs MCP
| Pattern | Where the chat lives | Who pays the LLM tokens |
|---|---|---|
| BYOK | Inside outsend.xyz | The user, via a pasted API key |
| MCP | Inside the user's existing AI client | The user, via their subscription |
The two patterns coexist. Pick BYOK if the assistant should live in the outsend UI; pick MCP if it should live wherever you already work.
What's next
- Authentication — create your API key
- Events & webhooks — the same events, for automation platforms
- llms.txt — let any AI assistant ingest the docs