MCP Server
Connect Claude, Cursor, or any MCP client to Chat33 — post, pull analytics, and build DM flows with natural language.
What it is
Chat33 runs a remote Model Context Protocol server (Streamable HTTP transport) at https://chat33.io/api/mcp/mcp. Every tool is a thin wrapper around the same v1 REST API that powers the n8n node and your own integrations — so anything an MCP client can do, it does with your real connected accounts, posts, and flows. No separate credentials or sandbox: it authenticates with the same sk_live_... API key from Settings → API Keys.
1. Connect from Claude Code
Create an API key in Settings → API Keys (default scopes cover everything: accounts:read, posts:read, posts:write, media:write, flows:read, flows:write), then register the server:
claude mcp add --transport http chat33 https://chat33.io/api/mcp/mcp --header "x-api-key: sk_live_..."Run claude mcp list to confirm it connected, then just ask — Claude Code will call the right tools.
2. Connect from claude.ai (or another client)
- Go to Settings → Connectors → Add custom connector.
- URL: https://chat33.io/api/mcp/mcp
- Add a custom header x-api-key with your Chat33 API key.
Note: claude.ai custom connectors are evolving quickly — use this with clients that support custom headers on remote MCP connections. Cursor, Windsurf, and other MCP-compatible tools work the same way: point them at the URL above with an x-api-key (or Authorization: Bearer sk_live_...) header.
3. Tools
| Tool | Description |
|---|---|
| list_accounts | List connected social accounts (channels), optionally filtered by platform |
| create_post | Create and queue (or schedule) a post across one or more connected accounts |
| validate_post | Dry run a post — checks media & platform compatibility without publishing |
| list_posts | List posts, filterable by status, platform, or channel; paginated |
| get_post | Get a single post by ID, including its live status and engagement stats |
| delete_post | Cancel a queued or scheduled post before it publishes |
| get_post_logs | Get delivery/publish log entries for a post — for debugging failures |
| upload_media | Ingest a media file from a public https URL, returns a hosted URL to post with |
| create_upload_url | Get a presigned URL to PUT a local file to — for files with no public URL, or over 4.5MB |
| get_analytics | Aggregate engagement analytics (views, likes, comments, shares) across published posts |
| list_flows | List all DM-automation flows, newest-updated first, with triggers and status |
| get_flow | Get a single flow by ID, including its full node/edge graph and synced triggers |
| create_flow | Create a DM-automation flow (trigger + action node graph) in DRAFT status |
| set_flow_status | Change a flow's status: ACTIVE, PAUSED, ARCHIVED, or DRAFT |
Flow authoring is guided in-tool: create_flow's description carries the full node/edge schema (18 node types, trigger types, worked examples), so a client can compose a valid flow from a plain-English request without a separate schema lookup. New flows are created DRAFT — call set_flow_status with ACTIVE to turn them on.
Auth & scopes
Requests authenticate with the same header the REST API and n8n node use: x-api-key: sk_live_... (an Authorization: Bearer sk_live_... header also works). Each tool call is authorized against the key's scopes, same as the equivalent REST endpoint — posts:write for create_post, flows:write for create_flow/set_flow_status, and so on.
Example prompts
"Post this video to my TikTok as private"
"Share this article on LinkedIn, connections only"
"How did my last 10 TikTok posts perform?"
"Create a flow that DMs everyone who comments SKILL on my latest reel"
Troubleshooting
401 Unauthorized — the API key is missing, invalid, or wasn't sent as a header at all. Re-check the connector config or the --header flag.
403 Insufficient scope — the key is missing a scope the tool needs. Flow tools in particular need flows:read/flows:write: keys created before flows shipped won't have them — create a new key, or add the scopes to the existing one in Settings → API Keys.
Tool call fails with a platform error — run validate_post first; it surfaces missing media, unsupported formats, and channel mismatches without publishing anything.