Skip to main content
Glama
hermoso-ai

Hermoso

Official

Post to a subreddit

post_to_reddit

Submit a text, link, or image post to one subreddit after explicit user approval, preventing spam and account bans by enforcing community-specific content and flair requirements.

Instructions

Submit a post to ONE named subreddit as the user’s connected Reddit account — a text post, a link post, or a native image post (pass a Hermoso render URL as imageUrl). This PUBLISHES immediately and PUBLICLY under their username, so show the user the exact subreddit, title and body and get an explicit yes BEFORE calling. REDDIT IS NOT A BROADCAST CHANNEL: it punishes undisclosed self-promotion harder than any other platform, and posting the same or near-identical content to several subreddits breaks Reddit’s own developer policy and gets accounts banned. Post to ONE subreddit, written for that specific community — if the user asks to blast several, tell them this instead of doing it. Subreddits that require post flair are detected before anything is posted and the error lists the valid flairs to pass as flairId. Needs Reddit connected (Settings ▸ Connectors ▸ Reddit).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlNothe destination url for a link post
hookNoWHAT ANGLE THIS POST IS BUILT ON — the single most valuable field here, and the only moment it can ever be recorded. post_performance groups on it to answer "which hooks work", and it needs 5 posts sharing ONE hook before it will call anything a winner, so REUSE THE SAME WORDING across a campaign instead of rephrasing it every time. Best of all, pass a hook id from list_hooks (e.g. "direct_callout", "mid_problem", "before_after") — those fold onto a stable key however they are spelled, so a whole brand accumulates evidence on one row. Your own wording is fine too; it just only groups when you repeat it exactly. Omitting it means this post can never vote on which hook works.
kindNo"self" = text post (default), "link" = share a url, "image" = native image upload. Inferred from what you pass if omitted.
nsfwNo
textNobody markdown for a text post
titleYespost title, max 300 characters
flairIdNoflair template id — required by some subreddits; the error names the valid ones
spoilerNo
subjectNoWHAT THIS POST IS ABOUT — the product, feature, offer or theme (e.g. "winter coat", "free trial", "founder story"). The second grouping axis in post_performance. Same rule as hook: reuse the exact wording so posts about one subject land in one group.
imageUrlNoa Hermoso render image URL for a native image post (or an upload_file url)
resubmitNopost a link Reddit says was already submitted — usually reads as spam, so confirm first
flairTextNoflair text, only where that flair is editable
subredditYesthe ONE subreddit to post to, e.g. "SideProject" (an r/ prefix is fine)
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations only indicating it's a write operation (readOnlyHint false), the description carries the full burden of behavioral disclosure. It explicitly states the post publishes immediately and publicly, warns about self-promotion penalties and account bans, and explains flair detection behavior. This is excellent transparency for a high-risk action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence earns its place—critical warnings about public publishing and policy violations are front-loaded. It's structured as a coherent block, not a wall of text. A slight length reduction for non-essential details would push it to 5, but it's efficient given the high-stakes nature.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having 13 parameters and no output schema, the description covers all essential operational aspects: prerequisites (Reddit connection), key constraints (one subreddit, community-specific), error handling (flair detection), and strategic considerations (hook/subject analytics). An agent has everything it needs to call this tool correctly and safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 85%, so parameters are largely documented in the schema itself (e.g., hook, subject, kind). The tool description adds no extra meaning beyond what the schema already provides; it only references imageUrl and flairId in passing. Per the rubric, high coverage sets a baseline of 3, and the description doesn't elevate it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Submit a post to ONE named subreddit'. It enumerates the supported post types (text, link, image) and specifies the account context (connected Reddit account). This clearly distinguishes it from sibling posting tools like post_to_x or post_to_linkedin, which target different platforms.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use and when-not-to-use guidance. It warns against posting to multiple subreddits, instructs the agent to refuse blasting requests, and highlights the requirement to get user confirmation before posting. This is far beyond a generic posting tool—it provides actionable decision rules.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hermoso-ai/hermoso'

If you have feedback or need assistance with the MCP directory API, please join our Discord server