Skip to main content
Glama
hermoso-ai

Hermoso

Official

Which hooks and subjects are getting traction

post_performance
Read-onlyIdempotent

Aggregate a brand's published posts to find which hooks, subjects, formats, channels, media, or posting hours drive engagement. See engagement rates and ranked posts within each channel.

Instructions

Aggregate this brand's published posts to answer WHICH HOOKS AND SUBJECTS WORK. Groups by hook (default), subject, format (recipe), channel, media format or posting hour, reports the engagement RATE within each channel, and ranks the best and worst POSTS in each channel. Describe a post by the creative it carried (what it shows, its format, its link), not by its caption — the caption is the least important part of a post. THREE THINGS IT DELIBERATELY WILL NOT DO, and you should repeat them rather than paper over them: (1) it never sums metrics across channels — a LinkedIn impression and a TikTok view are different units, so every comparison is within one channel; (2) it SUPPRESSES a verdict below 5 measured posts and says so, because a confident recommendation from 3 posts is worse than none; (3) a post with no recorded hook (published outside Hermoso, or backfilled without a creation match) counts toward channel and format totals but never votes on which hook works. Present the finding verbatim if there is one, and the reason if there is not. Read-only, 0 credits.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
axisNowhat to group by — default hook; recipe = the format of the creative
daysNolook back N days (1-730) over the whole history; omit for the recent posts only
brandNoWHICH PROFILE the post lives in — id or exact name from list_brands (a shared workspace: its profile id). Needed when it was published in a profile this connection is not pinned to; applies to THIS CALL ONLY. A name that matches no profile, or two, is REFUSED and nothing is done.
channelNorestrict to one channel

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.1.374
    • changedInput schema / properties / brand / description
      Previous value: -"WHICH BRAND the post lives in — id or exact name from list_brands (a shared workspace: its profile id). Needed when it was published in a brand this connection is not pinned to; applies to THIS CALL ONLY. A name that matches no brand, or two, is REFUSED and nothing is done."New value: +"WHICH PROFILE the post lives in — id or exact name from list_brands (a shared workspace: its profile id). Needed when it was published in a profile this connection is not pinned to; applies to THIS CALL ONLY. A name that matches no profile, or two, is REFUSED and nothing is done."
  2. Changed1 schema field changedv0.1.320
    • changedInput schema / properties / brand / description
      Previous value: -"WHICH BRAND the post lives in — the id or exact name from list_brands (a workspace shared with you: its profile id). Needed when it was published in a brand this connection is not pinned to: a post you can CREATE in a brand is manageable there too, for THIS CALL ONLY, without switching the connection. A name that matches no brand, or two, is REFUSED and nothing is done."New value: +"WHICH BRAND the post lives in — id or exact name from list_brands (a shared workspace: its profile id). Needed when it was published in a brand this connection is not pinned to; applies to THIS CALL ONLY. A name that matches no brand, or two, is REFUSED and nothing is done."
  3. Changed1 schema field changedv0.1.281
    • addedInput schema / properties / days
      Added value: +{
      +  "description": "look back N days (1-730) over the whole history; omit for the recent posts only",
      +  "type": "number"
      +}
  4. Changed1 schema field changedv0.1.272
    • addedInput schema / properties / brand
      Added value: +{
      +  "description": "WHICH BRAND the post lives in — the id or exact name from list_brands (a workspace shared with you: its profile id). Needed when it was published in a brand this connection is not pinned to: a post you can CREATE in a brand is manageable there too, for THIS CALL ONLY, without switching the connection. A name that matches no brand, or two, is REFUSED and nothing is done.",
      +  "type": "string"
      +}
  5. Changed2 schema fields changedv0.1.227
    • changedInput schema / properties / axis / description
      Previous value: -"what to group by — default hook"New value: +"what to group by — default hook; recipe = the format of the creative"
    • changedInput schema / properties / axis / enum
      Previous value: -[
      -  "hook",
      -  "subject",
      -  "channel",
      -  "media",
      -  "hour"
      -]New value: +[
      +  "hook",
      +  "subject",
      +  "recipe",
      +  "channel",
      +  "media",
      +  "hour"
      +]
  6. Addedv0.1.161

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations (readOnly/idempotent/non-destructive), it discloses rich non-obvious behavior: never summing metrics across channels, suppressing verdicts below 5 measured posts, treating hookless posts as non-voting, presenting the `finding` verbatim, and being read-only at 0 credits. These are exactly the constraints an agent would otherwise get wrong.

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?

It is long, but the length is earned: the outcome leads, the three deliberate non-goals are enumerated, and each sentence carries behavioral weight. Slightly dense, but nothing reads as filler or repetition of the name.

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?

With no output schema, the description compensates by stating what is reported (engagement rate per channel, ranked best/worst posts, verbatim `finding`) and enumerating the three suppression/aggregation rules. An agent has enough to call it correctly and interpret results without further discovery.

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 100%, so the schema already documents axis, days, brand, and channel (including the default and the 'recipe = format' mapping). The description restates the axis dimensions and adds marginal framing, but no syntax or semantics the schema lacks; baseline 3 is appropriate.

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+outcome: 'Aggregate this brand's published posts to answer WHICH HOOKS AND SUBJECTS WORK,' then names the exact grouping dimensions and the ranking output. This clearly separates it from siblings like collect_post_metrics (raw collection) or list_published_posts (listing), since the defining behavior is aggregation by axis with best/worst ranking.

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

Usage Guidelines4/5

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

It gives usable guidance on how to reason about a post ('by the creative it carried, not by its caption') and implicitly scopes itself to hook/subject analysis via the axis enum. It does not, however, explicitly state when to choose this over sibling analytics tools such as diagnose_posts or search_posts, so routing is left partly to inference.

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

Deploy Server

Other Tools