Antigravity's whole idea is agents that work while you watch from a manager view, and social posting is exactly the kind of task worth delegating that way: important enough to do every week, boring enough that you never want to do it by hand.
Free plan, no card: 2 accounts, 30 posts a month, your agent included. X needs a paid plan.
Connect Google Antigravity
Local, in mcp_config.json
{
"mcpServers": {
"planpost": {
"command": "npx",
"args": ["-y", "planpost-mcp"],
"env": { "PLANPOST_API_KEY": "${PLANPOST_API_KEY}" }
}
}
}Shared: ~/.gemini/config/mcp_config.json; per workspace: .agents/mcp_config.json
Create an API key on the Agent page in planpo.st and put it where the config says. Its posts go out at the time the agent sets, unless you turn on approval for the key.
planpo.st plugs in as an MCP server, one entry in the shared config. Since Antigravity 2.x the IDE, the agy CLI and the SDK read the same file, so you configure once and every surface can schedule posts.
Antigravity is Google's agentic development platform, an IDE and CLI built around autonomous agents on the Gemini models. It ships an MCP Store for one-click servers plus a raw config for custom ones, which is where planpo.st goes today.
Plain requests work. Each one below is something you could send today, and what happens next.
You say
When you finish the migration task, draft a post about the new feature for X and LinkedIn and put both in my approval queue.
What happens
The agent finishes its coding task, then calls create_post and submit_for_approval. You approve, the posts go out (X without a link, LinkedIn with one), and the feature announcement never gets forgotten in the shipping rush.
You say
You are my posting agent. Every Monday, read content-plan.md and fill the week on LinkedIn and Threads at the best times, drafts only.
What happens
One agent in the fleet owns the calendar. get_best_times picks slots, create_post fills them as drafts, and your Monday starts with a review instead of a blank week.
You say
Summarize last month: what went out, how it did, and the revenue total.
What happens
list_posts returns what was published, get_analytics how each post did, and get_revenue_overview the month's revenue and its change from the month before. The agent writes the summary from those three.
You say
What is waiting for my approval?
What happens
list_pending_approvals returns the queue with each post's text and its approve link. The agents that drafted them can check get_approval_status and move on once a decision is in.
You say
Give the Polish Pages group its own slots: every day at 07:00 and 19:00.
What happens
set_posting_schedule with the group's ID replaces that group's queue and leaves the global one alone. An empty list puts the group back on the global schedule.
You say
Find the product screenshots I uploaded last week and build a LinkedIn post around them.
What happens
list_media searches the library by filename and type and returns items shaped for create_post, so nothing is uploaded twice.
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.
A background agent can keep a Threads account alive with one short post per finished task, each inside 500 characters.
Profile or company page, 3,000 characters, up to 9 images or one video.
Give one agent the job of writing up finished work for LinkedIn while another keeps building. The write-up lands as a draft for you to read.
Feed posts, carousels up to 10, Reels and Stories. Media on every post.
An Antigravity agent uploads the screenshots from the workspace and schedules them to Instagram as part of the same task that produced them.
Posts and threads, 280 characters, images or video, no links.
Antigravity runs agents on longer tasks, and the last step of a task can be the X post about it, written without links.
Page posts with link cards, photo sets, video and Reels.
Hand an agent the Page. It schedules the update when the task closes, with the link to whatever shipped.
Video uploads and Shorts with title, description, tags and visibility.
An agent with the workspace open can upload the recording of what it built and write the YouTube title and description to go with it.
Video posts, 2,200 character captions, a privacy level on every post.
An agent uploads a clip from the workspace and schedules it, provided the task says who can view the video.
The same list on the hosted and the local server. Grouped by the job they do, with the ones Google Antigravity 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 Google Antigravity'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. Google Antigravity 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 Google Antigravity 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. Google Antigravity 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. Google Antigravity 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. Google's agentic IDE and CLI. Since 2.x the IDE, the agy CLI and the SDK read one shared MCP config. Create an API key on the Agent page in planpo.st, add the server with the local command and the tools appear.
Config location: Shared: ~/.gemini/config/mcp_config.json; per workspace: .agents/mcp_config.json
{
"mcpServers": {
"planpost": {
"command": "npx",
"args": ["-y", "planpost-mcp"],
"env": { "PLANPOST_API_KEY": "${PLANPOST_API_KEY}" }
}
}
}For Antigravity the tested route is the local server in mcp_config.json, with the key substituted from the environment. One entry covers the IDE, the agy CLI and the SDK, because all three read the same file.
| Question | Hosted HTTP | Local npm (stdio) |
|---|---|---|
| What it is | Not available in Google Antigravity | The planpost-mcp npm package over stdio, started with npx |
| What you install | Not available in Google Antigravity | Node 18 or newer. npx fetches the package |
| How it signs in | Not available in Google Antigravity | An API key in an environment variable on your machine |
| Tools you get | Not available in Google Antigravity | All of them, the same list |
| Updates | Not available in Google Antigravity | Tied to the package version npx has cached |
| Choose it when | Not available in Google Antigravity | The key should stay in your own environment |
Both reach the same tools, so switching later is a config change and nothing else. The Google Antigravity setup guide has every variant.
Free plan, no card: 2 accounts, 30 posts a month, your agent included. X needs a paid plan.