Skip to main content
Glama
hermoso-ai

Hermoso

Official

Set the market radar

set_competitor_watch
DestructiveIdempotent

Set, change, or stop a brand's competitor watch to monitor new ads, winning ads, trends, and content ideas; choose competitors, topics, cadence, or auto-select.

Instructions

Set, change or stop a brand's MARKET RADAR (the standing competitor watch; Ad Spy > Watching in the web app; each brand has its own), run weekly or daily: newAds (what watched brands launched), winners (their ad passing 30 days running), trends + topPosts (formats and most-viewed posts for niche topics), ideas (3 to make). Only what you pass changes. competitors / topics REPLACE their lists (max 8 brands, 5 topics); both empty stops it and clears findings. auto:true picks 3-5 competitors, 2-3 similar brands and 2-3 topics from the saved brand or seed (a few credits). dryRun:true quotes one check, saves nothing. Saving is free; each check holds its quote first and is skipped when the balance is short. runNow is refused while a check runs or just after one finished. Read it with list_watch_findings.

Input Schema

NameRequiredDescriptionDefault
autoNo
seedNofor auto: a website, brand or niche
brandNoprofile id/name from list_brands, this call only
emailNothe weekly email
forceNowith runNow: check again right after a check, allowed once what is watched changed
dryRunNo
runNowNocheck now (spends now)
topicsNoniche search phrases, e.g. "protein breakfast"
cadenceNo
modulesNoon/off; omitted keep theirs
competitorsNothe COMPLETE brand list

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed15 schema fields changedv0.1.454
    • addedInput schema / properties / auto
      Added value: +{
      +  "type": "boolean"
      +}
    • addedInput schema / properties / brand
      Added value: +{
      +  "description": "profile id/name from list_brands, this call only",
      +  "type": "string"
      +}
    • addedInput schema / properties / cadence
      Added value: +{
      +  "enum": [
      +    "weekly",
      +    "daily"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / competitors / description
      Previous value: -"the brands to watch — the COMPLETE list, replacing whatever was set before. Empty array = stop watching."New value: +"the COMPLETE brand list"
    • changedInput schema / properties / competitors / items / properties / domain / description
      Previous value: -"its domain, e.g. ridge.com — required for Google Ads Transparency, and what disambiguates a common brand name on Meta"New value: +"e.g. ridge.com: Google is read by domain, and it finds the right Meta page"
    • addedInput schema / properties / competitors / items / properties / kind
      Added value: +{
      +  "enum": [
      +    "competitor",
      +    "similar"
      +  ],
      +  "type": "string"
      +}
    • removedInput schema / properties / competitors / items / properties / name / description
      Removed value: -"the brand name, as it advertises"
    • addedInput schema / properties / dryRun
      Added value: +{
      +  "type": "boolean"
      +}
    • addedInput schema / properties / email
      Added value: +{
      +  "description": "the weekly email",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / force
      Added value: +{
      +  "description": "with runNow: check again right after a check, allowed once what is watched changed",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / modules
      Added value: +{
      +  "description": "on/off; omitted keep theirs",
      +  "properties": {
      +    "ideas": {
      +      "type": "boolean"
      +    },
      +    "newAds": {
      +      "type": "boolean"
      +    },
      +    "topPosts": {
      +      "type": "boolean"
      +    },
      +    "trends": {
      +      "type": "boolean"
      +    },
      +    "winners": {
      +      "type": "boolean"
      +    }
      +  },
      +  "type": "object"
      +}
    • changedInput schema / properties / runNow / description
      Previous value: -"true to run one check immediately (spends credits now) instead of waiting a week for the first one"New value: +"check now (spends now)"
    • addedInput schema / properties / seed
      Added value: +{
      +  "description": "for auto: a website, brand or niche",
      +  "type": "string"
      +}
    • addedInput schema / properties / topics
      Added value: +{
      +  "description": "niche search phrases, e.g. \"protein breakfast\"",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • removedInput schema / required
      Removed value: -[
      -  "competitors"
      -]
  2. Addedv0.1.161

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already flag destructive and idempotent, but the description adds what annotations cannot: saving is free while each check holds a credit quote first and is skipped when the balance is short, dryRun saves nothing, and clearing both lists destroys the stored findings. It stops short of describing what the call returns after a successful save.

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?

Front-loaded with the core action and the read alternative at the end; almost every clause carries unique information (credits, caps, replace semantics, cooldown). However, the long run-on sentence with stacked parentheticals makes it denser than it needs to be for an agent parsing it once.

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

Completeness4/5

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

For an 11-parameter mutation with spend side effects, no output schema, and nested objects, it covers the risky parts well: destructive clearing, credit quoting, cooldown, dryRun. The one real gap is the post-save return value / confirmation shape, which the agent must infer.

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

Parameters5/5

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

Goes well past the 73%-covered schema: it states the max caps (8 brands, 5 topics), that competitors/topics replace rather than merge, that auto picks 3-5 competitors / 2-3 similar brands / 2-3 topics from the saved brand or seed, and that force is the escape hatch for the runNow cooldown. These replacement and capacity rules are the parameters' real meaning and are absent from the schema.

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?

Names a specific verb+resource ('Set, change or stop a brand's MARKET RADAR') with concrete scope (weekly/daily cadence, per brand) and enumerates the output modules it controls. It also locates the feature in the product ('Ad Spy > Watching') and routes reads to the sibling list_watch_findings, so it is unmistakable among the many sibling tools.

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?

Explicit when-to-use semantics: 'Only what you pass changes', competitors/topics REPLACE their lists, 'both empty stops it and clears findings', auto:true for auto-pick, dryRun:true to quote without saving. It also states the exclusion condition — runNow is refused while a check runs or just after one finished — and names list_watch_findings as the read alternative.

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