yeetpostyeetpost

How to post to social media from Claude (MCP setup in 2 minutes)

October 29, 2026

Claude can post to your social accounts if you give it an MCP server that knows how. yeetpost runs one. You connect your accounts once in the dashboard, add the server to Claude, and from then on a sentence like "post this to my LinkedIn" is enough.

This is the setup, in the two places most people use Claude, followed by a first run that cannot post anything by accident.

#Before you start

You need three things:

  1. A yeetpost account with at least one connected account. Connect one at app.yeetpost.com. The six live platforms are LinkedIn, X, Bluesky, Discord, Telegram and Mastodon.
  2. An API key, if you use Claude Code. Your first key is created when you sign up, and the API page in the dashboard shows it.
  3. Claude Code, or claude.ai with custom connectors available to you.

The MCP server lives at https://api.yeetpost.com/api/v2/mcp and speaks Streamable HTTP.

#Claude Code: one command

Claude Code adds remote servers with claude mcp add --transport http, and passes headers with --header. This syntax is from the Claude Code MCP docs, as of October 2026:

claude mcp add --transport http \
  --header 'Authorization: Bearer ${YEETPOST_API_KEY}' \
  yeetpost https://api.yeetpost.com/api/v2/mcp

Quote the header, since it contains a space, and use single quotes: they pass ${YEETPOST_API_KEY} through as written, and Claude Code reads the key from your environment each time it starts, so it never lands in ~/.claude.json. The command does not check your key, so a wrong key is only found when Claude first uses the server. Run /mcp inside Claude Code to see whether the server is connected.

By default the server is added with local scope, so it loads only in the current project. To have it in every project, add --scope user:

claude mcp add --transport http --scope user \
  --header 'Authorization: Bearer ${YEETPOST_API_KEY}' \
  yeetpost https://api.yeetpost.com/api/v2/mcp

Project scope writes the server into .mcp.json, which is checked into version control. Do not put a literal key in that file. Use scope local or user and keep the key out of the repository.

Any other MCP client that takes a URL and a header works the same way. yeetpost accepts the key as Authorization: Bearer <key> or x-api-key.

#claude.ai: a custom connector, no key

Some clients cannot hold a secret, claude.ai among them. For those, yeetpost's MCP endpoint also accepts an OAuth login. Add https://api.yeetpost.com/api/v2/mcp as a custom connector and leave the key out. Claude finds the rest on its own:

  1. It calls the endpoint with no token and gets a 401 that points at the OAuth metadata.
  2. It registers itself with yeetpost.
  3. It opens a consent screen in your browser. You log in, choose whether the app reaches your whole account or one profile, choose live or test mode, and approve.
  4. It gets an access token good for an hour and a refresh token good for 30 days. Refresh tokens rotate each time they are used.

You can see the apps you have approved on the MCP screen in the dashboard, and revoking one kills its tokens at its next request. The Claude Code docs note that connectors you set up in claude.ai are also available in Claude Code, and can be managed at claude.ai/customize/connectors.

#A first run that posts nothing

Do not start with "post this". Start by letting Claude look around. Try:

Call get_context and tell me what you can do. Then list my connections.

get_context is the tool meant to be called first. It says which account the key acts as, whether it is live or test mode, the plan, what is left of today's and this month's allowance, and an attention list for anything that needs fixing, such as an expired login. Claude should report each item before it posts.

list_connections then returns the slugs you can post to, for example linkedin, x and bluesky.

Next, ask for a draft:

Write a post announcing our v2.4 release for my LinkedIn. Save it as a draft, do not publish.

Claude calls get_brand to read the voice and look set for that connection, writes the post and calls create_post with isDraft: true. A draft is stored against the connection and publishes nothing. It also reserves nothing: no usage, no fair-use slot, no X fee, no webhook.

Read it, then say:

Publish the draft.

Claude calls publish_draft, which sends it now, or at a time you give it, or into the next queue slot.

#What you can ask for

The tools cover the whole loop, so these all work:

If something fails, the tool answers with isError, a stable error code, a message that says the fix and a reqId to quote. One connection failing in a multi-platform post is a failed item in the results, not an error for the whole call. Claude can read it and retry just that one with retry_post.

#Keep it safe

An agent that can post can post wrongly, so set the boundaries before you rely on it.

#Where to go next

The MCP docs list every tool with its arguments. The earlier walkthrough, post from Claude Code in 90 seconds, uses the plugin route. For a checklist of what an agent-facing posting API needs, read social media API for AI agents. The REST version of everything here is in the docs.