Connect Claude, or any MCP-compatible client, to Converted via the Model Context Protocol. Read the same campaign health and agent activity your Command Center shows, talk with your named agent team, and, once this connection has campaign-editing access, build and publish campaign changes, always with a confirm step before anything reaches an ad account.
Converted is an always-on team of AI marketing agents that watch your campaigns, propose the next move, and act inside guardrails you set. The MCP server is how an assistant like Claude talks to that same team from outside the Converted app: it can read the campaign data and pending proposals your Command Center already shows you, hold a conversation with one agent or the whole team, and, with the right access, turn that conversation into real changes on your campaign.
Who is this for? Anyone who wants to check on a campaign or work with their agent team from Claude, or another MCP client, instead of opening the app.
How it works. The server exposes 8 tools to every connection, plus a ninth, publish_funnel_changes, that only shows up in your client's tool list once this connection has been granted campaign-editing access. If you don't see it, that's the signal that this connection wasn't granted that access, not a bug, see Authentication below.
Authentication happens over OAuth. No API keys to manage, you sign in with your Converted account.
Requires a paid ChatGPT plan (Plus, Pro, Business, Enterprise, or Edu), and must be set up at chatgpt.com in a web browser — developer mode is not available in the ChatGPT desktop or mobile apps. On Business, Enterprise, and Edu, a workspace admin has to turn developer mode on before members can see it.
ChatGPT has renamed this area more than once — it was Connectors, then Apps, and is now Plugins. If your build still shows the old layout, developer mode lives under Settings → Apps → Advanced settings instead.
Run this command in your terminal:
claude mcp add converted --transport http https://mcp.converted.io/mcpYou will be prompted to sign in with your Converted account on first use.
Add this to your claude_desktop_config.json:
{
"mcpServers": {
"converted": {
"url": "https://mcp.converted.io/mcp"
}
}
}macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Nine tools, grouped by what they do. Every tool that targets a workspace takes an optional organizationId, omit it and the tool uses your default workspace. Click any category to expand, then click a tool to see its parameters and an example prompt.
Nine named agents. Pass a key as talk_to_funnel_agent's agent parameter to talk to one directly, or omit it to let the most relevant one answer.
| Key | Name | Title | Focus |
|---|---|---|---|
| optimization | Otto | Strategy Agent | Campaign strategy & experiments |
| pages | Piper | Page Agent | Builds pages & variants |
| campaigns | Cash | Ads Agent | Budgets, campaigns & destinations |
| audience | Iris | Audience Agent | Identity, ICPs & retargeting |
| launch | Ray | Launch Agent | Publishes what you approve |
| creative | Milo | Creative Agent | Generates ad creative |
| copy | Penn | Copy Agent | Headlines, CTAs & email flows |
| analytics | Vera | Analytics Agent | Reads the numbers, flags the story |
| funnel | Cam | Funnel Agent | Keeps the funnel wired & healthy |
Three independent things have to be true before an assistant can build or rewire a campaign for you over this server, not just talk about one.
1. Scope. This connection has to hold the campaigns:write scope, see Scopes below. A connection that never asked for it doesn't have it.
2. Role.Your role in the workspace has to be able to make changes. A viewer can look at everything on this server but can't change a campaign, the same as everywhere else in Converted.
3. Rollout. Converted is rolling this capability out gradually. If it isn't on yet for your workspace, the conversation still works exactly the same, the agent just won't apply anything.
If any of the three isn't true, your assistant still gives you a full answer, structural changes just aren't applied, and the reply points you at the campaign's canvas to make them by hand instead. Depending on which of the three is missing, you'll see one of these:
"Canvas edits aren't available in this conversation, because this connection wasn't granted campaign-editing access. Make structural changes at /edit/funnel/<id>."
"Your role in this workspace can't change campaigns. Ask an admin, or view it at /edit/funnel/<id>."
"Canvas edits aren't available in this conversation. Make structural changes at /edit/funnel/<id>."
Two different tools can ultimately reach a live ad account, and both use the same shape: the first call is a dry run that shows you exactly what would happen and hands back a one-time token, nothing happens until a second call repeats that token.
decide_agent_proposal approves a single proposal the agent team already raised, a budget change, an audience sync, a split test.publish_funnel_changes sends everything currently staged on the canvas out to your ad platforms at once, the campaigns the team planned, budgets queued, destinations repointed. This is the one that needs the campaigns:write scope above.Built-in protections
Converted's MCP server exposes only the nine tools above. It does not carry any tools for building or editing pages, sites, or blogs directly, and none for generating ad creative. With campaign-editing access, talk_to_funnel_agent can still add and wire pages onto a campaign as part of building it (the reply's applied list shows that), but there is no standalone tool here to create, edit, or fetch a page on its own.
A recorded decision (record_decision) never steers an agent by itself. It sits as pending until a person confirms it inside the Command Center, only a confirmed decision changes what the agents propose next.
Workspace governance can override an approval: if an admin has locked a campaign or a specific change, no agent can execute against it even after you approve it, and an approval can be refused if a team decision recorded after the proposal changed the picture.
A viewer's role can read everything on this server, list campaigns, read proposals, and talk with the agent team, but can't approve or dismiss a proposal, and can't edit or publish a campaign. Recording a decision doesn't require a mutating role, since it changes nothing on its own until a person confirms it in the app.
The server authenticates over OAuth 2.1 with PKCE (S256) and supports dynamic client registration, so a new MCP client can register itself and start the sign-in flow without anyone hand-configuring credentials. There are no API keys.
First-party clients are approved automatically once you sign in, there is no separate consent screen to click through. Your session stays active across conversations, if it expires, you'll be prompted to re-authorize.
| Endpoint | URL |
|---|---|
| Authorization | https://converted.io/api/mcp/oauth/authorize |
| Token | https://mcp.converted.io/api/mcp/oauth/token |
| Dynamic client registration | https://mcp.converted.io/api/mcp/oauth/register |
| Protected resource metadata | https://mcp.converted.io/.well-known/oauth-protected-resource/mcp |
| Authorization server metadata | https://mcp.converted.io/.well-known/oauth-authorization-server |
Dynamic client registration is rate-limited per IP. Most MCP clients never call it directly, that part happens automatically the first time you connect.
A connection that asks for no specific scope gets the first three below automatically. campaigns:write is deliberately left out of that default, it's the one scope that lets a conversation reshape your campaign and eventually push changes to a live ad account, so a client has to ask for it by name. Whether your MCP client exposes a way to request it during setup depends on the client, check its documentation.
| Scope | Grants | Default |
|---|---|---|
| funnels:read | Read campaign lists, full campaign detail, the agent roster, and the pending proposal queue | Yes |
| agents:chat | Talk to the agent team or a single named agent, and record a team decision | Yes |
| agents:approve | Approve or dismiss a pending agent proposal | Yes |
| campaigns:write | Let the agent team build and rewire your campaign in conversation, and publish those staged changes to your ad accounts | No, must be requested |
Once connected, talk to your AI assistant in plain English. Here are some things you can ask:
"Show me my campaigns and flag anything that needs attention"
Lists your campaigns with a health summary, then reads the ones worth a closer look in full.
"What's my agent team waiting on me to decide?"
Lists the pending proposals from the Command Center's queue: budget rebalances, audience syncs, split tests.
"Ask Cash why spend shifted toward retargeting this week"
Talks one on one with the Ads Agent instead of the whole team.
"We agreed to raise the retargeting budget to $500/day through August 1, log that"
Records the decision as pending. It changes nothing until a person confirms it in the Command Center.
"Set up a Google Search campaign at $50/day pointing at my pricing page, then show me what's queued before you publish"
requires campaign-editing accessBuilds the campaign on the canvas, then calls publish_funnel_changes with no confirmToken to show the itemized plan. Nothing goes out until you confirm it.
Limits apply per connection. Confirm tokens (for decide_agent_proposal and publish_funnel_changes) expire after 10 minutes and can only be used once.
| Bucket | Applies to | Limit |
|---|---|---|
| Overall | Every campaign-agent tool call combined | 60 / minute |
| Chat | talk_to_funnel_agent | 10 / minute |
| Decide | decide_agent_proposal, record_decision | 6 / minute |
| Publish | publish_funnel_changes | 3 / minute |
talk_to_funnel_agent spends workspace AI credits per turn. record_decision spends none, it only writes a pending note.