Connect your AI client
This guide connects your AI client to Spreeflo's hosted MCP server. It takes two things: a Spreeflo API key, and one entry in your client's MCP configuration.
Step 1: Create an API key
In the Spreeflo app, navigate to Settings > API Keys and click + Add API Key. Give it a name you'll recognise later — for example the name of the client you're connecting — and copy the key.
This is the same key used for the Spreeflo REST API. There is no separate MCP credential and no OAuth flow to complete.
Warning: This key has write access to your workspace. Treat it like a password — give each client its own key, keep it out of screenshots and shared documents, and revoke it if it's ever exposed.
Step 2: Add the server to your client
The server endpoint is:
https://mcp.spreeflo.com/mcpClaude Code
Run this in your terminal:
claude mcp add --transport http spreeflo https://mcp.spreeflo.com/mcp \
--header "Authorization: Bearer <YOUR_API_KEY>"Cursor and other mcp.json clients
Add a spreeflo entry to your client's MCP configuration file:
{
"mcpServers": {
"spreeflo": {
"url": "https://mcp.spreeflo.com/mcp",
"headers": { "Authorization": "Bearer <YOUR_API_KEY>" }
}
}
}Claude, Cowork, and other connector clients
Some clients add a remote MCP server through a form that asks only for a URL — claude.ai, Claude Cowork, and ChatGPT custom connectors are the common case. Put the key in the URL instead of a header:
https://mcp.spreeflo.com/mcp/<YOUR_API_KEY>Same key, same workspace, same tools — the only difference is where the credential travels. Where a client can send a header, prefer the header form above.
Claude's custom connector dialog has a Request headers section where you can store an Authorization value of Bearer <key> — that's the better option if you have it, since the key never enters a URL. It's currently in beta and rolling out gradually, so use the URL form above if you don't see the section. Note that Claude Desktop's claude_desktop_config.json can't send headers to a remote server, so add it as a connector there rather than editing that file.
Step 3: Verify the connection
Ask your client to list the Spreeflo tools it can see, or try a simple read such as "list my Spreeflo audiences".
A working connection returns your actual workspace data — your audience names, your campaigns. If your client shows a tool list, you should see Spreeflo tools such as list_campaigns, get_segment_preview, and create_email_template. If you get an authentication error instead, see Troubleshooting below.
What the connection can reach
Check your client's confirmation settings
Before you start working, check how your client handles tools that modify data. Spreeflo annotates every tool so a well-behaved client can tell reads from writes, but Spreeflo will never prompt you — the decision to ask you before running a write belongs entirely to your client.
Warning: Writes apply immediately to your live workspace. There is no staging step, no pending list, and no approval queue on this surface. If you want to review changes before they land, use Spreeflo's in-app AI instead.
The riskiest actions are removed rather than left to your client's settings: deletes, starting or resuming a campaign or journey, and publishing a form are refused by the server.
Troubleshooting
| What you see | What it means | What to do |
|---|---|---|
| 401 Unauthorized | The key is missing, malformed, or unknown; or it doesn't resolve to a workspace; or the owner's membership was revoked; or the AI agent is switched off for the team. All of these return the same response on purpose. | Check the key is copied in full and sent either as Authorization: Bearer <key> or as the last segment of the URL. Note that a malformed Authorization header fails outright rather than falling back to the URL. Then confirm the key hasn't been revoked, that its owner is still a member of the workspace, and that the AI agent is enabled in the team's settings. |
| 403 MCP is not enabled | The MCP server is switched off for this deployment. | Contact support. |
| 405 Method Not Allowed | Your client tried a GET or DELETE — usually because it's expecting an SSE stream or a session to tear down. The server is POST-only and stateless. | Configure the server as a Streamable HTTP endpoint, not a legacy SSE endpoint. |
| Rate limit error | The workspace passed roughly 120 tool calls in the last 60 seconds. | Wait a few seconds and retry. The window drains continuously — there's no daily quota to wait out. |
| Plan-gate error | The capability is gated on a higher plan, exactly as it is in the app. | The error names the requirement. Upgrade the workspace, or use a capability available on your plan. |
| Validation error | The document your client submitted doesn't match the expected format. | Have the client read the relevant format spec with read_format_doc and retry — see Working with documents. |
Revoking access
To cut a connection off, delete its API key in Settings > API Keys. Once revoked, a key can't be reactivated — generate a new one and update the client's configuration.
Need Immediate Help? Contact our support team at support@spreeflo.com or check our other guides for more information.