Skip to main content
Glama

Watch a page

set_watch_alarm

Sets a monitoring alarm on a web page: Rocco checks it on a schedule, keeps what it finds, and rings the person's phone when what they are waiting for comes true (tickets go on sale, a price drops under a number, a page says delivered, reservations open). For anything on the web that no other alarm covers; a post, a price of a token, a trade or an event link each has its own alarm. Pass the page's link and, in the person's words, what to ring for. Rocco proposes what to pull from the page and how often, within the plan's limits. Returns the alarm, what it watches and its link.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "want": "<want>"
    },
    "name": "set_watch_alarm"
  }
}

Input Schema

NameRequiredDescriptionDefault
linkNoThe page to watch. Leave it out for a topic with no single page ("any AI startup raising over $10M"): Rocco finds the sources himself.
noteNoA note from the person about the alarm, in their words, shown under its trigger on the alarm's page and in the Daily drop. Up to 500 characters; an empty note clears it.
planNoA plan already shown to the person and agreed: what to check and how often. Left out, Rocco plans it.
vibeNoThe feel of the alarm in a few words, and the kind of background and colour if the person named them: "fun poppy anime", "calm", "a simple bell", "hype for a token launch", "ocean waves, purple", "neon and chaotic". LFG picks a sound and a look from its library to match: a live, moving wallpaper when one fits, otherwise a drawn one. Wallpaper words given here replace the look's words; a colour given here makes it a plain gradient in that colour.
wantYesWhat to ring for, in the person's words: "tickets go on sale", "price under $150 in size 32", "it says delivered".
briefNoA brief on a schedule as well as the alarm: Rocco gathers on the topic through the day, and the brief arrives quietly at this time, as a notification and in the Daily Drop, never a ring. The phone still rings only when the alarm's own rule matches. Makes it a monitoring alarm. For a clock alarm whose ring brings the brief, use set_time_alarm with follow instead.
placeNoWhere it happens, when the thing watched is somewhere they will go (a show, a game, a festival, a campsite, a trail): "Golden Gate Park, San Francisco". The brief then carries the forecast there.
quietNotrue for a monitoring alarm that should not ring: what it finds lands in the daily drop instead. Rocco decides from the request when left out (a drop or a sale rings; a slow daily thing stays quiet).
reachNoWho can ride it: private, friends (people on its list, or with its link) or public (anyone, and it is listed).private
soundNoThe shelf of our library closest to the sound they asked for, read for what they mean: lo-fi or study beats is music/chill, "make it a vibe" might be music/chill, music/rnb or music/beats, hype me up is voices/hype_man, yelling at me is voices/drill_sergeant. "own" for one of their own uploads ("my song"). "soundcloud" when they asked for SoundCloud, or no shelf is close: a genre we have no shelf for (k-pop, drum and bass), or an artist or a song by name; put what to look for in song_search, and they play SoundCloud songs and tap one. Leave it out when they said nothing about the sound. A song from Apple Music, or a song or voiceover made for them: leave this out, make the alarm, and say they get it in the alarm's Studio, under its sound, after Arm it. Never say you will make one. The wallpaper follows the song unless one is asked for.
themeNoA theme or holiday: the alarm gets a song in its moods, a new alarm a title written for it, and a wallpaper dealt for it for variety, one of the theme's pictures, a GIF, a live wallpaper or a gradient. A vibe given as well shapes that ("cozy", "degen"); wallpaper words or a title given are kept. One of: birthday (Birthday), love (Love), night_out (Night out), shopping (Shopping), winter (Winter), christmas (Christmas), hanukkah (Hanukkah), diwali (Diwali), halloween (Halloween), thanksgiving (Thanksgiving), friendsgiving (Friendsgiving), new_years (New Year's Eve).
titleNoWhat the alarm says when it rings. Rocco names it from the request when left out.
add_groupsNoFor a friends alarm: names of the person's friend groups whose members to let in, "Family". Members get a notification.
add_peopleNoFor a friends alarm: up to 20 people to let in, as usernames of the person's LFG friends or as email addresses. Friends get a notification; an email address with no LFG account gets an invitation. Any other username is refused.
gif_searchNo2 to 5 plain words to search GIFs with, written for this alarm, "solana pump celebration", "sleepy cat monday": used if the look dealt is a GIF, which has no words of its own. Fill it whenever you make an alarm.
look_wordsNoShort words of your own for the wallpaper, written for this alarm, "SOL TO THE MOON", "EXAM DAY", "BEACH BY 6": used if the look dealt is a live wallpaper or a gradient, in place of its own words. 2 to 4 words. Unlike wallpaper_words, the look is still dealt. Fill it whenever you make an alarm.
song_searchNoWith "soundcloud": what to look for there, in their words, "k-pop", "fred again".
upload_nameNoWith "own": the name they gave the upload, "my dog picture". Left out, one of theirs is used.
words_colorNoColour of the words as hex, any colour, "#D7FF00".
snooze_timesNoHow many times it can be snoozed: 3, 10 or unlimited.
silent_snoozeNotrue to snooze without the spoken roast LFG plays by default.
snooze_minutesNoMinutes each snooze lasts: 5, 10, 15, 30 or 60.
wallpaper_kindNoOnly when they named a kind: a gradient, a live (moving) wallpaper, a gif or meme, or "own" for one of their own uploads ("my wallpaper", "the picture I uploaded"). Left out, LFG deals one of every kind in turn.
wallpaper_colorNoWallpaper background colour as hex, any colour, "#5B2BFF".
wallpaper_wordsNoWords drawn on the wallpaper, "WAKE UP"; a line break starts a new line. Up to 40 characters; it looks best as 1 to 4 short words, since the words are drawn as large as the square allows.
people_confirmedNoWhether the person has confirmed the people and groups being added. Nobody is added or told without it.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / place
      Added value: +{
      +  "description": "Where it happens, when the thing watched is somewhere they will go (a show, a game, a festival, a campsite, a trail): \"Golden Gate Park, San Francisco\". The brief then carries the forecast there.",
      +  "maxLength": 200,
      +  "minLength": 2,
      +  "type": "string"
      +}
  2. Changed2 schema fields changed
    • addedInput schema / properties / gif_search
      Added value: +{
      +  "description": "2 to 5 plain words to search GIFs with, written for this alarm, \"solana pump celebration\", \"sleepy cat monday\": used if the look dealt is a GIF, which has no words of its own. Fill it whenever you make an alarm.",
      +  "maxLength": 60,
      +  "minLength": 2,
      +  "type": "string"
      +}
    • addedInput schema / properties / look_words
      Added value: +{
      +  "description": "Short words of your own for the wallpaper, written for this alarm, \"SOL TO THE MOON\", \"EXAM DAY\", \"BEACH BY 6\": used if the look dealt is a live wallpaper or a gradient, in place of its own words. 2 to 4 words. Unlike wallpaper_words, the look is still dealt. Fill it whenever you make an alarm.",
      +  "maxLength": 40,
      +  "minLength": 1,
      +  "type": "string"
      +}
  3. Changed3 schema fields changed
    • addedInput schema / properties / song_search
      Added value: +{
      +  "description": "With \"soundcloud\": what to look for there, in their words, \"k-pop\", \"fred again\".",
      +  "maxLength": 120,
      +  "type": "string"
      +}
    • changedInput schema / properties / sound / description
      Previous value: -"The shelf of our library closest to the sound they asked for: lo-fi or study beats is music/chill or music/cozy, hype me up is voices/hype_man, yelling at me is voices/drill_sergeant. \"own\" for one of their own uploads (\"my song\"). Leave it out when they said nothing about the sound. A SoundCloud song: make the alarm, then find_soundcloud_song. A song from Apple Music, or a song or voiceover made for them: leave this out, make the alarm, and say they get it in the alarm's Studio, under its sound, after Arm it. Never say you will make one. The wallpaper follows the song unless one is asked for."New value: +"The shelf of our library closest to the sound they asked for, read for what they mean: lo-fi or study beats is music/chill, \"make it a vibe\" might be music/chill, music/rnb or music/beats, hype me up is voices/hype_man, yelling at me is voices/drill_sergeant. \"own\" for one of their own uploads (\"my song\"). \"soundcloud\" when they asked for SoundCloud, or no shelf is close: a genre we have no shelf for (k-pop, drum and bass), or an artist or a song by name; put what to look for in song_search, and they play SoundCloud songs and tap one. Leave it out when they said nothing about the sound. A song from Apple Music, or a song or voiceover made for them: leave this out, make the alarm, and say they get it in the alarm's Studio, under its sound, after Arm it. Never say you will make one. The wallpaper follows the song unless one is asked for."
    • changedInput schema / properties / sound / enum
      Previous value: -[
      -  "own",
      -  "music/afrobeats",
      -  "music/anime",
      -  "music/beats",
      -  "music/broadway",
      -  "music/chill",
      -  "music/cinematic",
      -  "music/classical",
      -  "music/country_folk",
      -  "music/cozy",
      -  "music/electronic",
      -  "music/happy_birthday",
      -  "music/heavenly",
      -  "music/hiphop",
      -  "music/jazzblues",
      -  "music/latin",
      -  "music/metal",
      -  "music/pop",
      -  "music/reggae",
      -  "music/rnb",
      -  "music/roasts",
      -  "music/rock",
      -  "music/video_game",
      -  "voices/android",
      -  "voices/anime",
      -  "voices/battle_cry",
      -  "voices/boss",
      -  "voices/breaking",
      -  "voices/bro",
      -  "voices/calm",
      -  "voices/chants",
      -  "voices/chaos",
      -  "voices/doomer",
      -  "voices/drama",
      -  "voices/drill_sergeant",
      -  "voices/gamer",
      -  "voices/hype_man",
      -  "voices/narrator",
      -  "voices/party",
      -  "voices/super_positive",
      -  "voices/the_butler",
      -  "voices/toxic_coach",
      -  "voices/warning",
      -  "voices/wtf",
      -  "voices/your_bestie",
      -  "tones/beeps",
      -  "tones/buzzers",
      -  "tones/chimes",
      -  "tones/footsteps",
      -  "tones/horns_drums",
      -  "tones/nature",
      -  "tones/powerups",
      -  "tones/sirens",
      -  "tones/winning",
      -  "themes/halloween",
      -  "themes/thanksgiving"
      -]New value: +[
      +  "own",
      +  "soundcloud",
      +  "music/afrobeats",
      +  "music/anime",
      +  "music/beats",
      +  "music/broadway",
      +  "music/chill",
      +  "music/cinematic",
      +  "music/classical",
      +  "music/country_folk",
      +  "music/cozy",
      +  "music/electronic",
      +  "music/happy_birthday",
      +  "music/heavenly",
      +  "music/hiphop",
      +  "music/jazzblues",
      +  "music/latin",
      +  "music/metal",
      +  "music/pop",
      +  "music/reggae",
      +  "music/rnb",
      +  "music/roasts",
      +  "music/rock",
      +  "music/video_game",
      +  "voices/android",
      +  "voices/anime",
      +  "voices/battle_cry",
      +  "voices/boss",
      +  "voices/breaking",
      +  "voices/bro",
      +  "voices/calm",
      +  "voices/chants",
      +  "voices/chaos",
      +  "voices/doomer",
      +  "voices/drama",
      +  "voices/drill_sergeant",
      +  "voices/gamer",
      +  "voices/hype_man",
      +  "voices/narrator",
      +  "voices/party",
      +  "voices/super_positive",
      +  "voices/the_butler",
      +  "voices/toxic_coach",
      +  "voices/warning",
      +  "voices/wtf",
      +  "voices/your_bestie",
      +  "tones/beeps",
      +  "tones/buzzers",
      +  "tones/chimes",
      +  "tones/footsteps",
      +  "tones/horns_drums",
      +  "tones/nature",
      +  "tones/powerups",
      +  "tones/sirens",
      +  "tones/winning",
      +  "themes/halloween",
      +  "themes/thanksgiving"
      +]
  4. Changed3 schema fields changed
    • addedInput schema / properties / sound
      Added value: +{
      +  "description": "The shelf of our library closest to the sound they asked for: lo-fi or study beats is music/chill or music/cozy, hype me up is voices/hype_man, yelling at me is voices/drill_sergeant. \"own\" for one of their own uploads (\"my song\"). Leave it out when they said nothing about the sound. A SoundCloud song: make the alarm, then find_soundcloud_song. A song from Apple Music, or a song or voiceover made for them: leave this out, make the alarm, and say they get it in the alarm's Studio, under its sound, after Arm it. Never say you will make one. The wallpaper follows the song unless one is asked for.",
      +  "enum": [
      +    "own",
      +    "music/afrobeats",
      +    "music/anime",
      +    "music/beats",
      +    "music/broadway",
      +    "music/chill",
      +    "music/cinematic",
      +    "music/classical",
      +    "music/country_folk",
      +    "music/cozy",
      +    "music/electronic",
      +    "music/happy_birthday",
      +    "music/heavenly",
      +    "music/hiphop",
      +    "music/jazzblues",
      +    "music/latin",
      +    "music/metal",
      +    "music/pop",
      +    "music/reggae",
      +    "music/rnb",
      +    "music/roasts",
      +    "music/rock",
      +    "music/video_game",
      +    "voices/android",
      +    "voices/anime",
      +    "voices/battle_cry",
      +    "voices/boss",
      +    "voices/breaking",
      +    "voices/bro",
      +    "voices/calm",
      +    "voices/chants",
      +    "voices/chaos",
      +    "voices/doomer",
      +    "voices/drama",
      +    "voices/drill_sergeant",
      +    "voices/gamer",
      +    "voices/hype_man",
      +    "voices/narrator",
      +    "voices/party",
      +    "voices/super_positive",
      +    "voices/the_butler",
      +    "voices/toxic_coach",
      +    "voices/warning",
      +    "voices/wtf",
      +    "voices/your_bestie",
      +    "tones/beeps",
      +    "tones/buzzers",
      +    "tones/chimes",
      +    "tones/footsteps",
      +    "tones/horns_drums",
      +    "tones/nature",
      +    "tones/powerups",
      +    "tones/sirens",
      +    "tones/winning",
      +    "themes/halloween",
      +    "themes/thanksgiving"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / upload_name
      Added value: +{
      +  "description": "With \"own\": the name they gave the upload, \"my dog picture\". Left out, one of theirs is used.",
      +  "maxLength": 80,
      +  "type": "string"
      +}
    • addedInput schema / properties / wallpaper_kind
      Added value: +{
      +  "description": "Only when they named a kind: a gradient, a live (moving) wallpaper, a gif or meme, or \"own\" for one of their own uploads (\"my wallpaper\", \"the picture I uploaded\"). Left out, LFG deals one of every kind in turn.",
      +  "enum": [
      +    "gradient",
      +    "live",
      +    "gif",
      +    "own"
      +  ],
      +  "type": "string"
      +}
  5. Changed1 schema field changed
    • addedInput schema / properties / brief / properties / every_hours
      Added value: +{
      +  "description": "Only when the person asks for it (\"check every 4 hours\"): how often Rocco reads the brief's sources, in hours, 1 to 23. Leave it out otherwise: once a day, in the hour before the brief, is the default, free and plenty for a brief. Faster is monitoring: it takes a monitoring alarm's place and uses credits, so say so.",
      +  "maximum": 23,
      +  "minimum": 1,
      +  "type": "integer"
      +}
  6. Changed1 schema field changed
    • changedInput schema / properties / theme / description
      Previous value: -"A picture theme: the alarm gets one of the theme's pictures as its wallpaper and a song in its moods, and a new alarm a title written for it. A wallpaper, title or vibe given as well is kept instead. One of: birthday (Birthday), love (Love), night_out (Night out), shopping (Shopping), winter (Winter), christmas (Christmas), hanukkah (Hanukkah), diwali (Diwali), halloween (Halloween), thanksgiving (Thanksgiving), friendsgiving (Friendsgiving), new_years (New Year's Eve)."New value: +"A theme or holiday: the alarm gets a song in its moods, a new alarm a title written for it, and a wallpaper dealt for it for variety, one of the theme's pictures, a GIF, a live wallpaper or a gradient. A vibe given as well shapes that (\"cozy\", \"degen\"); wallpaper words or a title given are kept. One of: birthday (Birthday), love (Love), night_out (Night out), shopping (Shopping), winter (Winter), christmas (Christmas), hanukkah (Hanukkah), diwali (Diwali), halloween (Halloween), thanksgiving (Thanksgiving), friendsgiving (Friendsgiving), new_years (New Year's Eve)."
  7. Changed1 schema field changed
    • changedInput schema / properties / brief / properties / topic / maxLength
      Previous value: -80New value: +160
  8. Changed1 schema field changed
    • changedInput schema / properties / vibe / description
      Previous value: -"The feel of the alarm in a few words, \"fun poppy anime\", \"calm\", \"a simple bell\", \"hype for a token launch\". LFG picks a sound and a drawn look from its library to match; wallpaper words or colours given here win over the look."New value: +"The feel of the alarm in a few words, and the kind of background and colour if the person named them: \"fun poppy anime\", \"calm\", \"a simple bell\", \"hype for a token launch\", \"ocean waves, purple\", \"neon and chaotic\". LFG picks a sound and a look from its library to match: a live, moving wallpaper when one fits, otherwise a drawn one. Wallpaper words given here replace the look's words; a colour given here makes it a plain gradient in that colour."
  9. Changed2 schema fields changed
    • addedInput schema / properties / plan / properties / gaps
      Added value: +{
      +  "description": "What the ask wanted that no source covers, as the planner wrote it.",
      +  "items": {
      +    "properties": {
      +      "need": {
      +        "maxLength": 160,
      +        "type": "string"
      +      },
      +      "paid": {
      +        "type": "boolean"
      +      },
      +      "why": {
      +        "maxLength": 200,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "need",
      +      "why",
      +      "paid"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 8,
      +  "type": "array"
      +}
    • addedInput schema / properties / plan / properties / sources / items / properties / feeds
      Added value: +{
      +  "description": "What it feeds: trigger (judged, may ring), brief (read for the brief only, never rings) or both.",
      +  "enum": [
      +    "trigger",
      +    "brief",
      +    "both"
      +  ],
      +  "type": "string"
      +}
  10. Changed2 schema fields changed
    • changedInput schema / properties / brief / description
      Previous value: -"A brief on a schedule as well as the alarm: Rocco gathers on the topic through the day, and the brief arrives quietly at this time, as a notification and in the Daily Drop, never a ring. The phone still rings only when the alarm's own rule matches. Makes it a lookout. For a clock alarm whose ring brings the brief, use set_time_alarm with follow instead."New value: +"A brief on a schedule as well as the alarm: Rocco gathers on the topic through the day, and the brief arrives quietly at this time, as a notification and in the Daily Drop, never a ring. The phone still rings only when the alarm's own rule matches. Makes it a monitoring alarm. For a clock alarm whose ring brings the brief, use set_time_alarm with follow instead."
    • changedInput schema / properties / quiet / description
      Previous value: -"true for a lookout that should not ring: what it finds lands in the daily drop instead. Rocco decides from the request when left out (a drop or a sale rings; a slow daily thing stays quiet)."New value: +"true for a monitoring alarm that should not ring: what it finds lands in the daily drop instead. Rocco decides from the request when left out (a drop or a sale rings; a slow daily thing stays quiet)."
  11. Changed1 schema field changed
    • changedInput schema / properties / plan / properties / sources / maxItems
      Previous value: -5New value: +20
  12. Changed1 schema field changed
    • addedInput schema / properties / brief
      Added value: +{
      +  "description": "A brief on a schedule as well as the alarm: Rocco gathers on the topic through the day, and the brief arrives quietly at this time, as a notification and in the Daily Drop, never a ring. The phone still rings only when the alarm's own rule matches. Makes it a lookout. For a clock alarm whose ring brings the brief, use set_time_alarm with follow instead.",
      +  "properties": {
      +    "days": {
      +      "description": "Days it arrives, [\"sat\"]. Every day when absent.",
      +      "items": {
      +        "enum": [
      +          "sun",
      +          "mon",
      +          "tue",
      +          "wed",
      +          "thu",
      +          "fri",
      +          "sat"
      +        ],
      +        "type": "string"
      +      },
      +      "maxItems": 7,
      +      "minItems": 1,
      +      "type": "array"
      +    },
      +    "time": {
      +      "description": "When the brief arrives, 24-hour, \"08:00\".",
      +      "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
      +      "type": "string"
      +    },
      +    "time_zone": {
      +      "description": "The person's IANA time zone, \"America/New_York\".",
      +      "type": "string"
      +    },
      +    "topic": {
      +      "description": "What to gather for the brief, \"solana news\", \"AI and crypto, and something funny\".",
      +      "maxLength": 80,
      +      "minLength": 2,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "topic",
      +    "time",
      +    "time_zone"
      +  ],
      +  "type": "object"
      +}
  13. Changed2 schema fields changed
    • removedInput schema / properties / plan / properties / datasets / items / properties / fields / maxItems
      Removed value: -8
    • removedInput schema / properties / plan / properties / datasets / maxItems
      Removed value: -3
  14. Changed1 schema field changed
    • addedInput schema / properties / plan
      Added value: +{
      +  "description": "A plan already shown to the person and agreed: what to check and how often. Left out, Rocco plans it.",
      +  "properties": {
      +    "about": {
      +      "maxLength": 600,
      +      "type": "string"
      +    },
      +    "datasets": {
      +      "items": {
      +        "properties": {
      +          "about": {
      +            "maxLength": 200,
      +            "type": "string"
      +          },
      +          "fields": {
      +            "items": {
      +              "properties": {
      +                "name": {
      +                  "maxLength": 40,
      +                  "type": "string"
      +                },
      +                "type": {
      +                  "maxLength": 10,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "name",
      +                "type"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 8,
      +            "type": "array"
      +          },
      +          "name": {
      +            "maxLength": 40,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "fields"
      +        ],
      +        "type": "object"
      +      },
      +      "maxItems": 3,
      +      "type": "array"
      +    },
      +    "hornDefault": {
      +      "type": "boolean"
      +    },
      +    "sources": {
      +      "items": {
      +        "properties": {
      +          "cadenceSeconds": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          },
      +          "extraction": {
      +            "items": {
      +              "maxLength": 40,
      +              "type": "string"
      +            },
      +            "maxItems": 6,
      +            "type": "array"
      +          },
      +          "kind": {
      +            "enum": [
      +              "page",
      +              "api",
      +              "feed"
      +            ],
      +            "type": "string"
      +          },
      +          "target": {
      +            "maxLength": 2000,
      +            "minLength": 4,
      +            "type": "string"
      +          },
      +          "why": {
      +            "maxLength": 160,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "target",
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      "maxItems": 5,
      +      "minItems": 1,
      +      "type": "array"
      +    },
      +    "title": {
      +      "maxLength": 60,
      +      "type": "string"
      +    },
      +    "trigger": {
      +      "properties": {
      +        "name": {
      +          "maxLength": 80,
      +          "type": "string"
      +        },
      +        "text": {
      +          "maxLength": 500,
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "name",
      +        "text"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "sources"
      +  ],
      +  "type": "object"
      +}
  15. Changed2 schema fields changed
    • changedInput schema / properties / link / description
      Previous value: -"The page to watch."New value: +"The page to watch. Leave it out for a topic with no single page (\"any AI startup raising over $10M\"): Rocco finds the sources himself."
    • changedInput schema / required
      Previous value: -[
      -  "want",
      -  "link"
      -]New value: +[
      +  "want"
      +]
  16. Added

TDQS

A4.3/5.0
Behavior4/5

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

Beyond the annotations, it discloses the operational model — recurring checks, retained results, plan-bounded cadence, and that Rocco proposes what to extract — and describes the return value. It does not mention credit consumption or whether repeated calls create duplicate alarms, though the non-idempotent annotation already flags the latter.

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 purpose, then scope, then the call contract, in four tight sentences with no repetition. The parenthetical examples of triggers are long but earn their place by making "what they are waiting for" concrete.

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 a 26-parameter, deeply nested creation tool, the description covers what the agent must know to choose and call it: scope, routing, required inputs, plan limits, and return shape. Side concerns like credits, sharing defaults, and brief/quiet interplay are left to the schema, which documents them fully.

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 coverage is 100% across 26 parameters, so the schema carries the semantics. The description reinforces only the two most important inputs (link and the trigger in the person's words) and adds nothing about notes, plan, quiet, or sharing reach, so the baseline of 3 applies.

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?

States a specific verb and resource ("Sets a monitoring alarm on a web page") and immediately describes the mechanism: scheduled checks, retained findings, and a phone ring on a stated condition. It also names the boundaries against siblings — posts, token prices, trades, and event links "each has its own alarm" — so an agent can distinguish it from set_post_alarm, set_price_alarm, set_trader_alarm, and set_event_alarm without opening their schemas.

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?

Gives an explicit routing rule: use this "for anything on the web that no other alarm covers," with the excluded cases enumerated. It also tells the agent what to supply (the page's link plus the person's own words for the trigger) and, via the schema, that a page-less topic is also acceptable and that a clock alarm with a follow-brief belongs to set_time_alarm.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.