Post to Threads from Hermes

Threads suits an automated cadence: 500-character posts, and a full read-and-reply surface exposed as ordinary tool calls.

Hermoso is a marketing MCP server: 922+ tools over one OAuth’d endpoint that let an agent research the ads already running in a market, generate finished image and video ads, publish them, and build the paid campaigns behind them. Hermes reaches all of it through one connection. This page covers one slice of that: what Hermes can actually do on Threads, and what Threads will not let it do.

Connect Hermoso to Hermes

  1. Install and sign in.
    npm install -g hermoso && hermoso auth login
    Your browser opens once. Nothing to create and nothing to paste: the credential is stored owner-only in ~/.hermoso/config.json. On a machine with no browser, hermoso auth login --token hmk_… takes a key from MCP & CLI → Terminal & API keys instead.
  2. Add it to ~/.hermes/config.yaml. mcp_servers is a top-level key, not nested under mcp, and no key goes in the file because hermoso mcp reads the sign-in above:
    mcp_servers:
      hermoso:
        command: "npx"
        args: ["-y", "hermoso", "mcp"]
  3. Ask Hermes for something. “Pull my three closest competitors’ longest-running ads and remix the best hook into a 9:16 video,” or “post this render to the channel.” The agent picks the tools; you approve the spend.

Hermoso is not affiliated with or endorsed by the makers of Hermes and does not claim to be. The shape above is quoted from the project's own MCP reference in NousResearch/hermes-agent, read on 2026-08-23; it is documented rather than run here, which is why it is the published file shape and not a bespoke install command.

Then connect Threads itself, once, under Settings → Connectors in Hermoso. That is an OAuth consent screen, so it is the one step that needs a browser. Everything after it is a tool call.

The Threads tools Hermes gets

  • post_to_meta: publishes text, an image or a video with target: "threads", optionally geotagged.
  • schedule_post: queues it alongside every other channel.
  • list_threads_posts / threads_insights: what you have posted, and how each one did.
  • list_threads_replies / reply_to_thread / hide_thread_reply: read the replies, answer as the brand, hide what does not belong.
  • list_threads_mentions: who is talking about you.
  • search_threads_keyword / search_threads_locations: keyword search and the location ids a geotag needs.
  • delete_thread: removes a post.

Threads is the channel where Hermoso goes furthest past publishing. Beyond posting there is a full read-and-respond surface (replies, mentions, keyword search and per-post insights), which makes it usable as a listening channel as well as an outlet. Note that Threads is a separate OAuth grant from Facebook even though it shares the Page.

Threads limits worth knowing before you automate anything

TextA Threads post is capped at 500 characters, the tightest here apart from X. It is enforced when the post is created or queued, so an overlong post is refused while you are still there to fix it instead of being silently cut on the way out.
VisibilityPublic only. “Threads has no unlisted, private or draft post.” A Threads post exists publicly or not at all.
Carousel2 to 20 slides, images and video mixed. Both bounds are Meta’s own words, quoted in the table that enforces them: “Carousels must have at least 2” items, and “no more than 20 total images, videos, or a mix of the two.” That makes Threads the most generous mixed-media carousel of any channel here.
Which accountpageId. The same connected Page identity carries Facebook, Instagram and Threads.

Try it in Hermes

Ask for it in ordinary language. These are plain sentences, not a DSL:

“Post one Threads update under 500 characters per shipped feature, then collect mentions and replies for a daily digest.”

That walks get_brand → generate_text → post_to_meta (target: "threads") → list_threads_replies. Approval behaviour is yours to configure. Hermoso’s own guarantees do not depend on it: campaigns are born paused, spend switches are confirm-gated, and no generation call runs without a verified account behind it.

Hermes on Threads: the part that bites

Split the loop: let the run read freely and write on approval. list_threads_mentions, list_threads_replies and threads_insights have no public consequence, while reply_to_thread speaks as the brand. The 500-character cap is enforced at enqueue, so an over-long batch fails immediately rather than at fire time.

For unattended runs the hermoso CLI with --json is easier to assert on than a tool manifest, and much cheaper in context.

Research Threads before you post

search_threads searches public Threads by keyword through the research surface, and search_threads_keyword does the same through your connected Threads account. There is no Threads ad library, because there are no Threads ads to archive.

The paid half

There is no Threads ads product in Hermoso, and it would be wrong to imply one. Threads here is an organic channel: publish, read, reply, measure. The paid tools cover Meta (Facebook and Instagram), Google Ads, Microsoft Advertising, Reddit Ads, LinkedIn, Pinterest, X Ads, TikTok Ads, Snapchat Ads, ChatGPT Ads, Apple Search Ads and AppLovin Ads.

What Hermes cannot do on its own

An agent with a budget is only useful if the blast radius is bounded, so the fence is in the server rather than in a prompt. Every ad campaign, ad set, ad group and ad is created paused, and the status switches that arm real money refuse to run without an explicit confirmation flag. Every render is quoted first (hermoso_capabilities publishes each model’s exact credit cost before anything spends). Credits are reserved before the first provider call and settled at the exact cost afterwards, so a failed dispatch refunds rather than leaving you billed for nothing. Deletes are confirm-gated too, and every campaign tree is read back from the ad platform before your agent tells you what it built.

One step is deliberately not headless: linking an account is an OAuth consent screen, so you connect the channel once in a browser. Everything after that is a tool call.

The rest of the matrix

From Hermes, post to: Facebook · Instagram · TikTok · YouTube · X · LinkedIn · Pinterest · Bluesky · Telegram. Or see everything Hermes can publish to.

Post to Threads from: Claude · ChatGPT · Claude Code · Cursor · Codex · Cline · OpenClaw · Grok Bot · Gemini CLI · Perplexity · Le Chat · Claude Cowork · Perplexity Computer · Paperclip

Frequently asked questions

Can Hermes post to Threads?

Yes, through Hermoso's MCP server. Run npm install -g hermoso && hermoso auth login, then add hermoso under the top-level mcp_servers key in ~/.hermes/config.yaml with command "npx" and args ["-y", "hermoso", "mcp"]. The browser sign-in stores the credential, so no key goes in the file. Hermes then has 922+ tools, including the ones that publish to Threads, plus the ones that research the ads already running in your market and render the creative in the first place.

How do I connect Threads to Hermes?

Two steps, once each. Run npm install -g hermoso && hermoso auth login, then add hermoso under the top-level mcp_servers key in ~/.hermes/config.yaml with command "npx" and args ["-y", "hermoso", "mcp"]. The browser sign-in stores the credential, so no key goes in the file. Then connect Threads inside Hermoso under Settings → Connectors, which is an OAuth consent screen in a browser. After that Hermes publishes to Threads as an ordinary tool call.

Can Hermes post privately or as a draft to Threads?

No. Threads has no unlisted, private or draft post; a Threads post is public or it does not exist. Hermoso refuses a visibility Threads cannot honour at the moment you ask for it, rather than quietly publishing something weaker.

Can Hermes schedule a Threads post for later?

Yes. schedule_post queues it on one calendar shared with every other channel, with a per-channel caption if the copy should differ, and list_scheduled and cancel_scheduled read and pull it back. Threads is one of the eleven channels that queue.

What is the Threads caption limit when posting from Hermes?

A Threads post is capped at 500 characters, the tightest of any channel here apart from X. Hermoso enforces it when the post is created or queued, so Hermes is told immediately rather than failing later when nobody is watching.

What does it cost to post to Threads from Hermes?

Publishing to Threads costs no credits; Meta charges nothing per API call. Credits are spent on generating the creative. Plans are $29, $69 and $149 a month for 1,200, 3,000 and 7,000 credits, and every feature is on every plan including Free. The only exception is enterprise SSO.

Start free with 30 credits at signup and 250+ more to earn. Every feature is on every plan. Credits are spent only on AI models and Ad Spy research; posting, scheduling, ads management and analytics are free.

Start free →   See pricing