MCP quickstart: schedule social posts from Claude Code
Connect the Turboyap MCP server to Claude Code or Cursor and let your agent upload slides, preview each platform's version, and schedule posts to TikTok and Instagram. Start with a test key.
Early access: the MCP server is built and being tested. @turboyap/mcp isn’t published to npm yet, so the npx commands below work once it is. Ask for early access to hear first.
The Turboyap MCP server runs on your machine, so your agent can upload files straight from disk, including a whole folder of slides. You need a Turboyap agent key. Start with a test key (ty_agent_test_…): it runs the whole flow against simulated accounts and never posts anywhere real. Switch to a live agent key (ty_agent_…) when you’re ready.
Claude Code
claude mcp add turboyap -e TURBOYAP_API_KEY=ty_agent_test_… -- npx -y @turboyap/mcp
Cursor and other MCP clients
{
"mcpServers": {
"turboyap": {
"command": "npx",
"args": ["-y", "@turboyap/mcp"],
"env": { "TURBOYAP_API_KEY": "ty_agent_test_…" }
}
}
}
The server reads TURBOYAP_API_KEY, plus an optional TURBOYAP_API_URL that defaults to https://api.turboyap.com.
With a test key, create test accounts first
A test key only sees test accounts, and the MCP server has no tool that creates them. Create a simulated TikTok and Instagram account once, with the same key:
for platform in tiktok instagram; do
curl https://api.turboyap.com/v1/accounts/test \
-H "Authorization: Bearer ty_agent_test_…" \
-H "Content-Type: application/json" \
-d "{\"platform\": \"$platform\"}"
done
They start on autonomy level 1, like real accounts, so your agent’s posts wait for approval. Approve them with your human test key (ty_human_test_…), as the test mode quickstart shows.
Try it
Ask your agent something like:
Upload the slides in ~/content/icecream and schedule them to our TikTok and Instagram for Tuesday 6pm ET. Dry-run first and fix anything Instagram can’t take.
The agent works through the tools in this order:
list_accountsfinds your connected accounts and their autonomy level.get_platform_rulesreads slide limits, formats and aspect ratios.upload_mediauploads the folder in natural filename order (slide-2beforeslide-10).create_postwithdry_run: trueshows what each platform will get, plus every problem with a fix.create_postapplies the fixes, for examplefit: { overflow: "truncate", aspect: "pad" }, and schedules.get_postreports each account’s status and anext_stepto relay to you.
Tools
| Tool | What it does |
|---|---|
get_workspace |
Workspace, kill-switch state, and this key’s type, mode, scopes, account allowlist and can summary |
list_accounts |
Connected accounts, ids, autonomy levels |
get_platform_rules |
Limits per platform and post type |
upload_media |
Upload files, folders, or URLs; returns media ids in order |
create_post |
Preview (dry_run), save a draft, or schedule. Idempotent with idempotency_key |
list_posts / get_post |
Status per account, post URLs once published, errors with fixes |
update_post |
Reschedule or re-caption before publishing |
cancel_post |
Cancel before publishing |
Agents can’t approve posts. On accounts set to autonomy level 1, agent posts wait for a human; see the autonomy dial.
Scopes
Agent keys default to read, draft and schedule. They can schedule a future time but not publish with "now", and a key without schedule saves drafts (no schedule_at) for a human to schedule. A key can also be limited to some accounts. When a call fails with insufficient_scope or account_not_allowed, the agent can call get_workspace to see what its key may do.
Every post records which agent made it
The MCP server sends an X-Turboyap-Client header with every call, filled in from the name and version your MCP client reports when it connects, or turboyap-mcp if it reports none. Turboyap stores it in each post’s created_by.client and in the audit log, so you can tell which agent made a post.
Errors are written for agents
Every error includes a code, the field that caused it, and a fix:
{
"error": {
"code": "too_many_items",
"message": "instagram allows 10 slides per post; got 12.",
"field": "media_ids",
"fix": "Set fit.overflow to \"truncate\" to post the first 10, or pass targets[1].media_ids with your best 10 slides (keep your call-to-action slide)."
}
}
Agents apply the fix and retry without asking you, unless the fix needs a human (like reconnecting an account).
This page as markdown: /docs/mcp-quickstart.md. All docs for LLMs: /llms.txt and /llms-full.txt.