Your Hermes agent manages your calendar
It puts the content from the conversation into the calendar, lists your connected accounts, then reads posts back or rearranges them. It can pull analytics too.
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/hermes
Start with the CLI
Four commands install the CLI, sign you in, check your connected accounts, then create a post. That way you can work outside the conversation too.
# Install the Postemi CLI$ npm install -g posty-cli# Sign in to your Postemi account$ posty auth:login# Check your connected accounts$ posty integrations:list[{ "id": "cmf3k7…", "name": "Cafe · Instagram" }]# Put a post on the calendar$ 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 JSON to stdout, and sends status and errors to stderr. On failure it exits with a non-zero code.
What the Hermes agent handles
From the conversation it reaches the same Postemi account as the CLI and the REST API. You still review posts in the calendar.
From the conversation
The Hermes agent assigns the content from the conversation to your connected accounts. It writes the post into the Postemi calendar, then reads it back so you can check it.
Uploading media
You upload media in a separate step. In the CLI, posty upload returns the URL that the -m after that -c uses.
Read and rearrange
The agent fetches the Postemi calendar, so it can see posts already scheduled. If the plan changes, it moves them to a new time.
CLI, second way
You can reach the same Postemi account from the published CLI. Build non-conversation workflows without Hermes, using posty commands.
REST, third way
The public REST API gives access to the same Postemi account. Use it when the workflow does not go through MCP or the CLI.
Approval in the calendar
The agent writes and rearranges posts, and you review them in the Postemi calendar. You still approve them before they go out.
How Hermes connects
Postemi gives you a ready-made config block. The connection is remote, so you do not need to install a local MCP server.
Connect your accounts
On the Postemi web app, add the social accounts you want to use with OAuth. After they are connected, the agent can see them.
$ posty integrations:list[{ "id": "cmf3k7…", "name": "Cafe · Instagram" },{ "id": "cmf3k9…", "name": "Cafe · Facebook" }]
Create the key
Open Automations → Developers and create a key that starts with psty_mcp_…. The ready-made Hermes config block is on the same page.
# 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_…Paste the block
Copy the full block from Postemi under the mcp_servers section of ~/.hermes/config.yaml. The block contains the connection name, URL and key.
mcp_servers: posty: url: "https://api.posty.hu/mcp/YOUR_API_KEY"Check the calendar
The agent schedules the posts, and you review and approve them in the Postemi calendar before they go out. If needed, the agent moves them to a new time.
$ posty posts:list[{ "id": "cmf7p2…", "state": "QUEUE","publishDate": "2026-08-16T07:00:00Z" },{ "id": "cmf7q8…", "state": "DRAFT","publishDate": "2026-08-18T06:30:00Z" }]
What is Hermes?
Hermes is an agent platform that connects the agents running on it to external tools over MCP. It reaches Postemi's remote MCP server over streaming HTTP, so you do not need to install a local server. Once connected, the agent works in the Postemi account.
The agent running in Hermes lists your connected accounts from the task in the conversation, and writes a post into the Postemi calendar. It reads it back, rearranges it if needed, then fetches analytics.
It reaches Postemi over a remote MCP connection. You copy the config block from Automations → Developers into Hermes's config.yaml. You can reach the same account from the CLI and the public REST API too.
Hermes
The agent runs here, and this is where your task starts. It reaches Postemi's tools over MCP.
Remote MCP
The server runs on Postemi's infrastructure. Hermes reaches it over streaming HTTP, so it does not need to install a local MCP server.
Postemi calendar
Posts the agent schedules land in the Postemi calendar. You read them through and approve them here before they go out.
A predictable interface, three ways in
You can parse Postemi's responses and errors by machine. You reach the account over MCP, the CLI and the REST API.
- JSON on the outputThe output is JSON, so the agent can parse the command result directly.
- Clear error signalsIt writes status and errors to stderr. On failure the exit code is non-zero.
- Built-in skill fileFrom the package SKILL.md file, the agent learns the CLI with no extra training.
- Flat command setIt gets a single, flat command set, with no hidden state. Every operation is a clear call.
- Three ways inIt reaches the same Postemi account over MCP, the CLI and the public REST API.
---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`.The npm package includes the SKILL.md file. The agent learns the CLI from it, with no extra explanation.
The same from a terminal
The posty commands handle posts, integrations, analytics, uploads, config and auth. The CLI is licensed AGPL-3.0.
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 CLI writes JSON to stdout, and status and errors to stderr.
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
Connect Hermesto Postemi.
Create the key on the Automations → Developers page, then paste the block you get into the Hermes config. After that the agent works in the Postemi calendar.