For agent builders
yeetpost for AI agents
Your agent should not need a posting integration. Point it at the hosted MCP server and it gets five tools, three platforms and a sandbox to make its mistakes in.
#Why an agent wants this
Posting to a social platform normally means an OAuth app, a token refresh loop and a different API per platform. None of that is work an agent can do at runtime, so it ends up as glue code you write and maintain. yeetpost moves the account connection into a dashboard you visit once, and leaves the agent with slugs.
Five tools
Small enough that an agent can hold the whole surface in context and still do its actual job.
No glue code
One config block, no SDK, no OAuth in your app. LinkedIn, X and Bluesky are the same tool call with a different slug.
A sandbox
A test key reaches sandbox connections and nothing else, so a loose agent cannot post to a real account.
#Connect a client
The server speaks Streamable HTTP at POST https://api.yeetpost.com/api/v2/mcp and authenticates with the same API key as the REST API, in either Authorization: Bearer or x-api-key. Grab a key from the API page.
claude mcp add --transport http \
--header "Authorization: Bearer $YEETPOST_API_KEY" \
yeetpost https://api.yeetpost.com/api/v2/mcpCursor reads a mcp.json, either .cursor/mcp.json in the project or ~/.cursor/mcp.json for every project:
{
"mcpServers": {
"yeetpost": {
"url": "https://api.yeetpost.com/api/v2/mcp",
"headers": {
"Authorization": "Bearer yp_secret_your_key_here"
}
}
}
}Any other MCP client takes the same three facts, usually in this shape. If your client wants the transport named, it is http, sometimes spelled streamable-http:
{
"mcpServers": {
"yeetpost": {
"type": "http",
"url": "https://api.yeetpost.com/api/v2/mcp",
"headers": {
"Authorization": "Bearer yp_secret_your_key_here"
}
}
}
}#The five tools
The accounts and channels available, with their slugs.
Posts text to connectionSlugs[], now or at scheduledFor. Returns a result per connection.
Recent posts, with an optional status filter and limit.
One post by postId.
Cancels a scheduled post by postId.
Tool arguments use the same camelCase names as the JSON endpoints: text, connectionSlugs, scheduledFor, postId, status, limit. A single connection failing comes back as a failed item rather than a tool error, so an agent can report which platform bounced and carry on. The full behaviour is on the MCP docs page.
#Develop against the sandbox
Add a sandbox connection in the dashboard and create a test key in settings. Test keys start with yp_test_ instead of yp_secret_. A sandbox connection takes posts, validates them, stores them, returns the shapes a real platform returns and fires the same webhooks, and publishes nothing. It is free and never counts toward your plan.
To exercise the failure path, start the text with [fail]: the sandbox answers 422 platform_rejected, stores the post with that error and fires post.failed.
#No MCP client? Use the REST API
MCP is a convenience, not a requirement. The same account posts to the same platforms over plain HTTP, which is often the shorter path for a framework that already has its own tool abstraction.
curl -X POST https://api.yeetpost.com/api/v2/posts \
-H "x-api-key: $YEETPOST_API_KEY" \
-H "content-type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"text": "shipped the new api docs today",
"connectionSlugs": ["linkedin", "bluesky"]
}'An Idempotency-Key makes a retry safe, which matters more with an agent than with a cron job: a retried tool call should not post twice. Every endpoint is in the API reference, and the spec at https://api.yeetpost.com/api/v2/openapi.json needs no key, so an agent can read it before it has one.