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.
Two ways to authenticate: OAuth for Claude.ai custom connectors (sign in and click Authorize, no key to copy), or an API key (osk_…) created in Settings → API keys for Claude Code, Cursor, the Messages API and scripts. No account yet: start here, the access 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 from Claude.ai (OAuth)
- In Claude.ai, open Settings → Connectors.
- Click Add custom connector.
- URL:
https://outsend.xyz/mcp. Leave the OAuth Client ID and Client Secret fields empty: Claude registers itself automatically. - Click Connect, sign in to outsend if asked, then click Authorize.
Access tokens last one hour and are renewed automatically. To disconnect, revoke the app in Settings → API keys → Connected apps on outsend.
A connection without credentials (no OAuth token, no API key) gets 401 Unauthorized, with a WWW-Authenticate header pointing to https://outsend.xyz/.well-known/oauth-protected-resource/mcp: this is how MCP clients discover the OAuth flow. The tool catalog stays public on this page (see Tools below).
Connect with an API key
For Claude Code, Cursor, the Claude Messages API and scripts.
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" } } } }
Claude Messages API (MCP connector):
"mcp_servers": [{ "type": "url", "url": "https://outsend.xyz/mcp",
"name": "outsend", "authorization_token": "osk_YOUR_KEY" }]
Clients without header configuration nor OAuth: 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… For reviews, optional max_reviews (default 300) and period_months (default 12), 0 = unlimited |
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. Optional low_priority: the pipeline runs after other jobs in the queue and costs less. |
list_pipelines |
Pipelines with status |
create_monitor / list_monitors |
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 account's normal permissions, whether the call carries an OAuth token or an API key:
- 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.
- OAuth tokens only work on
/mcp: they do not open the REST API. - 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