FR
Copied
Integration

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)

  1. In Claude.ai, open Settings → Connectors.
  2. Click Add custom connector.
  3. URL: https://outsend.xyz/mcp. Leave the OAuth Client ID and Client Secret fields empty: Claude registers itself automatically.
  4. 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:

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