AI Agents (MCP)
We speak the Model Context Protocol, so an AI assistant can work inside your workspace: list your connected accounts, check what a platform requires, publish a post, and read back its status.
These tools publish live posts. Anything an agent calls, your audience sees. Point it at a test account first, and keep your assistant configured to ask before it publishes.
Connect
POST https://api.multi-upload-tool.com/mcp
JSON-RPC 2.0 over plain HTTP POST — one request, one response, no session to keep alive. Authentication is the same API token as the rest of the API, in the x-api-key header; a team-scoped token sees exactly the accounts it would see on /api/v1.
claude mcp add --transport http multi-upload \
https://api.multi-upload-tool.com/mcp \
--header "X-API-Key: YOUR_API_TOKEN"Any client that can call a remote MCP endpoint with a custom header works the same way. Rate limit: 60 calls per minute.
Tools
| Tool | What it does |
|---|---|
list_accounts | Every connected account with its id, platform, name and status. Call it first — the ids feed every other tool. |
get_platform_capabilities | Character limits, daily caps, accepted media and the settings a platform requires, for one platform. |
create_post | Publishes or schedules to one or more accounts, mixing platforms in a single call. |
get_post_status | Where a post stands: queued, scheduled, published (with the platform’s own URL) or failed, with the error. |
list_recent_posts | Recent posts, filterable by account, platform or status — useful to avoid publishing the same thing twice. |
suggest_hashtags | The hashtags you actually use on a platform, plus the ones that would get the post rejected. |
Each platform’s required settings are enforced, not guessed: TikTok needs a privacyLevel, YouTube a title, Pinterest a boardId. get_platform_capabilities returns the exact schema.
Media
create_post takes mediaUrls: up to 10 public http(s) URLs, which we download and attach. Each one must be under 200 MB and publicly reachable.
For anything larger — or for a file that has no public URL at all — presign it first:
POST /api/v1/upload/presignwith{"route": "video", "files": [{...}]}PUTthe file to the signed URL it returns (straight to storage, no size ceiling on the way)create_postwith the returnedbucketUrlinmediaUrls
A URL you presigned yourself is recognised and passed through untouched: the bytes are already in place, so nothing is downloaded again and the 200 MB limit does not apply. See Large File Uploads for the full flow.
An agent with a shell (Claude Code, Codex, Cursor…) can do all three steps on its own — presign, curl -T, publish. Nothing to install beyond the MCP connection above.
Files on your own machine
A tool call carries JSON, never bytes — so a remote server cannot reach the video sitting on your laptop. For that, run the small bridge on your machine instead: it reads the file off disk, sends it straight to storage, and publishes. The assistant only ever handles a file path, never a storage URL.
{
"mcpServers": {
"multi-upload": {
"command": "npx",
"args": ["-y", "multi-upload-tool-mcp"],
"env": { "MULTI_UPLOAD_API_KEY": "YOUR_API_TOKEN" }
}
}
}That is the Claude Desktop / Cursor / Windsurf shape. Claude Code: claude mcp add multi-upload --env MULTI_UPLOAD_API_KEY=YOUR_API_TOKEN -- npx -y multi-upload-tool-mcp. Codex CLI: the same command and env under [mcp_servers.multi-upload] in ~/.codex/config.toml. Requires Node 20+; nothing else to install.
It adds two tools to list_accounts:
| Tool | What it does |
|---|---|
publish_carousel | Up to 35 local JPEG/PNG/WebP images (20 MB each) as a post or carousel. |
publish_video | One local MP4/MOV/WebM/M4V, up to 5 GB. |
“Publie
~/videos/clip.mp4sur ma chaîne YouTube, titre « Mon test », et sur TikTok en privé.”
Errors
A tool that fails returns a normal MCP result with isError: true and a readable message, rather than a protocol error — the assistant reads it and can correct itself. A partially successful create_post reports per account: check every entry in posts before deciding anything was retried safely.