I live in Claude Code most of the day, and planpo.st started as the thing I wanted from there: a way to say "plan next week" and have real posts land on a real calendar, without opening a browser and filling forms.
Free plan, no card: 2 accounts, 30 posts a month, your agent included. X needs a paid plan.
Connect Claude Code
Sign in, no key
claude mcp add --transport http planpost https://mcp.planpo.st/mcp
# then, inside Claude Code: /mcp -> planpost -> AuthenticateYou sign in, there is no key to paste. Its posts go out at the time the agent sets, unless you turn on approval when you connect.
The connection is MCP: one command, then you sign in to planpo.st in the browser, with no key to paste. After that Claude Code can draft posts, schedule them per network, see what is queued and what failed, and read your analytics and revenue. Its posts go out at the time it sets, or wait for your approval if you turn that on.
Claude Code is Anthropic's coding agent for the terminal and IDEs. It reads your repo, runs commands, and connects to MCP servers, which is what makes this pairing work: your codebase and your social calendar end up in the same conversation.
Plain requests work. Each one below is something you could send today, and what happens next.
You say
Look at the commits since Monday, pick the three most interesting changes, and schedule a post about each on X and LinkedIn next week, morning slots.
What happens
Claude Code reads the git log it already has access to, drafts three posts per network in the right length (280 characters for X, longer for LinkedIn), calls create_post for each with per-platform text, and books them into suggest_schedule slots. You review the queue in the dashboard or ask the agent to read it back.
You say
How much revenue came in this month, and how does it compare with last month?
What happens
The agent calls get_revenue_overview and answers with the total, the number of conversions and the change from last month, read from the Stripe, Shopify or RevenueCat account you connected. Revenue totals are on Creator and Pro; on Pro the Revenue screen also shows which post each payment came from.
You say
Take the article I just merged in content/posts/pricing-mistakes and write an X thread and a LinkedIn post from it, both for Thursday 9am.
What happens
Claude Code reads the file, writes a thread for X without a link (planpo.st keeps links off X) and a longer LinkedIn post that links to the article, and calls create_post for each. Both go out on Thursday, or wait for your approval first if you turned that on.
You say
Preview the launch post and tell me what each network will receive.
What happens
preview_post returns, per network, the text after overrides, the character count against the limit, whether links are clickable, the attachments and any warnings. Claude Code reads it back and fixes what is wrong with update_post.
You say
Create a post for each markdown file in content/social, tag them all spring-launch, and spread them over the next two weeks.
What happens
One bulk_create_posts call with up to 50 rows and the shared fields in defaults. Rows are independent, so a bad one fails alone and the result lists each post with its ID and warnings.
You say
Delete every draft in the spring-launch campaign.
What happens
delete_posts runs as a dry run first and shows what matches. Claude Code shows you the list, and only a second call with confirm set to true deletes anything. Published posts are never touched.
All 7 that planpo.st publishes to. Each network has its own rules, and each pairing has its own page with the settings table, three prompts and the limits that stop a post.
Short posts, 500 characters, one image or video, clickable links.
Threads suits the small daily note. Claude Code pulls one detail from today's work, keeps it under 500 characters and queues it while you stay in the terminal.
Profile or company page, 3,000 characters, up to 9 images or one video.
Good for the longer write-up of something you shipped. Claude Code reads the pull request, writes up to 3,000 characters on what changed and why, and schedules it for your profile or the company page.
Feed posts, carousels up to 10, Reels and Stories. Media on every post.
Instagram wants an image or video on every post, so from Claude Code the usual route is a file on disk uploaded with one shell command, or a few of them posted as one carousel.
Posts and threads, 280 characters, images or video, no links.
This is the pairing I use most. The repo is already open, so the post about a release is written from the commits that made it, and because planpo.st sends no links to X, Claude Code writes copy that stands without a URL.
Page posts with link cards, photo sets, video and Reels.
For a product Page this is the low-effort channel. Claude Code posts the release note with its link, and Facebook turns the first URL into the preview card.
Video uploads and Shorts with title, description, tags and visibility.
If your demo recordings sit in the repo or a folder beside it, Claude Code uploads the file, writes a title inside 100 characters and a description from the README, and schedules it.
Video posts, 2,200 character captions, a privacy level on every post.
TikTok takes video only and wants a privacy choice on each post. Claude Code is good at the batch version: a folder of clips, one manifest, the same privacy level on every row.
The same list on the hosted and the local server. Grouped by the job they do, with the ones Claude Code reaches for most:
| Job | Tools | What that covers |
|---|---|---|
| Posts and scheduling | create_post, bulk_create_posts, update_post, preview_post, get_best_times, suggest_schedule | Draft, schedule and reschedule, one post or up to 50 in a call. Each network can get its own text, media and settings, and every post can wait for your approval if you turn that on. |
| What is queued and what failed | list_posts, get_post, list_campaigns, get_delivery_report, retry_failed, list_pending_approvals | Filter the queue by status, network or campaign. Failed posts come back with the error and the fix, and a passing failure can be sent again. |
| Analytics | get_analytics | Impressions, likes, comments and shares for published posts, on Creator and Pro. |
| Revenue | get_revenue_overview | Revenue totals, conversions and the trend from Stripe, Shopify or RevenueCat, on Creator and Pro. Revenue next to each post is on Pro. |
| Accounts | list_connections, get_connection_link, list_account_groups, get_account_group | Find the accounts to post to, and hand you the link to connect a new one. |
Every tool with its description is in the MCP tool reference.
Turn on approval. By default Claude Code's posts go out at the time it sets. Switch on “Ask me before anything goes live” when you connect it, or any time on the Agent page, and every post it writes waits in Posts, under In review, until you approve it. With an API key, the switch is “Require approval before publishing”, in the key's row on the Agent page. Claude Code cannot change either setting itself.
Ask for drafts, if you want less than that. A post created without a time is a draft, and nothing leaves planpo.st until it is scheduled.
Scope the key. With an API key, permissions such as posts:read and posts:write decide what it can touch, so a key without posts:write lets Claude Code read the calendar and the numbers and change nothing.
It finds out when the post is created, not two weeks later when the slot arrives. Every post is checked against the rules of each network it targets: character limits, required media, the X rule against links, a TikTok privacy level, a connection that has lapsed.
A post that breaks one is saved as a draft and the tool result lists each issue with a code, the network and the fix in words. Claude Code reads that, corrects the post with update_post, and it goes back on the schedule. Softer problems, such as a caption link that will not be clickable on Instagram or a missing YouTube title, come back as warnings and do not block anything.
When a post reaches some of its networks and fails on one, its status is partially_published, with a result per network, so a post is never reported as published while one network refused it.
Partly, and the rest is in the app. Claude Code can read your revenue totals, the conversions and the trend through get_revenue_overview, on Creator and Pro. Which post each payment came from is on Pro, on the app's Revenue screen: links in your posts are tracked, and a payment from Stripe, Shopify or RevenueCat that follows a click is matched to the post that caused it.
It takes about a minute. Anthropic's terminal and IDE agent. The quickest client to set up. No API key is needed: add the hosted endpoint and sign in to planpo.st when the browser opens. With a key instead, add the server, hosted or local, and the tools appear.
claude mcp add --transport http planpost https://mcp.planpo.st/mcp
# then, inside Claude Code: /mcp -> planpost -> Authenticateclaude mcp add --transport http planpost https://mcp.planpo.st/mcp \
--header "Authorization: Bearer pk_live_xxx"claude mcp add planpost -e PLANPOST_API_KEY=pk_live_xxx -- npx -y planpost-mcpFor Claude Code I use the hosted one with sign-in. It is a single command, there is no key to keep anywhere, nothing to keep updated, and a new tool on the server shows up the next time Claude Code starts. Pick local when a policy says the key must not leave the machine in a config that points at someone else's server.
| Question | Hosted HTTP | Local npm (stdio) |
|---|---|---|
| What it is | Streamable HTTP to https://mcp.planpo.st/mcp | The planpost-mcp npm package over stdio, started with npx |
| What you install | Nothing | Node 18 or newer. npx fetches the package |
| How it signs in | You sign in to planpo.st in the browser, or send an API key in a header | An API key in an environment variable on your machine |
| Tools you get | All of them; signed in, all but image generation | All of them, the same list |
| Updates | Server side, nothing to do | Tied to the package version npx has cached |
| Choose it when | You want it working in a minute | The key should stay in your own environment |
Both reach the same tools, so switching later is a config change and nothing else. The Claude Code setup guide has every variant.
Free plan, no card: 2 accounts, 30 posts a month, your agent included. X needs a paid plan.