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, and 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, so 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, so 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.