Set up an MCP client for Spun
Spun hosts the MCP server, so there is nothing to install or run. Every client connects to the same address:
https://api.spun.com/api/mcpOn claude.ai, ChatGPT and Gemini: paste the URL and sign in with Spun - no key needed. Other clients: create a key (walkthrough) and use the snippet.
Step-by-step guides with screenshots: Connect ChatGPT to WhatsApp and Connect Claude to WhatsApp.
Setup per client
claude.ai (web / mobile / Desktop) - custom connector
No API key needed: in claude.ai, Customize → Connectors → Add → Add custom connector → name it Spun, paste the URL → Continue → Add (Claude detects the sign-in) → Connect → sign in with your Spun account. You pick the organization and access level on the consent screen (org managers only). The consent screen itself never grants autonomous sending - if your org wants that, an org manager enables it for the connected app afterwards under Connected AI apps in Spun settings, and re-consenting resets it.
https://api.spun.com/api/mcpChatGPT (web / Desktop) - connector
No API key needed: Plugins → Add → Add custom MCP server → Name Spun, paste the URL, keep OAuth → tick I understand and want to continue → Create as a plugin → Connect Spun → sign in with your Spun account in the same tab. No Developer mode needed (tested 2026-11-08, ChatGPT Plus on the web). Same Spun consent screen and org-manager rule as claude.ai, and AI sends wait in the same approval queue in your Spun inbox.
https://api.spun.com/api/mcpGemini app (Spark) - custom app
No API key needed: on gemini.google.com, Settings & help → Connected Apps → Add a custom app → paste the URL → sign in with your Spun account. Once connected in the web app it works in Spark on web and mobile too. Same Spun consent screen and org-manager rule as claude.ai and ChatGPT, and AI sends wait in the same approval queue.
https://api.spun.com/api/mcpClaude Code
One command, then run /mcp, choose spun and Authenticate to sign in with your Spun account in the browser. No API key needed. For headless setups, add --header "Authorization: Bearer wap_YOUR_KEY" instead.
claude mcp add --transport http spun https://api.spun.com/api/mcpClaude Desktop
Prefer the custom connector above (add it once in claude.ai under Customize → Connectors, sign in with Spun). The mcp-remote bridge in claude_desktop_config.json is the API-key alternative.
{
"mcpServers": {
"spun": {
"command": "npx",
"args": [
"-y", "mcp-remote", "https://api.spun.com/api/mcp",
"--header", "Authorization: Bearer wap_YOUR_KEY"
]
}
}
}Anthropic API (MCP connector)
Server-side agents: pass the server in the Messages API request (beta header mcp-client-2025-11-20; your code obtains the token, the API only forwards it).
{
"model": "claude-sonnet-5",
"max_tokens": 1024,
"messages": [
{ "role": "user", "content": "What needs my attention on WhatsApp today?" }
],
"mcp_servers": [
{
"type": "url",
"url": "https://api.spun.com/api/mcp",
"name": "spun",
"authorization_token": "wap_YOUR_KEY"
}
]
}Cursor
In ~/.cursor/mcp.json (or per-project .cursor/mcp.json).
{
"mcpServers": {
"spun": {
"url": "https://api.spun.com/api/mcp",
"headers": { "Authorization": "Bearer wap_YOUR_KEY" }
}
}
}Goose
In ~/.config/goose/config.yaml.
extensions:
spun:
enabled: true
type: streamable_http
uri: https://api.spun.com/api/mcp
headers:
Authorization: "Bearer wap_YOUR_KEY"Gemini CLI
In ~/.gemini/settings.json.
{
"mcpServers": {
"spun": {
"httpUrl": "https://api.spun.com/api/mcp",
"headers": { "Authorization": "Bearer wap_YOUR_KEY" }
}
}
}OpenClaw
One command; set the transport explicitly (a URL-only entry defaults to SSE) and keep the key in an environment variable as OpenClaw recommends. Check with openclaw mcp doctor spun --probe.
openclaw mcp add spun --url https://api.spun.com/api/mcp \
--transport streamable-http \
--header 'Authorization=Bearer ${SPUN_MCP_KEY}'n8n (MCP Client node)
Point the MCP Client tool node of an AI Agent workflow at the endpoint - works on n8n cloud and self-hosted. For plain automation steps (send a message when a form is filled), the Spun REST API is the simpler fit.
Endpoint URL: https://api.spun.com/api/mcp
Server Transport: HTTP Streamable
Authentication: Bearer -> wap_YOUR_KEYAny stdio-only client (mcp-remote)
The generic bridge for clients that only speak stdio.
npx -y mcp-remote https://api.spun.com/api/mcp \
--header "Authorization: Bearer wap_YOUR_KEY"Client compatibility
| Client | Connection | Authentication | Status |
|---|---|---|---|
| claude.ai (web / mobile) | Custom connector (native remote) | OAuth sign-in with your Spun account | Verified 2026-11-08 (web, Ultra) - Customize, Connectors, Add custom connector, Spun sign-in and consent, tool permissions; tool calls, send approvals and disconnect verified 2026-08-16 |
| Claude Code | Native remote (Streamable HTTP) | OAuth sign-in with your Spun account (browser, localhost callback), or API key via --header | Verified 2026-10-18 - sign-in and tool calls; API key path verified 2026-08-16 incl. queued sends |
| ChatGPT (web / Desktop) | Custom MCP server under Plugins (native remote, no Developer mode) | OAuth sign-in with your Spun account (no key option) | Verified 2026-11-08 (web, Plus) - Plugins, Add custom MCP server, Spun sign-in and consent; tool calls and queued sends verified 2026-10-18. Workspace admin gating on Business and Enterprise is documented by OpenAI, not tested by Spun |
| Claude Desktop | Same custom connector as claude.ai (added under Customize → Connectors) | OAuth sign-in with your Spun account | Documented by vendor - same connector as claude.ai, not separately walked through yet |
| Anthropic API (MCP connector) | Native remote, server-side (beta header) | authorization_token field (API key) | Documented by vendor - not yet verified by Spun |
| OpenAI Responses API / Agents SDK | Hosted MCP tool (type: "mcp", server_url) | authorization field (API key) | Documented by vendor - not yet verified by Spun |
| OpenClaw | openclaw mcp add --transport streamable-http | API key header (OAuth needs an https gateway origin) | Transport checked 2026-08-23 (reaches Spun, current release); tool calls with a real key pending |
| Gemini app (Spark, web / mobile) | Custom app (native remote) | OAuth sign-in with your Spun account | Documented by vendor - not yet verified by Spun |
| Gemini CLI | Native remote (httpUrl) | headers block in settings.json (API key) | Documented by vendor - not yet verified by Spun |
| Cursor | Native remote (Streamable HTTP) | headers block in mcp.json (API key) | Documented by vendor - not yet verified by Spun |
| VS Code (GitHub Copilot agent mode) | Native remote (.vscode/mcp.json, type: "http") | headers block with an input prompt (API key) | Documented by vendor - not yet verified by Spun; org policy may need an admin |
| Windsurf (Devin Desktop) | Native remote (serverUrl in mcp_config.json) | headers block (API key) | Documented by vendor - not yet verified by Spun; 100-tool ceiling shared across all servers |
| Goose | Native remote (streamable_http) | headers block in config.yaml (API key) | Documented by vendor - not yet verified by Spun |
| LM Studio | Remote server in mcp.json | headers block (API key) | Documented by vendor - not yet verified by Spun |
| n8n (MCP Client Tool node) | Native remote (HTTP Streamable) | Bearer credential, or OAuth on n8n Cloud | Documented by vendor - not yet verified by Spun |
| Make (MCP Client app) | Native remote (Streamable HTTP) | OAuth connection or access-token connection | Vendor open beta - not yet verified by Spun |
| Zapier (MCP Client) | Native remote (Streamable HTTP) | Bearer token field, or OAuth | Vendor beta - not yet verified by Spun |
| Microsoft Copilot Studio | MCP tool (Streamable HTTP only) | OAuth "dynamic discovery", or API-key header | Documented by vendor - not yet verified by Spun; Power Platform admin policies apply |
| LibreChat (self-hosted) | librechat.yaml type: streamable-http | headers block, or OAuth when served over https | Documented by vendor - not yet verified by Spun |
| Open WebUI (self-hosted) | Admin → Integrations → MCP (Streamable HTTP), v0.6.31+ | Bearer, or OAuth 2.1 (admin adds the server) | Documented by vendor - not yet verified by Spun |
| Any stdio-only client | mcp-remote bridge | Bearer header via the bridge (API key) | Generic bridge - not client-specific |
"Verified" means Spun signed in, listed tools and ran real tool calls from that client on the stated date. "Documented by vendor" means the vendor's current first-party docs describe remote Streamable HTTP support but Spun has not run that client end to end yet - it should work, and we will stamp a date once it has. Clients that sign in through a localhost callback (Claude Code, Cursor desktop, Gemini CLI, Goose, OpenClaw) sign in with your Spun account in the browser, or use an API key instead. Setup is per user or workspace - Spun hosts the server and the guide, it cannot install itself into your ChatGPT, IDE or automation account.
Send approvals happen in the Spun team inbox, so the approval flow is identical in every client - nothing client-specific to configure. In-session approval prompts (MCP elicitation) are a planned server-side enhancement; when they ship, clients that support elicitation will surface them automatically.