AI and agents
Connect SocialCutter to Cline over MCP: the right transport
Configure the SocialCutter MCP server in Cline: type streamableHttp, the IDE and CLI config files, autoApprove and the transport errors to expect.
- Cline
- MCP
- streamableHttp
- sse
- cline_mcp_settings.json
- X-API-Key
- SocialCutter
What Cline is and where MCP fits
Cline is a coding agent that works inside your editor and also ships a CLI. Like any MCP client, it lets the agent call tools on an external service instead of hand-writing HTTP requests. In our case, the SocialCutter MCP server publishes 28 tools: process images, read history and wallet, manage coupons and API keys, and read billing.
The full tool catalogue, the connection modes and the protocol details live in the SocialCutter MCP server guide. This page focuses on what is specific to Cline, which has one documented trap, two separate configuration files and a command-line wizard with a limitation that catches people out.
First, the basics: SocialCutter accepts both headers, X-API-Key: sc_... and Authorization: Bearer sc_.... Use whichever your client documents; the result is identical. A Bearer without the sc_ prefix is treated as a session token and will return 401. The endpoint is https://mcp.socialcutter.theboomer.dev/mcp and it speaks streamable HTTP, not SSE.
The trap: omit type and Cline assumes sse
This is the part to read twice, because it is documented and still ends up in almost every hand-written config.
Cline keeps the legacy sse transport for backwards compatibility. When a mcpServers entry omits the type field, Cline does not guess from the shape of the URL and does not try several transports: it assumes sse. And since the SocialCutter endpoint is streamable HTTP, that assumption points at the wrong connection.
The typical symptom is not a clear error but a server that shows up in the list with no tools, or that sits there trying to connect. That is exactly the kind of failure you debug in the wrong place: you check the URL, the key, the firewall — and the problem was a missing field.
The fix is one line:
"type": "streamableHttp"
Which is why every example on this page includes an explicit type. If you are also migrating an old config that used to work over SSE, that is the change: sse out, streamableHttp in.
The two configuration files
Cline is both an IDE extension and a CLI, and each one keeps its config somewhere else:
| Usage | File | Scope |
|---|---|---|
| IDE extension | ~/.cline/data/settings/cline_mcp_settings.json | Shared global |
| CLI | ~/.cline/mcp.json | CLI global |
Two practical notes:
- They do not sync on their own. Adding the server to the extension does not add it to the CLI or the other way round. If you use both, write the entry in both files.
- In the extension you can also open that same JSON from the Configure MCP Servers button in the MCP panel: it is the safest way to hit the right path, because it opens the file the extension is actually reading.
On Windows the ~ is your user folder, so ~/.cline/mcp.json is C:\Users\your_user\.cline\mcp.json.
The full block
With an explicit type, the correct header and the two control fields Cline expects:
{
"mcpServers": {
"socialcutter": {
"type": "streamableHttp",
"url": "https://mcp.socialcutter.theboomer.dev/mcp",
"headers": { "X-API-Key": "sc_your_key" },
// equivalent: "headers": { "Authorization": "Bearer sc_your_key" },
"disabled": false,
"autoApprove": []
}
}
}
What each field does:
type:"streamableHttp". Never omit it; omitting it meanssseand the wrong transport.url: the exact endpoint, with its trailing/mcp.headers:X-API-Keywith thesc_...key, orAuthorization: Bearer sc_.... No tool accepts the key as an argument, so authentication always travels in a header.disabled:falseto keep the server active. Set it totrueand Cline ignores the server without deleting the config, which is handy for switching one off temporarily.autoApprove: an array. Empty means Cline asks for confirmation before using any tool. Add specific names —["list_platforms", "get_credits"], for instance — and those run without asking while the rest keep asking.
If you would rather not write the key in plain text, keep the value in your secrets manager and paste the file from a template. Cline’s config file is not meant to be published.
Install from the command line (and its limitation)
Cline ships a wizard so you do not have to edit the JSON by hand:
cline mcp install socialcutter --transport http https://mcp.socialcutter.theboomer.dev/mcp
And to review what is registered:
cline mcp
The important caveat: the install wizard requires an interactive terminal (TTY). It works fine when you run it yourself in your terminal, and it fails or hangs in a script, an automation file, a CI job or any environment without an interactive terminal. If that is your case, the alternative is exactly the block above: edit the JSON directly. There is no documented flag that unlocks the wizard without a TTY, so it is not worth fighting.
In practice, for a single machine the fastest path is to write the entry in the JSON and refresh. The wizard earns its keep when you are registering several servers and do not want to remember the field names.
Common errors
| Symptom | Likely cause | Fix |
|---|---|---|
| The server appears but has no tools | type is missing, so Cline uses the legacy sse transport | Add "type": "streamableHttp" and refresh |
401: Invalid or expired authentication token | No header reaches the server, or an Authorization: Bearer whose value does not start with sc_ (treated as a session token) | Send your sc_... key in X-API-Key, or in Authorization: Bearer sc_... |
401: Invalid API key | The key is mistyped, revoked or from another account | Create a new one under Profile → API keys and replace it |
| It works in the IDE but not in the CLI | You edited only one of the two files | Mirror the entry in ~/.cline/mcp.json |
cline mcp install does not respond or hangs | The wizard needs an interactive terminal | Edit the JSON by hand |
| The server stays disabled | disabled is set to true | Set it to false and refresh |
| Every call asks for confirmation | autoApprove is empty | Add the tools you want to run without asking |
Next steps
- Protocol overview: Use SocialCutter from your LLM or editor with MCP
- Code path: Process images with the API from the terminal (curl) and from Python
- Strategy: Automating social media images: the 4 paths
- API reference: https://docs.socialcutter.theboomer.dev
- Dashboard: https://dash.socialcutter.theboomer.dev
Frequently asked questions
I copied the config and Cline finds no tools, why?
Most likely the type field is missing. When it is omitted, Cline assumes the legacy sse transport for backwards compatibility, while the SocialCutter endpoint is streamable HTTP. Add "type": "streamableHttp" and refresh.
Which file do I edit, the IDE one or the CLI one?
It depends on where you use Cline. The IDE extension stores the shared global config in ~/.cline/data/settings/cline_mcp_settings.json; the CLI uses ~/.cline/mcp.json. They are separate files and they do not sync with each other.
Can I install the server with a command instead of editing JSON?
Yes, with cline mcp install, but the wizard requires an interactive terminal (TTY). In a script, a CI job or any non-interactive environment the wizard will not work, and the alternative is to edit the JSON directly.
What is autoApprove for?
It stops Cline from asking for confirmation before every tool call. It is an array: leave it empty and Cline asks before running anything; list specific tool names and those run without asking.
Does the MCP server need credentials to start?
No. The public tools answer without a key, so you can configure the connection, refresh and verify with list_platforms before creating the sc_ key. The private tools do require an authentication header: X-API-Key: sc_... or Authorization: Bearer sc_...