Your agent schedules the posts for you
Your agent writes the post, uploads the image and finds a time for it. You review and approve it in the Postemi calendar before it goes out.
Install the Postemi CLI: npm install -g posty-cli, then log in: posty auth:login. The package SKILL.md file describes every command, details: https://postemi.com/ai
Four commands, and it runs
You install, sign in, list the connected accounts, then schedule the first post. Your agent runs the same commands.
# The Postemi command-line tool$ npm install -g posty-cli# Sign in: approve in the browser$ posty auth:login# Which social accounts are connected?$ posty integrations:list[{ "id": "cmf3k7…", "name": "Cafe · Instagram" }]# The first scheduled post$ posty posts:create \$ -c "New brunch menu this Saturday." \$ -i "cmf3k7…" \$ -s "2026-08-16 09:00" --timezone Europe/Budapest✅ Post created successfully!{ "id": "cmf7p2…", "state": "QUEUE" }
The CLI writes the JSON response to stdout, and status and errors to stderr. On failure it exits with a non-zero code. That way the agent knows whether it worked.
Three ways in, one Postemi account
Want to chat? MCP. Want to script? CLI. Want to integrate? REST API. All three work today.
Live MCP server
Your agent connects to https://api.posty.hu/mcp, and from then on it sees the same Postemi account you do. You create the key on the Automations → Developers page.
Published command-line tool
Install with: npm install -g posty-cli. The command name is posty.
Public REST API
The REST API is at api.posty.hu. It handles the same account as MCP and the CLI, just from your own code.
No training needed
SKILL.md ships in the npm package. The agent reads the real commands and flags from it, so you do not have to explain them.
The calendar is where you approve
The agent prepares and schedules. You have the last word before anything publishes. In the calendar you edit, reschedule or delete what you do not want.
You keep your own model
Postemi has no built-in AI writer, on purpose. You work with the model you already use. Postemi handles the publishing.
From accounts to approval
You set up the connection once. After that your agent does the work, and you decide in the calendar.
Connect your accounts
On the Postemi web app, you connect your social accounts with the usual OAuth flow. The agent later works with those accounts and refers to them by id.
$ posty integrations:list[{ "id": "cmf3k7…", "name": "Cafe · Instagram" },{ "id": "cmf3k9…", "name": "Cafe · Facebook" }]
Create a key
Automations → Developers. Chat clients need an MCP key. The CLI and the REST API need an API key. We show the key once, when you create it.
# Automations → Developers → New key# We show the key once, when you create it. # For the command line and the REST API:POSTY_API_KEY=YOUR_API_KEY # MCP clients get a separate key:# psty_mcp_…Hand it to the agent
Chat clients only need a URL. Terminal clients need a command or a config block. On the Developers page you pick the client and copy the ready-made setup.
# Browser assistant (ChatGPT, Claude app):# it only asks for this one address:https://api.posty.hu/mcp/YOUR_API_KEY # Claude Code:claude mcp add posty --transport http \ "https://api.posty.hu/mcp/YOUR_API_KEY" # Codex, ~/.codex/config.toml:[mcp_servers.posty]url = "https://api.posty.hu/mcp/YOUR_API_KEY"Review it, then it can go
The agent puts the posts in the calendar. You go through them, fix what needs fixing, and only leave what can actually go out.
$ posty posts:list[{ "id": "cmf7p2…", "state": "QUEUE","publishDate": "2026-08-16T07:00:00Z" },{ "id": "cmf7q8…", "state": "DRAFT","publishDate": "2026-08-18T06:30:00Z" }]
Predictable input, a clear response
The agent does not have to fuss with the web UI. It gets a structured response, and it reaches the same account three ways.
- Machine-readable JSONEvery command writes the JSON response to stdout, so the agent can parse it directly.
- An error is really an errorThe CLI writes status and errors to stderr. On failure it exits with a non-zero code.
- Skill file in the packageSKILL.md shows the available commands, the flags and the two rules you cannot skip.
- A flat command setNo hidden state, and no step to guess: the agent works from a clear list.
- Three ways to the same placeMCP for the conversation, CLI for scripts, REST API for your own code: the same account.
---name: postydescription: Posty schedules and publishes social posts from the command line.homepage: https://posty.hu--- # Output contract Every command prints its JSON result, and nothingelse, to stdout; status lines, warnings and errorsgo to stderr, and every failure exits 1. # Two Hard Rules (Read First) Rule 1: Authenticate before anything.Rule 2: Every file passed to `-m` MUST first gothrough `posty upload`.SKILL.md is part of the npm package. The agent reads the exact CLI usage from it: no extra training, and no invented flags.
The same Postemi, several agents
Each one has its own page with the exact setup. If yours is not among them, that is fine: Postemi uses a standard MCP server.
ChatGPT
You add Postemi as a connector, then you ask it to schedule from the conversation.
How to connectClaude and Claude Code
From the app with a connector, from the terminal with a single command. The same account in both places.
How to connectOpenClaw
Your background agents upload media, write posts and schedule them while you are away.
How to connectHermes
It connects as an MCP client. You do not need a local MCP server: a URL and a key in the config.yaml file are enough.
How to connectMuse
Meta Muse Code schedules the announcement in the same session where the code was finished.
How to connectThese clients also need an MCP URL and a key. On the Developers page you get a copy-ready setup for each of them.
What your agent can run
This is the full list: posts, social accounts, media, analytics, login, and the posts:create flags.
posty posts:createNew post: scheduled, as a draft, or published right away.posty posts:listPosts in the given period. You can filter by client group too.posty posts:delete <id>Delete a post by id.posty posts:find-slot <id>The next free publishing time for a social account.posty posts:status <id>Switch a post between draft and scheduled.posty posts:missing <id>Content already on the platform for a post with a missing id.posty posts:connect <id>Connect a post to content that is already published.posty integrations:listConnected social accounts and their ids. This is what the -i flag needs.posty integrations:groupsThe list of client groups, if you work with more than one brand.posty integrations:settings <id>An account's settings schema, rules, length limit, and tools.posty integrations:trigger <id> <method>Call a platform tool for extra data, for example to search for music.posty upload <file>Upload a media file. The URL you get back goes into the posts:create -m flag.posty analytics:platform <id>A social account's stats going back the given number of days.posty analytics:post <id>Performance of a single post.posty auth:loginLog in with OAuth2 device authorization: the browser opens, you approve.posty auth:logoutClear stored login data.posty auth:statusShows whether you're logged in, and checks access too.posty config:set <key> <value>Save a CLI setting, for example the default timezone.posty config:get [key]Print the saved settings.-c, --contentThe post text. Repeat it to make a thread: the first is the post, the rest are comments.-m, --mediaMedia for the -c that comes before it. The URL has to come from posty upload.-i, --integrationsIds of the target social accounts, comma-separated.--date, -sWhen to publish. Either with an explicit offset, or together with the --timezone flag.--timezoneIANA timezone name, for example Europe/Budapest. Only pass a date with no offset together with this.-t, --typeschedule (default), draft, or now.-d, --delayDelay in MINUTES between items in the thread.--jsonThe full post description from a JSON file, when the flags are not enough.--settingsPlatform-specific settings as JSON. The schema comes from integrations:settings.The full help is printed by posty --help. An unknown flag is not ignored: it errors. If it rejects a flag, that flag does not exist.
Fair pricing, no hidden costs
Every plan starts with a 7-day free trial. We bill in US dollars and issue a VAT invoice.
Prices in US dollars. In Europe you pay the same amount in euros, in Switzerland in Swiss francs.
Basic
- 5 social accounts
- 100 X posts a month
- 1 workspace
- One user
- Not included: Advanced image editor
- Not included: Viral video + UGC templates
- Not included: Automations
- Not included: API access
- Not included: Posting with an AI agent
- Unlimited posts
- Multiple accounts per platform
- Scheduling
- Calendar view
- Repeated posts
- Post delays
- Studio access
- Analytics (beta)
- Post comments
- Dark & light mode
Pro
Most popular- 10 social accounts
- 250 X posts a month
- 1 workspace
- One user
- Not included: Advanced image editor
- Not included: Viral video + UGC templates
- Automations
- API access
- Posting with an AI agent
- Unlimited posts
- Multiple accounts per platform
- Scheduling
- Calendar view
- Repeated posts
- Post delays
- Studio access
- Analytics (beta)
- Post comments
- Dark & light mode
Creator
- 30 social accounts
- 400 X posts a month
- 5 workspaces
- 15 users
- Advanced image editor
- Viral video + UGC templates
- Automations
- API access
- Posting with an AI agent
- Unlimited posts
- Multiple accounts per platform
- Scheduling
- Calendar view
- Repeated posts
- Post delays
- Studio access
- Analytics (beta)
- Post comments
- Dark & light mode
Team
Highest limits- 100 social accounts
- 800 X posts a month
- Unlimited workspaces
- Unlimited users
- Advanced image editor
- Viral video + UGC templates
- Automations
- API access
- Posting with an AI agent
- Unlimited posts
- Multiple accounts per platform
- Scheduling
- Calendar view
- Repeated posts
- Post delays
- Studio access
- Analytics (beta)
- Post comments
- Dark & light mode
TikTok
Instagram
Facebook
Threads
LinkedIn
YouTube
X
Pinterest · beta
Bluesky
Google Business · coming soon
Discord
Telegram
Slack
Common questions
Hand scheduling overto your agent.
Connect your accounts, create a key, and pick MCP, the CLI or the REST API. The last word in the calendar stays yours.