planpo.st
ProductAgentsPricingBlog
Sign inStart free
planpo.st

The social scheduler your agent can run. Seven networks, post analytics, and revenue next to the post that earned it.

Product

  • Scheduler
  • For creators
  • Compare tools
  • Alternatives
  • Pricing

Channels

  • Instagram
  • LinkedIn
  • X (Twitter)
  • Threads
  • Facebook
  • YouTube
  • TikTok
  • All channels

AI agents

  • MCP server
  • For AI agents
  • Claude Code
  • Cursor
  • ChatGPT
  • Gemini CLI
  • All agents

Revenue

  • Revenue tracking
  • Revenue attribution
  • Stripe
  • Shopify
  • RevenueCat
  • All integrations

Resources

  • Docs
  • MCP tools
  • API reference
  • Blog
  • SnapStudio
  • About
  • Support
  • Contact
  • Privacy
  • Terms

Compare planpo.st

  • planpo.st vs Postiz
  • planpo.st vs Buffer
  • planpo.st vs Hootsuite
  • planpo.st vs Later
  • planpo.st vs Sprout Social
  • planpo.st vs SocialBee
  • planpo.st vs Planable
  • planpo.st vs Metricool
  • planpo.st vs Loomly
  • planpo.st vs Publer
  • planpo.st vs Post Bridge
  • planpo.st vs Mixpost
  • planpo.st vs Blotato
  • planpo.st vs Typefully
  • planpo.st vs RecurPost
  • planpo.st vs Post Planner
  • All comparisons
  • Alternatives
© 2026 planpo.st. All rights reserved.
  1. Home
  2. /AI agents
  3. /Cursor

Ship the feature, then let Cursor post about it.

The best time to write about a feature is the moment you finish it, and the worst place to do that is a browser tab with seven half-filled compose boxes. If you build in Cursor, the fix is one MCP entry: planpo.st becomes a set of tools your agent can call mid-session.

Start freeRead the setup guide

Free plan, no card: 2 accounts, 30 posts a month, your agent included. X needs a paid plan.

Connect Cursor

Sign in, no key

{
  "mcpServers": {
    "planpost": { "url": "https://mcp.planpo.st/mcp" }
  }
}

Global: ~/.cursor/mcp.json; per project: .cursor/mcp.json

You 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.

What is Cursor?

Cursor's agent already knows what changed, it has the diff in front of it. Handing it a scheduler means the announcement gets drafted while the context is still warm. Links in posts are tracked, so on Pro you can see later whether that announcement sold anything.

Cursor is the AI code editor built on VS Code, and its agent mode has first-class MCP support with a JSON config per project or global. It is where a lot of indie products get built, which makes it a natural place for those products to get announced too.

What can you ask Cursor to do in planpo.st?

Plain requests work. Each one below is something you could send today, and what happens next.

Announce what you just merged

You say

Summarize this PR for a non-technical audience and schedule it as a post on X and LinkedIn tomorrow morning, link to the changelog.

What happens

The agent writes two versions sized to each network, the LinkedIn one with the changelog link and the X one without, since planpo.st keeps links off X, and calls create_post with a morning slot. Both carry a description that matches the diff, because the agent read the actual code.

Keep a launch thread honest

You say

Draft a 5-post X thread about how we built the export feature, using the actual file names and numbers from this repo, schedule for Saturday.

What happens

Threads are a native post type on planpo.st, so the agent creates one thread with five segments, real details from the codebase and no link, since X posts go out without one. Saturday morning it goes out as a proper thread, not five loose posts.

See what went out and what failed

You say

Did everything I scheduled this week go out? Fix what failed.

What happens

get_delivery_report lists the posts that failed or partly failed, with each network's error and the fix. retry_failed sends again the ones that failed for a passing reason, such as a rate limit, and the agent tells you which ones need you, such as an account to reconnect.

Announce from the diff, held for sign-off

You say

Write a LinkedIn post about this branch and submit it for approval. Do not schedule it yourself.

What happens

create_post saves a draft and submit_for_approval returns an approve link plus an approval ID. Cursor can poll get_approval_status, and the post is scheduled only after a person approves.

A follow-up as a reply on X

You say

Write a follow-up to my launch post on X as a reply, with the one detail people asked about.

What happens

get_post returns the launch post with its X ID, and create_post with platformSettings.twitter.replyToId publishes the follow-up as a reply. It goes through the same 280-character and no-link checks, and waits for your approval if you turned that on.

Move a campaign when the release slips

You say

The release moved a week. Push every scheduled post in the v2-launch campaign by seven days.

What happens

list_posts filters by campaign, and update_post takes a schedule of "next week same time" for each one, anchored on the time it already had.

Which networks can Cursor post to?

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.

Cursor to Threads

Short posts, 500 characters, one image or video, clickable links.

A Threads post is small enough to write between two edits. Cursor's agent takes the thing you just changed and says it in 500 characters or fewer.

Cursor to LinkedIn

Profile or company page, 3,000 characters, up to 9 images or one video.

Cursor already has the code and the PR description, which is most of a LinkedIn post about what you built. Ask for a first-person version for your profile and another for the company page, each on its own connection.

Cursor to Instagram

Feed posts, carousels up to 10, Reels and Stories. Media on every post.

Instagram from a code editor sounds odd until you remember it only needs an image. Cursor uploads the screenshot from the workspace, writes the caption from the change you just made and schedules it.

Cursor to X

Posts and threads, 280 characters, images or video, no links.

You finish a feature in Cursor and the announcement is one prompt away in the same window. The diff is the source, and the X copy comes back without links because the API would reject them.

Cursor to Facebook

Page posts with link cards, photo sets, video and Reels.

Useful when the project has a Facebook Page you would otherwise forget. Cursor posts the changelog entry with its link and the Page gets a preview card without you opening Facebook.

Cursor to YouTube

Video uploads and Shorts with title, description, tags and visibility.

Screen recordings of a feature tend to live in the project folder. Cursor's agent uploads one from the workspace and fills in title, description and tags from the code it just wrote.

Cursor to TikTok

Video posts, 2,200 character captions, a privacy level on every post.

Short product clips from a build log work on TikTok. Cursor uploads the vertical file from the workspace and sets the privacy level TikTok insists on.

Which tools does Cursor get?

The same list on the hosted and the local server. Grouped by the job they do, with the ones Cursor reaches for most:

JobToolsWhat that covers
Posts and schedulingcreate_post, bulk_create_posts, update_post, preview_post, get_best_times, suggest_scheduleDraft, 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 failedlist_posts, get_post, list_campaigns, get_delivery_report, retry_failed, list_pending_approvalsFilter 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.
Analyticsget_analyticsImpressions, likes, comments and shares for published posts, on Creator and Pro.
Revenueget_revenue_overviewRevenue totals, conversions and the trend from Stripe, Shopify or RevenueCat, on Creator and Pro. Revenue next to each post is on Pro.
Accountslist_connections, get_connection_link, list_account_groups, get_account_groupFind 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.

How do I stop Cursor from publishing something I have not read?

Turn on approval. By default Cursor'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. Cursor 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 Cursor read the calendar and the numbers and change nothing.

What happens when Cursor writes a post a network would reject?

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. Cursor 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.

Can Cursor tell me which posts made money?

Partly, and the rest is in the app. Cursor 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.

How revenue attribution works

How do I connect Cursor to planpo.st?

It takes about a minute. The AI code editor. Config is per project or global. 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.

Config location: Global: ~/.cursor/mcp.json; per project: .cursor/mcp.json

Sign in, no key
{
  "mcpServers": {
    "planpost": { "url": "https://mcp.planpo.st/mcp" }
  }
}
Hosted
{
  "mcpServers": {
    "planpost": {
      "url": "https://mcp.planpo.st/mcp",
      "headers": { "Authorization": "Bearer pk_live_xxx" }
    }
  }
}
Local
{
  "mcpServers": {
    "planpost": {
      "command": "npx",
      "args": ["-y", "planpost-mcp"],
      "env": { "PLANPOST_API_KEY": "pk_live_xxx" }
    }
  }
}
  • A project-level .cursor/mcp.json is committed with your repo. The sign-in entry holds only the URL, so it is safe there; with an API key, keep the key in the global file or an environment variable instead.

Which way should I connect Cursor: hosted or local?

For Cursor I would use the hosted sign-in entry in the global config. It holds no key, and if you ever switch to a key, remember the per project file is committed with the repo, and a key in git history is the mistake that is hard to undo. Use local when the team already runs MCP servers through npx and wants one pattern for all of them.

QuestionHosted HTTPLocal npm (stdio)
What it isStreamable HTTP to https://mcp.planpo.st/mcpThe planpost-mcp npm package over stdio, started with npx
What you installNothingNode 18 or newer. npx fetches the package
How it signs inYou sign in to planpo.st in the browser, or send an API key in a headerAn API key in an environment variable on your machine
Tools you getAll of them; signed in, all but image generationAll of them, the same list
UpdatesServer side, nothing to doTied to the package version npx has cached
Choose it whenYou want it working in a minuteThe key should stay in your own environment

Both reach the same tools, so switching later is a config change and nothing else. The Cursor setup guide has every variant.

Frequently asked questions

Project config or global config?
Global (~/.cursor/mcp.json) fits most people. A project-level .cursor/mcp.json gets committed with the repo. The sign-in entry holds only the URL, so it is safe there; if you use an API key instead, keep it out of a tracked file.
Can it post without asking me?
Cursor shows tool calls before running them. On the planpo.st side its posts go out at the time it sets, unless you turn on approval when you connect it or later on the Agent page; then every post waits for you. Cursor cannot change that setting itself.
What about media?
upload_media takes images and video from your machine, and list_media reuses files you already uploaded. On X a post takes up to 4 images, or one video or GIF on its own.
Does this work with Cursor's background agents?
Anything that runs with your Cursor MCP config can call the tools. The practical pattern is an agent that finishes a task, then queues the announcement as a draft for you to approve.

Keep going

Other agents

Claude CodeClaude DesktopChatGPTGemini CLIAll agentsThe MCP server

What Cursor can reach

Cursor to ThreadsCursor to LinkedInCursor to InstagramCursor to XCursor to FacebookCursor to YouTubeCursor to TikTokThe 7 networksPayment integrationsRevenue attribution

Connect Cursor and plan next week.

Start freeRead the setup guide

Free plan, no card: 2 accounts, 30 posts a month, your agent included. X needs a paid plan.