How to post to Threads from Hermes Agent
Threads and a chat-based agent match in size. A short message in, a short post out.
How do I post to Threads from Hermes Agent?
Add the planpo.st MCP server to Hermes Agent, connect Threads once in the dashboard, then ask. The first three steps are one-time.
- 1
Create an API key and add planpo.st to Hermes
Make a scoped key in planpo.st under Settings. Add an MCP server by local command in Hermes: npx with the arguments -y planpost-mcp and PLANPOST_API_KEY in its environment. New servers are disabled by default in Hermes, so enable planpost after adding it.
- 2
Confirm the server is connected
Ask Hermes to list your planpo.st connections. If it has no such tool, the server is still disabled.
- 3
Connect Threads
Connect the Threads profile in the dashboard under Connections. It is its own connection, separate from Instagram, and the agent can fetch a connect URL for you with get_connection_link.
- 4
Know what the post needs
A Threads post needs text of 500 characters or fewer. Media is optional and there are no platformSettings for Threads at all.
- 5
Ask in a chat app or the desktop app
Say what to post and when. Hermes finds the Threads connection, creates the post, and tells you whether it was scheduled or kept as a draft, with the reason.
Add an MCP server by local command:
Command: npx
Args: -y planpost-mcp
Env: PLANPOST_API_KEY=pk_live_xxxReplace pk_live_xxx with your own key.
Which transport does Hermes Agent use?
For Hermes use the local command. Hermes documents SSE for remote servers and the planpo.st endpoint speaks streamable HTTP, so a URL connection is something to test on your version, not to assume. Enable the server after adding it.
- Hermes manages MCP servers from its settings and a CLI, and servers can be added by URL or by local command. The local command above is the tested path.
- Hermes documents SSE for remote servers. Our hosted endpoint speaks streamable HTTP, which is the newer transport, so verify a URL connection against your Hermes version before relying on it and use the local command if it does not connect.
- MCP servers you add are disabled by default in Hermes until you enable them, which is deliberate on their side.
The full walkthrough is on the Hermes Agent setup page.
What can Hermes Agent do on Threads?
It can publish text posts and posts with one image or one video, with clickable links in the text. It cannot publish a chain of connected posts or a multi-image carousel.
Text post
500Up to 500 characters. Links in the text are clickable, which is the thing Threads has over Instagram and TikTok.
One image
The first image attached to the post goes out with it.
One video
Same rule: the first attachment, when it is a video, is published with the text.
Not available
limitsConnected multi-post chains and carousels. The "thread" post type belongs to X, despite the name.
Attachments are optional on Threads. When a post should carry one, that is the one awkward part of this pairing. When you message Hermes from a chat app, the file is not on a disk it can PUT to an upload URL. Two routes work: upload the file in the planpo.st dashboard and let Hermes pick it with list_media, or ask for an image with generate_image, which costs 1 AI credit.
Which settings does a Threads post take?
Threads is the simplest network here: the publisher reads no platformSettings. Three post fields decide everything.
| Field | Allowed values | If you leave it out | Worth knowing |
|---|---|---|---|
| platformContent.threads | Text, 500 characters or fewer | The shared content | Over 500 here is rejected with a 400. Shared content over 500 saves the post as a draft with char_limit. |
| media, platformMedia.threads | One image or one video | Text post | Only the first attachment is sent. A second image is ignored, not turned into a carousel. |
| postType | "post" | "post" | "thread" with a Threads connection returns 400: Thread can only publish to X (Twitter). |
| platformSettings.threads.* | Not read | Does not apply | Anything sent here is stored and ignored. |
What do I type to post to Threads from Hermes Agent?
Plain requests work. Each example lists the tool calls Hermes Agent makes in response.
1. A week of short posts
You say
Take the idea from my last message. Pull five separate points out of it and schedule one Threads post per weekday next week, each under 500 characters.
Tool calls
suggest_schedule({ numberOfPosts: 5, platforms: ["threads"], startDate: "<Monday>", endDate: "<Friday>" })
bulk_create_posts({ defaults: { connectionIds: ["<threads id>"], campaign: "weekly-notes" }, posts: [ { content: "...", scheduledFor: "..." }, ... ] })Five scheduled posts from one call. Rows are independent, so one over-long post is saved as a draft and the other four are still scheduled.
2. Post with a link and a picture
You say
Use the last image I uploaded to planpo.st. Schedule it on Threads tomorrow 12:00 with two sentences about the update and the link to the changelog.
Tool calls
list_media({ type: "image" })
create_post({ content: "<two sentences> https://...", media: [<image>], connectionIds: ["<threads id>"], schedule: "tomorrow 12:00" })One post with the image and a link people can tap. Attach a single image; a second one would not be published.
3. From a blog post you already published
You say
Take the newest article from my blog feed and write three Threads drafts from it, different angle each.
Tool calls
list_content_sources()
fetch_source_content({ id: "<source id>" })
list_imported_content({ id: "<source id>" })
repurpose_content({ posts: [ { content: "...", connectionIds: ["<threads id>"] }, ... ] })Three drafts in the dashboard. Nothing is scheduled until you or the agent pick the ones worth keeping.
What stops a Threads post from Hermes Agent?
The tag on a card is the code that comes back in the tool result.
500 characters
char_limitText that fits LinkedIn will not fit here. Give Threads its own cut in platformContent.threads when one post goes to both.
One attachment
The publisher sends the first image or video and nothing after it. A post with four images arrives with one.
No chains
There is no multi-post format for Threads in planpo.st. A long idea goes out as several separate posts, scheduled a few minutes apart if you want them near each other.
No settings to tune
No reply controls, no topic tags. If a prompt asks for them, the values are stored on the post and have no effect.
Links work
A URL in the text is clickable. This is the cheapest place in the lineup to put a tracked link.
Added is not enabled
HermesHermes keeps new MCP servers switched off until you enable them. If the agent answers as though planpo.st does not exist, that is why.
Use the local command
HermesHermes documents SSE for remote servers and the planpo.st endpoint speaks streamable HTTP. The local npx command is the tested path.
Can Hermes Agent tell me what a Threads post earned?
Yes. A link in a Threads post is clickable, so a tracked link gives a click that a later payment can be matched to, and the amount sits next to the post. get_revenue_overview returns totals and recent transactions over the same connection that published it.
Hermes Agent and Threads: questions people ask
- Can Hermes upload an image from my machine for Threads?
- Not directly. When you message Hermes from a chat app, the file is not on a disk it can PUT to an upload URL. Upload the file in the dashboard and Hermes finds it with list_media, or have it render one: render_carousel makes branded images from text.
- Can it post a thread on Threads?
- No. The thread post type publishes a reply chain on X only. On Threads each post stands alone, up to 500 characters.
- How many images can a Threads post have?
- One. The first attachment is published and any others are left out.
- What happens when Hermes sends a Threads post that breaks a rule?
- It is told at once. The usual case on Threads is text over 500 characters: the post is kept as a draft and the tool result carries char_limit plus the fix, which Hermes applies with update_post.
- Can I post to Threads from Telegram or Slack?
- Yes, that is the point of Hermes. The same agent answers in the chat apps it is connected to and on the desktop, with the planpo.st tools behind it in each. Keep it on drafts or approval, so a mistyped message costs you a bad draft and nothing more.
- Can Hermes use the hosted endpoint?
- Test it against your Hermes version before relying on it. Hermes documents SSE for remote servers and our endpoint is streamable HTTP. The local command works regardless and reaches Threads the same way.
Keep going
Threads from other agents
Other networks from Hermes