Skip to main content
Glama

Server Details

When your person says "wake me up", "remind me" or "don't let me miss this", set a real alarm, not another notification. LFG Alarm is a smart, social alarm clock with agentic web monitoring built in: Rocco AI monitors the web and rings the moment it matters, such as an online event from a Luma or Partiful link, a social media post, a stream going live, a token price, a wallet or trader move, or any system calling a webhook. Share one link and friends and family ring together, on any device.

Ownership verified
Status
Healthy
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4/5.0

Scored across 33 tools

Disambiguation4/5

The six set_*_alarm tools all create alarms but are sharply differentiated by trigger (time, event, price, trader, post, webhook), and each description explicitly cross-references the others to steer selection. The media-placement cluster (add_media_file, add_media_from_url, get_upload_link, set_media, set_gif) has real overlap, but boundaries are spelled out by source type (in-hand file, public URL, phone-only device, existing id, KLIPY GIF).

Naming Consistency5/5

Nearly every tool follows a clean snake_case verb_noun pattern (set_time_alarm, list_riders, get_wake_board, post_comment, use_invite_code). The single minor deviation, turn_alarm_on_off, is still verb-led and readable. No mixing of camelCase or vague bare verbs.

Tool Count3/5

33 tools is heavy for a single alarm app, sitting in the over-scoped range. The breadth (six alarm types plus media, social, crypto, and link tools) partly justifies it, but several media-placement tools feel like they could be consolidated into fewer entry points.

Completeness4/5

Coverage is strong: full alarm lifecycle (set, show, list, update, delete, on/off), media management, social graph (friends, riders, join requests, comments, hearts, invites), discovery, and link parsing. The main gap is no explicit way for a user to leave/leave-alarm once joined (only creator-side removal via update_alarm), and no unjoin path.

Available Tools

33 tools
add_media_fileAdd a fileAInspect

Puts a file sent in this call on an alarm the person made: a picture or short video as the wallpaper, a song, or a voiceover. For a file this AI app has in hand; a file only on the person's phone can't be sent this way. The file goes in as base64, up to 28,000,000 characters (a file of about 20MB; the person's plan may allow less). LFG checks it like any upload, replaces what that slot had, and adds it to the person's uploads. Video wallpapers need a paid plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe alarm's id.
useYeswallpaper, song, or voiceover.
nameNoWhat to call the file in the person's library, "Soccer team anthem". When absent, the file's own title.
data_base64YesThe file itself, base64-encoded.
content_typeYesThe file's type, "audio/mpeg", "audio/wav", "image/png", "video/mp4".

TDQS

A4/5.0
Behavior4/5

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

Annotations declare the safety profile (readOnly=false, destructive=false, idempotent=false, openWorld=false), and the description adds real behavioral context beyond them: it overwrites 'what that slot had', runs an upload check, is size-capped at 28M chars/~20MB subject to the person's plan, and gates video wallpapers behind a paid plan. The only unaddressed trait is idempotency, and 'replaces what that slot had' sits in mild tension with destructiveHint=false, though slot media is typically replaceable.

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 slot semantics before constraints, and most sentences carry a distinct fact (source, size, overwrite, plan gating). It is slightly dense with asides like 'LFG checks it like any upload', but nothing is materially wasteful.

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 5-parameter mutation tool with full schema coverage and no output schema, the description covers source constraints, size limits, overwrite behavior, and plan gating well. It omits any indication of what the call returns (e.g. the created upload reference), which would help an agent chain follow-up calls.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: it interprets maxLength as 'about 20MB' and warns the plan may allow less, and it ties the enum values to concrete media roles. It does not document the optional 'name' default or content_type examples beyond what the schema already lists.

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

Purpose4/5

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

States a concrete verb and resource: 'Puts a file sent in this call on an alarm the person made', enumerating the three slots (wallpaper, song, voiceover). It clearly separates itself from a URL-based sibling by requiring 'a file this AI app has in hand', though it never names add_media_from_url explicitly, so the differentiation is inferred rather than stated.

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?

Gives a clear positive condition (file in the AI app's hand) and a clear exclusion ('a file only on the person's phone can't be sent this way'), which is the practical when-to-use boundary. It stops short of naming the alternative tool to use in the excluded case, leaving that inference to the agent.

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

add_media_from_urlAdd a file from a linkAInspect

Puts a file from a public https link on an alarm the person made: a picture or short video as the wallpaper, a song, or a voiceover. For a file at a public https link; a file only on the person's device needs the one-time page instead. LFG fetches the file, checks it like any upload, replaces what that slot had, and adds it to the person's uploads. Video wallpapers need a paid plan. A link that cannot be fetched, or a file that is not an accepted type, returns an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe alarm's id.
urlYesA public https link straight to the file.
useYeswallpaper, song, or voiceover.
nameNoWhat to call the file in the person's library, "Soccer team anthem". When absent, the file's own title or name.

TDQS

A4.4/5.0
Behavior5/5

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

With annotations covering safety flags, the description still adds real value: it fetches the file, validates it like any upload, replaces the existing slot content, adds it to the user's uploads, gates video wallpapers behind a paid plan, and defines error behavior for unfetchable/invalid links. This is unusually rich behavioral disclosure.

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-loads the core action and keeps to a handful of sentences, each carrying distinct information (routing, fetch/validate/replace behavior, paywall, errors). A slightly awkward second sentence ('For a file at a public https link...') costs it a 5.

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?

No output schema, but the description covers the mutation's side effects, the paywall constraint, and error outcomes, and annotations cover the open-world/idempotency profile. Nothing needed to call it correctly is missing.

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 baseline is 3. The description mildly enriches the `use` values by tying them to the resource (wallpaper/song/voiceover) and stresses that the url must be public https, but does not add syntax beyond 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?

States a specific verb + resource (put a file from a public https link onto an alarm as wallpaper/song/voiceover) and implicitly distinguishes itself from add_media_file by scoping to URL-sourced files only. An agent can tell exactly what this does without opening the schema.

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 explicitly routes the alternative case: 'a file only on the person's device needs the one-time page instead,' which is a clear when-not condition. It stops short of naming the sibling tool, so it's a strong 4 rather than a 5.

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

answer_join_requestLet someone in, or notA
Idempotent
Inspect

Answers one person's request to join a friends alarm the person made. For the creator's side of a request; asking to join someone else's alarm is separate. Letting them in adds them to the alarm and tells them; declining clears the request without telling them. Only the alarm's creator can answer; letting in someone whose request is gone returns an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe alarm's id.
userYesThe id of the person who asked.
let_inYestrue to let them in, false to decline.

TDQS

A4.3/5.0
Behavior5/5

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

Adds real behavioral context beyond the annotations: letting someone in adds them and notifies them, declining silently clears the request, only the creator is authorized, and letting in a vanished request errors. None of this is derivable from readOnlyHint=false, idempotentHint=true, destructiveHint=false.

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 side-of-request routing, then per-branch behavior, then the authorization/error caveat. Every sentence carries information, though the wording is slightly dense and could be split for faster scanning.

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 three-parameter mutation with no output schema, the definition covers authorization, notification side effects, and the failure case. It does not say what happens on decline if the request is already gone or what a success response contains, leaving a small gap for an agent reasoning about error handling.

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 id, user, and let_in are already documented, including 'true to let them in, false to decline.' The description only adds the downstream consequence of each let_in value (notify vs. silent clear), which is a modest enrichment over the schema baseline.

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 (answer a person's request to join an alarm) and explicitly scopes it to the creator's side, noting the inverse case is separate. An agent can distinguish this from join_alarm / use_invite_code / list_join_requests without opening any schema.

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?

Gives a clear when-to-use condition (only the alarm's creator answers) and distinguishes the opposing flow ('asking to join someone else's alarm is separate'). It stops short of naming the sibling tool for that opposing flow or pointing to list_join_requests for discovering pending requests, so the alternatives remain inferable rather than explicit.

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

browse_discoverBrowse public alarmsA
Read-onlyIdempotent
Inspect

Lists public alarms anyone can join, newest or most joined first, optionally matching words or of one kind: each one's name, creator, when it rings, riders, hearts and link. For public alarms by anyone; the person's own alarms are a separate list. Up to 25, 10 when not given. Returns a note when none match.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoOnly time, social (posts and streams) or onchain (prices and trades) alarms.
sortNorecent, or subscribers for the most joined.recent
limitNoHow many, up to 25.
searchNoWords to match, "launch", "lakers".

TDQS

A4.1/5.0
Behavior4/5

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

The annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real value beyond them: the fields returned (name, creator, ring time, riders, hearts, link), the page limits ('Up to 25, 10 when not given'), and the empty-result note ('Returns a note when none match') — helpful behavioral detail for a tool with no output schema.

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?

Dense and front-loaded, leading with what it lists before the qualifiers. The colon-heavy sentence is slightly awkward to parse but no sentence is wasted.

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 read-only, no-output-schema list tool, the description covers result shape, limits, ordering, and the empty-result case, and its annotations carry the safety profile. Nothing essential for correct invocation is missing, though it could note whether results are paginated.

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 kind, sort, limit, and search. The description restates those semantics in prose ('newest or most joined first,' 'optionally matching words or of one kind,' 'Up to 25, 10 when not given') but adds no syntax or format detail beyond what the schema provides — baseline 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 ('Lists public alarms anyone can join') with clear scope (public, joinable by anyone). It also distinguishes itself from the sibling list_my_alarms by noting 'the person's own alarms are a separate list,' so an agent can tell the two apart without reading either schema.

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?

Explicitly scopes usage to 'public alarms by anyone' and points to the separate own-alarms list as the alternative, which routes the agent correctly. It stops short of a full when-to-use/when-not framing, but the context is clear.

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

delete_alarmDelete an alarmA
DestructiveIdempotent
Inspect

Deletes an alarm by its id. Switching an alarm off instead keeps it. An alarm the person made is deleted for everyone who joined it and cannot be undone; one they joined is left, and still rings for the others. Returns which of the two happened.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe alarm's id.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true, but the description goes well beyond by disclosing two distinct outcomes: an owned alarm is deleted for all joiners and cannot be undone, while a joined alarm is left and still rings for others. It even states that the response indicates which branch occurred, which is behavioral context the annotations cannot convey.

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 core action is front-loaded in the first sentence, and the following sentences each carry distinct behavioral weight (the disable alternative, owner-versus-joiner semantics, return value). It is slightly longer than minimal but no sentence is filler.

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?

There is no output schema, and the description compensates by explaining what the return value distinguishes ('Returns which of the two happened') while covering the destructive, irreversible side effect and the permission-scoped behavior. An agent has everything needed to call and interpret it.

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% with a single required 'id' parameter that the schema already documents. The phrase 'by its id' adds no meaning beyond the structured field, so the baseline score 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 up front ('Deletes an alarm by its id'), and explicitly distinguishes itself from the closest sibling by contrasting deletion with switching off. An agent can separate this from turn_alarm_on_off, update_alarm, and the set_*_alarm tools without opening any schema.

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?

Names the key alternative ('Switching an alarm off instead keeps it'), giving the condition that drives the choice between deleting and disabling. It lacks guidance versus the other mutation siblings (update_alarm, join_alarm) or any explicit prerequisite, but the critical fork is stated.

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

find_tokenFind a tokenA
Read-onlyIdempotent
Inspect

Finds crypto tokens by name, ticker or contract address. For looking up a token before a price alarm; it sets nothing, and a person or wallet trading is not a token. Returns up to 8 matches, each with its chain, contract, current price, market cap, and the id, symbol and name a price alarm takes. Several tokens can share a name or ticker; the contract tells them apart. A wallet address is said to be a wallet. No match returns a note.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesA name or ticker, "pepe", "SOL", or a contract address.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/openWorld, but the description adds information they cannot: a result cap of 8 matches, the fields returned per match (chain, contract, price, market cap, id/symbol/name), the empty-result behavior ('No match returns a note'), and the disambiguation rule that contract addresses separate tokens sharing a name or ticker.

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?

Well front-loaded: purpose first, then return shape, then disambiguation. Slightly redundant, though — the idea that a wallet is not a token appears twice ('a person or wallet trading is not a token' and 'A wallet address is said to be a wallet'), and that second sentence is awkwardly phrased.

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?

There is no output schema, so the description correctly shoulders the burden of describing results: match count limit, per-match fields, and the no-match note. For a one-parameter read-only lookup, nothing an agent needs to invoke or interpret it is missing.

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% for the single 'query' parameter, and the description's 'name, ticker or contract address' merely restates the schema wording with examples already present ('pepe', 'SOL'). No additional format or normalization detail is supplied, 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 (finds crypto tokens) plus the accepted lookup keys (name, ticker, contract address). It also carves out the boundary against neighboring tools by noting it 'sets nothing' and that a wallet/trader is not a token, so an agent can distinguish it from set_price_alarm and set_trader_alarm without opening a schema.

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?

Explicitly frames the use case: 'For looking up a token before a price alarm,' which routes the agent to this tool as the prerequisite step for set_price_alarm. It also gives an exclusion ('a person or wallet trading is not a token'), so both when-to-use and when-not-to-use are covered.

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

get_invite_cardGet the person's inviteA
Read-onlyIdempotent
Inspect

Gets the person's own invite to LFG Alarm, not tied to any alarm: their invite link with their referral code, the code, a message ready to send, and their invite card picture (their handle, a QR code to the link and their code) with its address. For the person's own invite to send; using someone else's code is separate.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), and the description adds useful scope context: it is the caller's OWN invite, unbound to any alarm, and it lists the returned artifacts including the card image address. It adds meaning beyond the annotations, though it omits any note on permissions or freshness of the code.

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 action and scope, and every clause carries information; the nesting in "invite card picture (their handle, a QR code to the link and their code) with its address" is dense but self-explaining. Slightly overlong as a single sentence.

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?

With no output schema, the description must (and largely does) describe the returned payload in detail. Combined with the annotations covering safety and idempotency, an agent has enough to call it correctly; only minor gaps remain around permissions or link expiry.

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

Parameters4/5

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

Zero parameters and 100% schema coverage, so the schema carries no semantic burden. The description correctly adds no param detail, though it could have clarified that no arguments are needed for this identity-scoped read.

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 ("Gets the person's own invite to LFG Alarm") and immediately scopes it as "not tied to any alarm," separating it from alarm-related siblings. It also enumerates the concrete contents returned (invite link, referral code, message, invite card picture with address), so an agent knows exactly what this tool yields.

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?

Gives clear when-to-use ("For the person's own invite to send") and an exclusion ("using someone else's code is separate"), which implicitly routes to use_invite_code. It does not name the alternative tool explicitly, so it falls just short of full routing guidance.

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

get_wake_boardGet the wake boardA
Read-onlyIdempotent
Inspect

Shows who got up and how fast, for alarms that rang: the order people got up in, their times from the ring, snoozes and titles (First up, Snooze champ, Buys coffee), and who is still asleep. For alarms that already rang; when an alarm rings next is on its card and in the alarm list. One alarm by id, or every alarm that rang for the person in the last 24 hours. Returns a note when nothing rang.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoOne alarm's id. When absent, every alarm that rang in the last 24 hours.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real context beyond that: the 24-hour window, the empty-state behavior ('Returns a note when nothing rang'), and the richness of the returned scoring data (order, times from the ring, snoozes, titles, still-asleep).

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 core purpose and scope are front-loaded in the first clause, and every sentence contributes (what's shown, when it applies, what it accepts, empty-state). The second sentence is a dense run-on combining usage, parameters and return content, which costs a little readability.

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 carries the return-value burden and does so: it enumerates the wake-order fields, titles, snooze info, still-asleep status, and the no-data note. Combined with the single optional parameter and full annotation coverage, an agent has everything needed to call it correctly.

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% and the id parameter's description already states that its absence means every alarm from the last 24 hours. The description restates that same semantics ('One alarm by id, or every alarm that rang... in the last 24 hours') without adding format or syntax detail, which is the expected baseline when the schema does the work.

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+resource: showing the wake-order leaderboard for alarms that already rang, including times, snoozes and titles. This is clearly distinct from siblings like show_alarm (single alarm detail) or list_my_alarms (scheduling), so an agent can select it without opening the schema.

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?

Explicitly scopes the tool to alarms that already rang and redirects future-alarm information ('when an alarm rings next is on its card and in the alarm list'). It also explains the two retrieval modes (single id vs. last-24-hours sweep), though it doesn't name a specific sibling tool as the alternative.

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

heart_alarmHeart an alarmA
Idempotent
Inspect

Hearts an alarm the person can open, or takes the heart back, from its link or code. For a heart; words go in a comment. The heart count is public on the alarm. Returns its heart count.

ParametersJSON Schema
NameRequiredDescriptionDefault
onNotrue to heart it, false to take the heart back.
linkYesThe alarm's link or code.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), lowering the bar. The description adds genuine context beyond them: that the heart count is publicly visible on the alarm and that the call returns its heart count, which an agent needs to know about the side effect.

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

Conciseness3/5

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

It is short and front-loads the core action, but the opening sentence is awkward and laborious ("the person can open, or takes the heart back, from its link or code"), which costs clarity per word. Most sentences do carry information, so it is adequate rather than wasteful.

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 two-parameter toggle with full schema coverage and no output schema, the description covers the action, the alternate use case (comments for text), and the return value. Nothing essential to invoking it correctly appears to be missing.

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%, so both the 'on' toggle and the 'link' string are already fully documented in the schema, making 3 the baseline. The description reiterates the toggle semantics without adding format or syntax beyond what the schema provides.

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

Purpose4/5

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

The description states a specific verb (heart) and resource (an alarm) and clarifies it is a toggle from a link or code, which distinguishes it from siblings like show_alarm, update_alarm, and post_comment. The phrasing is slightly garbled ("Hearts an alarm the person can open") but the operation is unambiguous.

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

Usage Guidelines3/5

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

Usage is only implied: it routes text content elsewhere ("For a heart; words go in a comment"), telling the agent to use a comment tool when prose is needed. It never states when to choose this over sibling alarm tools or any prerequisite conditions, so guidance is partial rather than explicit.

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

join_alarmJoin an alarmA
Idempotent
Inspect

Joins someone else's alarm from its link or code, so it rings on the person's phone too. For an alarm someone else made, by its link or code; a referral code is not an alarm. A friends alarm the person is not on can't be joined; with ask set, its creator is sent a request to let them in. An alarm that already rang for the last time can't be joined. Returns the alarm's name, creator and when it rings.

ParametersJSON Schema
NameRequiredDescriptionDefault
askNoFor a friends alarm the person is not on: send its creator a request to let them in.
linkYesThe alarm's link (lfg.gm/a/...), the message it came in, or its code.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnly=false, destructive=false, idempotent=true, openWorld=false), but the description adds real behavioural context beyond them: the ask flag triggers a request sent to the creator, and two distinct failure states are disclosed. It does not clarify what happens without ask on a friend's alarm the person isn't on, leaving one behaviour gap.

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?

Dense but earns nearly every clause, and the primary purpose is front-loaded. There is mild redundancy: 'For an alarm someone else made, by its link or code' restates the opening sentence, and the phrasing is occasionally awkward ('A friends alarm the person is not on can't be joined').

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?

No output schema exists, and the description compensates by stating the return ('the alarm's name, creator and when it rings') along with preconditions and side effects. For a two-parameter, non-destructive action, an agent has everything needed to invoke it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema lacks: the link parameter can carry an alarm link, the message it arrived in, or a code, and explicitly excludes referral codes. That sharpens the accepted input beyond the schema's 'link (lfg.gm/a/...), the message it came in, or its code'.

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 ('Joins someone else's alarm') plus the observable effect ('it rings on the person's phone too'). The clause 'a referral code is not an alarm' separates it from the sibling use_invite_code, so an agent can route correctly without opening either schema.

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?

Gives clear preconditions and exclusions: only an alarm someone else made, a friend's alarm the person isn't on 'can't be joined' unless ask is set, and an alarm that already rang its last time can't be joined. It routes away from referral codes but never names the alternative tool (use_invite_code) explicitly, so it falls just short of full when/when-not/alternatives guidance.

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

list_friendsList my friends and groupsA
Read-onlyIdempotent
Inspect

Lists the person's friends on LFG Alarm by username, and their friend groups with each group's members by username. For the person's own friends and groups; the people on one alarm are a separate list. The person is not in the list. These usernames and group names are the ones a friends alarm can be shared with. Returns a note when they have no friends yet.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuine behavioral context beyond that: the person is excluded from the list, and a note is returned when there are no friends yet. This is useful edge-case disclosure, though nothing about ordering or limits is given.

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 purpose, then the distinguishing constraint, then the sharing rationale and empty-state note. Four sentences is slightly more than needed, but each carries real information and there is no filler.

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?

With no parameters and no output schema, the description carries the burden of describing what comes back (usernames, group names, empty-state note) and it does so adequately. Only minor gaps remain, such as return ordering or pagination.

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

Parameters4/5

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

Zero parameters, so there is nothing to document and the baseline is 4. No parameter meaning is needed or missing.

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+resource ('Lists the person's friends... and their friend groups with each group's members by username') and explicitly distinguishes this list from the alarm-member list ('the people on one alarm are a separate list'). An agent can tell exactly what set is returned without opening anything else.

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?

Gives clear context for when this applies ('For the person's own friends and groups') and a reason to call it ('the ones a friends alarm can be shared with'), while ruling out the alarm-member case. It stops short of naming an alternative tool explicitly, so not a full 5.

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

list_join_requestsSee who asked to joinA
Read-onlyIdempotent
Inspect

Lists the people asking to join a friends alarm the person made, each with their username and the day they asked. For people still waiting; the people already on an alarm are a separate list. Without an id, it covers every alarm of theirs with someone waiting. Returns a note when nobody is waiting.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoThe alarm's id. Leave out for all of them.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuine behavioral detail beyond that: the returned shape (username + day asked) and the edge case that a note is returned when nobody is waiting.

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-loads the core action, then layers scope and edge case in short clauses. Slightly fragmentary punctuation ('For people still waiting;') costs a little readability, but there is no filler.

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?

With no output schema, the description carries the return-value burden and does so adequately, describing both the success shape and the empty case. It could say more about ordering or volume, but nothing essential for correct invocation is missing.

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%, so the single 'id' parameter is already documented ('Leave out for all of them'). The description reinforces the omitted-id behavior in prose but adds no new semantics or format detail beyond the schema. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('lists the people asking to join a friends alarm'), including the scope of what is returned. It distinguishes the 'still waiting' set from 'the people already on an alarm are a separate list'. It never names the actual sibling tool that shows that other list, so differentiation is conceptual rather than explicit.

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

Usage Guidelines3/5

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

Gives implied routing via 'For people still waiting' and clarifies the broad scope when no id is passed. However, it never states when to pick this over close siblings like answer_join_request (acting on a request) or list_my_alarms, leaving the caller to infer the boundary.

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

list_my_alarmsList my alarmsA
Read-onlyIdempotent
Inspect

Lists the person's alarms, both the ones they made and the ones they joined, each with its name, type, reach, on or off, next ring, link and id. For the whole list; one alarm's card, its riders or its wake board are separate reads. Alarms whose creator deleted them are left out. Returns a note when there are none.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so safety is covered. The description adds real behavioral context beyond that: the returned field set, that alarms deleted by their creator are omitted, and that a note is returned when the list is empty.

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

Conciseness5/5

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

Three short sentences, front-loaded with the return contents, then sibling routing, then edge-case behavior. Every clause carries information; nothing is redundant.

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 listing the fields returned (name, type, reach, on/off, next ring, link, id), the deleted-alarm exclusion, and the empty-result note. Nothing an agent needs to call and interpret this correctly is missing.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4 and there is nothing for the description to disambiguate. No parameter syntax or filtering options are needed.

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+resource (lists the person's alarms) and scopes it to both owned and joined alarms, enumerating the returned fields. It explicitly contrasts itself with show_alarm, list_riders and get_wake_board by noting those are 'separate reads', so an agent can distinguish it from siblings without opening schemas.

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?

Clear routing: use this for the whole list, and note that 'one alarm's card, its riders or its wake board are separate reads', which steers the agent to show_alarm/list_riders/get_wake_board. It stops short of naming those siblings explicitly or stating exclusions beyond deleted alarms.

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

list_my_mediaList my uploadsA
Read-onlyIdempotent
Inspect

Lists the person's own uploads, newest first: pictures (images, GIFs and short videos, for wallpapers) or sounds (songs and voice recordings). For the person's own uploads; LFG's library and KLIPY GIFs are separate searches. Each has an id an alarm takes, its name and where it came from. Pictures come with small previews unless previews is false. Returns a note when there are none.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYespictures (wallpapers) or sounds (songs and voice recordings).
previewsNoPictures only: false to leave out the small previews.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: newest-first ordering, the fields each item carries (id, name, source), preview inclusion, and the empty-result note. It stops short of mentioning pagination or result limits.

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 return content, then the preview and empty-state caveats. Sentences are dense but each carries information; the repeated 'For the person's own uploads' phrasing is mildly redundant with the opening clause.

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?

With no output schema, the description responsibly covers return contents, ordering, preview behavior, and the empty case for a simple two-parameter read tool. Pagination or result-count limits are the only meaningful omission.

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 both parameters are already documented. The description restates the enum values ('pictures', 'sounds') and the previews=false behavior without adding syntax or format detail beyond the schema, matching the baseline 3.

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 ('Lists the person's own uploads') and immediately scopes it against alternatives by noting that LFG's library and KLIPY GIFs are separate searches. An agent can distinguish this from search_library and search_gifs without opening any schema.

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 clear context for when to use it (the person's own uploads) and excludes the alternative sources (library, KLIPY GIFs) as separate searches. It does not name the sibling tools explicitly nor state any prerequisites, so it falls short of a full 5.

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

list_ridersSee who is ridingA
Read-onlyIdempotent
Inspect

Lists everyone on an alarm the person made or joined: each username and the day they joined, the creator first, then the newest. For people already on one alarm; people still asking to join are a separate list. Usernames only, nothing else about anyone. An alarm the person is not on returns an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe alarm's id.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive, so the description's value-add is the error condition ('an alarm the person is not on returns an error') and the guaranteed ordering of results. It doesn't mention pagination or result-size limits, which is the remaining behavioral gap.

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 and ordering, then a scoping clause, then scope of returned data, then the error case. Slightly padded by 'Usernames only, nothing else about anyone,' which partially restates the first sentence's field list, but every sentence contributes.

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?

With no output schema, the description correctly describes return values (usernames plus join day, in creator-then-newest order) and the failure mode. It is complete enough to invoke correctly; only pagination/truncation behavior for large alarms is unaddressed.

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% for the single UUID `id` parameter, so the schema carries the parameter documentation. The description adds no format, constraint, or auth detail about the id beyond what the schema states, making baseline 3 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?

Specific verb+resource ('Lists everyone on an alarm') plus the returned fields (username, join day) and sort order (creator first, then newest). It also distinguishes itself from the pending-request sibling by stating 'people still asking to join are a separate list.' An agent can identify this tool without opening a schema.

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?

Gives a clear usage condition ('For people already on one alarm') and explicitly excludes the adjacent case (pending join requests). It stops short of naming the sibling tool list_join_requests, so the routing signal is descriptive rather than a direct pointer.

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

post_commentComment on an alarmAInspect

Posts a comment on an alarm the person rides or made, as the person, from its link or code. For words; a heart is separate. Everyone who can open the alarm sees it, and its creator is told. Up to 280 characters.

ParametersJSON Schema
NameRequiredDescriptionDefault
linkYesThe alarm's link or code.
commentYesThe comment, in the person's words.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare this is a non-destructive, non-idempotent write. The description adds genuinely new behavior that annotations cannot carry: the comment is visible to everyone who can open the alarm and the alarm's creator is notified. It does not address auth requirements or failure modes, so it falls short of a 5.

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?

Four compact sentences with the action and target front-loaded, and no repetition of the title. The fragment 'For words; a heart is separate' is slightly telegraphic, which costs a point on structure but not on length.

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?

With no output schema, the description still covers purpose, audience, notification side effect, character limit, and the sibling alternative, which is most of what an agent needs to call it. Missing only permission/auth expectations and confirmation of what a successful call returns.

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 both parameters are already documented in structured data; the description's 'from its link or code' merely echoes the schema's link/comment definitions. The 280-character limit is reinforced but already enforced by the schema's maxLength. Baseline 3 is appropriate when the schema does the heavy lifting.

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 (posts) and resource (comment) scoped to an alarm the person rides or made, retrieved via its link or code. It also explicitly separates itself from a sibling: 'For words; a heart is separate' distinguishes it from heart_alarm, and the read/write contrast distinguishes it from read_comments.

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?

'For words; a heart is separate' routes the agent to heart_alarm for reactions, and 'an alarm the person rides or made' gives the eligibility condition. It stops short of stating when-not to use it or naming the alternative tool verbatim, but the context is clear enough to act on.

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

read_commentsRead an alarm's commentsA
Read-onlyIdempotent
Inspect

Reads an alarm's comments, newest first and up to 30, with its heart and comment counts, from its link or code. Only reads; posting and hearting are separate. Says when the person can comment only after joining. Comments are other people's words.

ParametersJSON Schema
NameRequiredDescriptionDefault
linkYesThe alarm's link or code.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: ordering (newest first), a result cap (up to 30), the returned fields (heart and comment counts), and a conditional visibility note about commenting after joining. It does not explain what happens past 30 comments, leaving a small gap.

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 key facts (scope, ordering, cap, returned counts, read-only nature) are front-loaded and dense, with no filler sentences. The closing line 'Comments are other people's words' is a stylistic observation rather than operational information and slightly dilutes the otherwise tight prose.

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 one-parameter, read-only tool with no output schema, the description covers ordering, result cap, returned counts, and the read-only boundary, which is nearly everything an agent needs. The one missing piece is whether older comments beyond the 30-item cap can be retrieved at all.

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?

There is a single required parameter with 100% schema description coverage ('The alarm's link or code'), and the description repeats that same meaning ('from its link or code') without adding format, prefix, or resolution details. With the schema doing the documentation work, this is the baseline case.

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 ('Reads an alarm's comments') plus scope details (newest first, up to 30, includes heart/comment counts). It explicitly distinguishes itself from the write siblings: 'Only reads; posting and hearting are separate,' which separates it from post_comment and heart_alarm.

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?

The description gives clear context for use (fetching an alarm's comment thread) and explicitly excludes posting and hearting by pointing out they are separate operations. It does not name the sibling tools directly, but the separation of read vs. write is unambiguous.

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

search_gifsSearch GIFsA
Read-onlyIdempotent
Inspect

Searches KLIPY's GIFs for a wallpaper, or lists trending ones when the search is empty, 24 to a page. For KLIPY GIFs only; LFG's own sounds and looks are a separate search. Each result has the address and id a GIF wallpaper takes. GIFs play from KLIPY and are never stored by LFG. No match returns a note.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoWhich page of 24.
queryNoWords to search, "dancing cat". Empty lists trending GIFs.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the read-only, idempotent, non-destructive, open-world profile, and the description adds real behavioral context beyond them: page size of 24, that GIFs stream from KLIPY and are never stored by LFG, and that a no-match search returns a note rather than an error.

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-loads the core action and the empty-query behavior in the first clause. The remaining sentences are dense but each carries information; "the address and id a GIF wallpaper takes" is slightly awkward phrasing but not padding.

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?

With no output schema, the description usefully covers the return shape (address and id per result) and the empty-result case. It does not mention pagination bounds (max page 20) or result ordering, minor gaps for a two-parameter search tool.

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 both parameters (page of 24, query with empty=trending) are already documented in the schema. The description's "24 to a page" and empty-query behavior restate the schema rather than adding syntax or format detail, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb+resource ("Searches KLIPY's GIFs for a wallpaper") plus the alternate trending mode, and carves out scope by noting LFG's own sounds and looks are a separate search. It never names the sibling tool that handles that other search, so differentiation is implied rather than explicit.

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?

Clearly explains the two modes: search for a wallpaper when a query is given, trending when the query is empty. It also signals that this tool is not for LFG's own sounds/looks, but stops short of naming the alternative or stating explicit exclusions.

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

search_librarySearch the LFG libraryA
Read-onlyIdempotent
Inspect

Searches LFG's own library. For LFG's own sounds and wallpapers; KLIPY GIFs and the person's own uploads are separate searches. sounds: over 500 songs, voices, tones and themes, each tagged with the moods it fits ("unhinged", "rise and shine", "panic", "calm bestie", "degen"), its energy and its voice; a category lists a whole shelf, and an empty search lists staff picks. looks: wallpapers by vibe or theme: a theme's pictures ("christmas", "birthday", "love", "halloween") and drawn looks. Returns up to 10 sounds, or for each of up to three vibes up to eight pictures and six drawn looks, each with the id an alarm takes.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYessounds for the alarm's sound, looks for a drawn wallpaper.
queryYesMoods, styles or words, "unhinged", "sweet morning", "drill sergeant", "golf". Empty lists staff picks (sounds) or every vibe (looks).
voiceNoSounds only: no voice, spoken, sung or wordless.
energyNoSounds only: how loud.
categoryNoSounds only: one of the library's categories, as the app lists them, by id: "cinematic", "drill_sergeant", "your_bestie", "sirens", "chimes", or with its group where two share a name, "music/anime". Lists the whole category; query is not needed with it.

TDQS

A4/5.0
Behavior4/5

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

With readOnly/idempotent/non-destructive annotations already covering the safety profile, the description adds genuine behavioral context: result ceilings (up to 10 sounds; up to 3 vibes yielding 8 pictures and 6 drawn looks each) and the fact that each result carries the id an alarm consumes. It omits error/rate-limit behavior, so not a 5.

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

Conciseness3/5

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

The core purpose is front-loaded, but the middle is a dense run-on ("sounds: over 500 songs, voices, tones and themes, each tagged with the moods it fits...") and the looks clause nests colons within colons. Most content earns its place, yet the phrasing is heavier than needed.

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 5-parameter read tool with no output schema, the description supplies the missing return-shape information (counts and the id an alarm takes) and the empty-query fallback, which is enough for an agent to call it correctly. Minor gaps remain around error handling and pagination, but nothing critical is absent.

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 kind, query, voice, energy and category including their enums and the empty-query behavior. The description mostly restates those semantics ("a category lists a whole shelf, and an empty search lists staff picks") without adding syntax or constraints beyond them, so the baseline 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?

The opening sentence states a specific verb and resource ("Searches LFG's own library") and immediately carves out the boundary against siblings by declaring that KLIPY GIFs and the person's own uploads are separate searches. An agent can distinguish this from search_gifs and list_my_media without inspecting either schema.

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 clear when-to-use context (LFG's own sounds and wallpapers) and an implicit when-not (GIFs and personal uploads live elsewhere), plus special-case guidance that an empty query lists staff picks or every vibe. It stops short of naming the alternative tools directly, so routing still requires a small inference.

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

set_event_alarmSet an event alarmAInspect

Sets an alarm for an event from its Luma or Partiful link: LFG reads the event's name, start time, place, picture and description, and the alarm rings that long before it starts. Only for Luma and Partiful event links; any other moment on the clock is a time alarm. The picture becomes its wallpaper, the event page its button link, and the description its note unless a note is given. A link whose start time cannot be read, or an event too soon for the chosen lead, returns an error. Returns the alarm and its link.

ParametersJSON Schema
NameRequiredDescriptionDefault
linkYesThe event's Luma or Partiful link.
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.
vibeNoThe 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.
reachNoWho can join: private (only the person), friends (people on its list, or with its link), public (anyone; listed in Discover).private
themeNoA 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).
titleNoShort name for the alarm. When absent, the event's name.
sourceNoThe event in another app this alarm is for, such as a meeting in the person's calendar. With the same source again, the person's existing alarm for it is changed (its time and title) instead of a second one being made.
surpriseNoFor a friends alarm: keep it a surprise. People who join see a curtain instead of its title, picture, sound and note until it rings. Free on every plan.
time_zoneYesThe person's IANA time zone, "America/New_York".
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.
button_linkNo
ring_beforeNoHow long before the start the alarm rings.1_hour
words_colorNoColour of the words as hex, "#D7FF00".
hide_triggerNoNeeded with surprise, true or false: whether to also keep back when and why it rings, so people who join only know that it will. A surprise is not made until it is given.
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_colorNoWallpaper background colour as hex, "#5B2BFF".
wallpaper_wordsNoWords drawn on the wallpaper, "WAKE UP"; a line break starts a new line.
people_confirmedNoWhether the person has confirmed the people and groups being added. Nobody is added or told without it.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare the safety profile (readOnlyHint=false, openWorldHint=true, destructiveHint=false), so the lower bar applies. The description adds real value beyond them: it lists the fields read from the link, the derived defaults (picture→wallpaper, page→button, description→note), and the two error conditions.

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 purpose and free of filler, with the scoping constraint and error cases placed sensibly. Slightly dense across five sentences, but each sentence (derivation, error, return) earns its place.

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 21-parameter tool with 95% schema coverage and no output schema, the description covers the essential behavior: what is read from the link, what gets derived, failure modes, and the return value. The many optional styling/social params are left to the schema, which documents them adequately.

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

Parameters4/5

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

Schema coverage is 95%, so the baseline is 3. The description goes beyond the schema by explaining how the link auto-populates several parameters (title, note, wallpaper, button link) and that a supplied note overrides the derived one — semantics the per-field descriptions don't state.

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+resource+source ('Sets an alarm for an event from its Luma or Partiful link') and immediately scopes the input type. It explicitly distinguishes itself from the sibling 'time alarm' for any other moment, so an agent can route without opening a schema.

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?

'Only for Luma and Partiful event links; any other moment on the clock is a time alarm' gives clear when-to-use plus one named alternative. It doesn't fully address the other alarm siblings (post/price/trader/webhook), but the scope constraint is explicit.

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

set_gifPut a GIF on an alarmA
Idempotent
Inspect

Makes a KLIPY GIF the wallpaper of an alarm the person made, from a KLIPY GIF's address and id. For KLIPY GIFs only; a library look or the person's own upload goes on by its id. It replaces the wallpaper the alarm had, plays from KLIPY and is never stored by LFG. An address that is not a KLIPY GIF returns an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe alarm's id.
queryNoWhat was searched to find it, if anything.
gif_idYesThe GIF's id.
gif_urlYesThe GIF's address.

TDQS

A3.9/5.0
Behavior4/5

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

Adds meaningful behavior beyond the annotations: it replaces the existing wallpaper, plays from KLIPY, is never stored by LFG, and returns an error for a non-KLIPY address. These are exactly the side effects and failure modes an agent needs, and they are consistent with idempotentHint=true and destructiveHint=false.

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?

Four sentences, front-loaded with the action, then scope, then side effects and error behavior. Slightly dense in the opening clause but every sentence contributes.

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 write tool with no output schema and annotations covering the safety profile, the description supplies replacement, storage, and error semantics. Only the return/confirmation behavior is left implicit, which is minor here.

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 all four parameters; the description only loosely references 'address and id'. Baseline 3 applies when the schema carries the parameter burden.

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 states a specific verb and resource – making a KLIPY GIF the wallpaper of an existing alarm – and scopes it precisely ('KLIPY GIFs only'). An agent can distinguish it from generic media tools like set_media or add_media_from_url without opening any schema.

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

Usage Guidelines3/5

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

It says 'For KLIPY GIFs only' and that a library look or own upload goes on 'by its id', which implies an alternative path but never names the sibling tool that handles it. Usage conditions are present but only implied, not routed explicitly.

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

set_mediaPut a library item or upload on an alarmA
Idempotent
Inspect

Puts something already in LFG on an alarm the person made, by its id: a library sound, a drawn look or theme picture, or one of the person's own uploads. For something already in LFG with an id; a new file goes on by link, as a file, or through the one-time page, and a KLIPY GIF by its address. use says where it goes: the wallpaper, the song, or the voiceover (the person's own sounds only). It replaces what that slot had. An id that matches nothing returns an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe alarm's id.
useYeswallpaper, song, or voiceover.
media_idYesA library sound's id, a drawn look's id, or an upload's id.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations cover read-only/idempotency/open-world, but the description adds genuinely new behavior: it overwrites the existing slot ('It replaces what that slot had') and defines the failure mode ('An id that matches nothing returns an error'). It also scopes the voiceover slot to the person's own sounds. The overwrite disclosure sits in mild tension with destructiveHint=false, though replacing an assignment (not deleting the underlying media) is arguably reversible and idempotent.

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

Conciseness3/5

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

Purpose is front-loaded, but the text is wordy and partly redundant ('by its id' recurs; 'already in LFG' appears twice) and the second sentence is a fragment that restates the first before pivoting to alternatives. It is readable but not tight.

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 3-parameter mutation tool with no output schema, the description covers purpose, sibling routing, slot semantics, overwrite behavior, and the error case. Only minor gaps remain (e.g., ownership/permission prerequisites beyond 'an alarm the person made').

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds a constraint not present in the schema: 'use' selects wallpaper/song/voiceover and voiceover is limited to the person's own sounds. It also clarifies that media_id can be a library sound id, a drawn look id, or an upload id.

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 ('Puts something already in LFG on an alarm ... a library sound, a drawn look or theme picture, or one of the person's own uploads'), and enumerates the accepted media classes so the tool is distinguishable from set_gif and the add_media_* family. An agent can tell what it does without opening the schema.

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?

Gives explicit routing conditions: use this for something already in LFG with an id, whereas 'a new file goes on by link, as a file, or through the one-time page, and a KLIPY GIF by its address'. The alternatives are described functionally rather than named (add_media_file, add_media_from_url, set_gif), so the agent must map descriptions to sibling names itself.

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

set_post_alarmSet a post alarmAInspect

Sets an alarm that rings on the person's phone when an X account posts something matching what the person described, or when a Twitch or YouTube channel goes live or posts a video. For an account's posts or streams; a token's price, a trader's trades and an event link are different alarms. watch_for applies to X only (LFG reads each new post against it); moment applies to Twitch and YouTube only. A channel name that cannot be found returns an error. Returns the alarm and its link.

ParametersJSON Schema
NameRequiredDescriptionDefault
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.
vibeNoThe 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.
reachNoWho can join: private (only the person), friends (people on its list, or with its link), public (anyone; listed in Discover).private
themeNoA 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).
titleNoShort name for the alarm. When absent, LFG names it.
momentNoFor Twitch or YouTube: going live, or posting a video. Twitch defaults to live.
accountYesThe account's handle or profile link, "elonmusk" or "https://x.com/elonmusk".
platformNoWhere the account is.x
surpriseNoFor a friends alarm: keep it a surprise. People who join see a curtain instead of its title, picture, sound and note until it rings. Free on every plan.
watch_forNoFor X: what in a post should ring the alarm, in plain words, "any post about a new token" or "anything at all". Not used for Twitch or YouTube.
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.
button_linkNo
words_colorNoColour of the words as hex, "#D7FF00".
hide_triggerNoNeeded with surprise, true or false: whether to also keep back when and why it rings, so people who join only know that it will. A surprise is not made until it is given.
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_colorNoWallpaper background colour as hex, "#5B2BFF".
wallpaper_wordsNoWords drawn on the wallpaper, "WAKE UP"; a line break starts a new line.
people_confirmedNoWhether the person has confirmed the people and groups being added. Nobody is added or told without it.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare this is a non-read-only, open-world, non-idempotent write. The description adds useful context beyond them: a nonexistent channel returns an error, the return is the alarm and its link, and the watch_for/moment parameters are platform-scoped. It does not address permissions, side effects on existing alarms, or rate limits, but the annotation coverage lowers the bar.

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-loads the core behavior (what rings the alarm and for which platforms) before moving to differentiation and platform-scoped caveats. Each sentence carries distinct information with no filler, though the platform-scoping sentence is slightly dense and could be tighter.

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?

No output schema exists, and the description supplies the missing return information (the alarm and its link) plus error behavior for unresolvable channels. With 21 parameters at 95% schema coverage and a clear platform/trigger model, an agent has enough to select and invoke this tool correctly.

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

Parameters4/5

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

Schema coverage is 95%, so parameter meaning is largely carried by the schema, but the description contributes cross-field semantics the schema does not state: watch_for is honored only for X, and moment only for Twitch/YouTube. That conditional coupling between the account/platform parameter and the trigger parameters is genuinely additive.

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 (sets an alarm) plus the exact trigger condition (X account posts something matching, Twitch/YouTube goes live or posts a video). It explicitly distinguishes itself from the sibling alarm tools by naming the other alarm domains: "a token's price, a trader's trades and an event link are different alarms."

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?

Clearly states the condition under which this alarm applies (X posts, Twitch/YouTube live/video) and routes other cases away from it by naming the competing alarm categories. It also states per-platform applicability of watch_for and moment. It stops short of naming the sibling tools (set_price_alarm, etc.) directly, so the routing is category-level rather than tool-level.

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

set_price_alarmSet a price alarmAInspect

Sets an alarm that rings on the person's phone when a token reaches a target price, or moves a percent from its price now. For one token's price; a trader or wallet trading, or anyone trading a token, is a different alarm. Takes the token's id, symbol and name, and exactly one of target_price_usd or percent. It rings once and then stops for good. Returns the alarm, the price it started from and its link.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe token's name, "Solana".
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.
vibeNoThe 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.
chainNoThe token's chain, "solana", "base", "ethereum".
reachNoWho can join: private (only the person), friends (people on its list, or with its link), public (anyone; listed in Discover).private
themeNoA 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).
titleNoShort name for the alarm. When absent, LFG names it.
symbolYesThe token's ticker, "SOL".
percentNoRings when the price moves this much from now: 25 for up 25%, -10 for down 10%.
surpriseNoFor a friends alarm: keep it a surprise. People who join see a curtain instead of its title, picture, sound and note until it rings. Free on every plan.
token_idYesThe token's id.
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.
button_linkNo
words_colorNoColour of the words as hex, "#D7FF00".
hide_triggerNoNeeded with surprise, true or false: whether to also keep back when and why it rings, so people who join only know that it will. A surprise is not made until it is given.
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_colorNoWallpaper background colour as hex, "#5B2BFF".
wallpaper_wordsNoWords drawn on the wallpaper, "WAKE UP"; a line break starts a new line.
contract_addressNoThe token's contract address, when it has one.
people_confirmedNoWhether the person has confirmed the people and groups being added. Nobody is added or told without it.
target_price_usdNoRings when the price reaches this, in US dollars, from either side.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare a non-read-only, non-idempotent, open-world write, and the description adds genuinely non-obvious traits: the alarm 'rings once and then stops for good' (one-shot, not recurring) and requires exactly one trigger parameter. These are behavioral facts beyond the annotation flags.

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-loads the core trigger, then constraints, then return behavior. Slightly loose in the middle ('a trader or wallet trading, or anyone trading a token') which restates the same exclusion twice, but overall tight and well-ordered.

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 24-parameter write tool with no output schema, the description covers the essentials: the trigger semantics, the required identity fields, the one-of constraint, the one-shot behavior, and even the return contents ('the alarm, the price it started from and its link'). The many cosmetic params (vibe, theme, snooze) are left to the schema, which is acceptable given 96% coverage.

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

Parameters4/5

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

Schema coverage is 96%, so the baseline is 3, but the description adds a real constraint the schema does not encode: exactly one of target_price_usd or percent must be supplied, and token_id/symbol/name are the required identity triple. That mutual-exclusivity rule is meaningful value beyond 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?

States a specific verb+resource+trigger: 'Sets an alarm that rings... when a token reaches a target price, or moves a percent from its price now.' It also distinguishes itself from the sibling set_trader_alarm by noting a trader/wallet trading alarm 'is a different alarm,' so an agent can route correctly without opening schemas.

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?

Gives clear context ('For one token's price') and contrasts with the trader/wallet alarm case, plus the selection constraint 'exactly one of target_price_usd or percent.' It stops short of naming the alternative sibling explicitly, so it's clear but not fully routing-complete.

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

set_time_alarmSet a time alarmAInspect

Sets an alarm that rings on the person's phone at a clock time: once on a date, or on repeating days of the week. For a moment on the clock (a wake-up, a meeting, a reminder); it does not watch anything online, and an event with a Luma or Partiful link is a different alarm. Takes the time and an IANA time zone, plus either a date or repeat days, never both. People added to a friends alarm are notified, and email addresses with no LFG account get an invitation. Returns the alarm, when it next rings, its link and a share picture.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate of a one-off alarm, "2026-11-02". Not used for a repeating alarm.
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.
timeYes24-hour time, "07:30".
vibeNoThe 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.
reachNoWho can join: private (only the person), friends (people on its list, or with its link), public (anyone; listed in Discover).private
themeNoA 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).
titleNoShort name for the alarm, "Gym", "Flight to Lisbon". When absent, LFG names it.
sourceNoThe event in another app this alarm is for, such as a meeting in the person's calendar. With the same source again, the person's existing alarm for it is changed (its time and title) instead of a second one being made.
ring_atNotogether: everyone rings at the same moment, this time in time_zone. local: this clock time on each person's own phone, wherever they are.together
surpriseNoFor a friends alarm: keep it a surprise. People who join see a curtain instead of its title, picture, sound and note until it rings. Free on every plan.
time_zoneYesThe person's IANA time zone, "America/New_York".
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.
button_linkNo
repeat_daysNoDays a repeating alarm rings, ["mon","tue","wed","thu","fri"]. Not used for a one-off.
words_colorNoColour of the words as hex, "#D7FF00".
hide_triggerNoNeeded with surprise, true or false: whether to also keep back when and why it rings, so people who join only know that it will. A surprise is not made until it is given.
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_colorNoWallpaper background colour as hex, "#5B2BFF".
wallpaper_wordsNoWords drawn on the wallpaper, "WAKE UP"; a line break starts a new line.
people_confirmedNoWhether the person has confirmed the people and groups being added. Nobody is added or told without it.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations only declare the safety profile (non-read-only, non-destructive, non-idempotent, closed-world). The description adds genuinely useful behavior: friends added are notified, email addresses without an LFG account receive an invitation, and the call returns the alarm, its next ring time, its link and a share picture. The 'date or repeat days, never both' constraint is also disclosed, which is exactly the kind of cross-field behavior the schema does not state.

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?

Three front-loaded sentences: purpose first, then boundary conditions, then side effects and return value. Dense with clauses but every sentence carries distinct information; no filler.

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?

Despite 23 parameters, nested objects and no output schema, the description covers the required inputs, the one-off vs repeating split, side effects on added people, and the return payload. The many optional styling fields (vibe, theme, snooze, wallpaper) are left to the 96%-covered schema, which is a reasonable division of labor.

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

Parameters4/5

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

Schema description coverage is 96%, so the per-field semantics are already handled; the baseline would be 3. The description rises above it by stating the mutually exclusive pairing of date vs repeat_days and the required time + IANA time zone, a schema-level relationship no individual property description captures.

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 with scope: an alarm that rings at a clock time, either once on a date or on repeating weekdays. It also explicitly carves itself out from the sibling family, noting it 'does not watch anything online' and that an event with a Luma/Partiful link is a different alarm, so an agent can separate it from set_event_alarm, set_webhook_alarm, set_post_alarm and the price/trader alarms.

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?

Gives clear usage context ('a wake-up, a meeting, a reminder') and an explicit exclusion for link-watching / event-link alarms. It stops short of naming the sibling tool to use instead (e.g. set_event_alarm), so routing is implied rather than fully specified.

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

set_trader_alarmSet a trader alarmAInspect

Sets an alarm that rings on the person's phone when a trader buys, sells or posts a thesis, when anyone on FOMO trades a token, or when a wallet buys or sells. For trades by a person, a wallet or anyone in a token; a token reaching a price is a different alarm. Takes exactly one of: a trader's handle (on FOMO, or a KOL GMGN tracks by X handle), a token's contract address, or a wallet address on Solana or an EVM chain. A thesis is on FOMO only, and a wallet alarm is never public. After ringing it stays quiet for 15 minutes, so a run of trades is one ring. Returns the alarm and its link.

ParametersJSON Schema
NameRequiredDescriptionDefault
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.
vibeNoThe 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.
reachNoWho can join: private (only the person), friends (people on its list, or with its link), public (anyone; listed in Discover).private
themeNoA 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).
titleNoShort name for the alarm. When absent, LFG names it.
watchNoWhat rings it. A thesis (a trader's written case for a token) is on FOMO only.
sourceNoFor a trader on both: fomo watches their FOMO trades and theses, gmgn watches the wallets GMGN tracks for them. FOMO when absent.
traderNoA trader's handle, "frankdegods". LFG looks for it on FOMO, then among the KOLs GMGN tracks by X handle.
min_usdNoThe smallest trade that rings it, in US dollars, any amount. Each source has a least it can see, and an amount under it is raised to it: FOMO from $3,000 (its feed carries buys from about there; a sell carries no size, so every sell by a watched trader counts), default 10000. GMGN from $100, default 500. A wallet from $50, default 5000.
surpriseNoFor a friends alarm: keep it a surprise. People who join see a curtain instead of its title, picture, sound and note until it rings. Free on every plan.
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.
button_linkNo
words_colorNoColour of the words as hex, "#D7FF00".
hide_triggerNoNeeded with surprise, true or false: whether to also keep back when and why it rings, so people who join only know that it will. A surprise is not made until it is given.
snooze_timesNoHow many times it can be snoozed: 3, 10 or unlimited.
silent_snoozeNotrue to snooze without the spoken roast LFG plays by default.
token_addressNoA token's contract address: rings when anyone on FOMO trades it.
snooze_minutesNoMinutes each snooze lasts: 5, 10, 15, 30 or 60.
wallet_addressNoA wallet's address, Solana or EVM (0x...): rings when it buys or sells.
wallpaper_colorNoWallpaper background colour as hex, "#5B2BFF".
wallpaper_wordsNoWords drawn on the wallpaper, "WAKE UP"; a line break starts a new line.
people_confirmedNoWhether the person has confirmed the people and groups being added. Nobody is added or told without it.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only declare the generic write/open-world/not-idempotent profile, and the description adds real behavior: a 15-minute quiet period after ringing ('a run of trades is one ring'), wallet alarms are never public, and it returns the alarm and its link. It does not note auth requirements or what happens on a duplicate alarm, so it stops short of a 5.

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?

Dense but front-loaded: trigger semantics first, then the target exclusivity rule, then the cooldown, then the return value. Sentences each carry content, though the middle sentence about trader handle sourcing (FOMO/KOL/GMGN) is slightly convoluted.

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?

For a 23-param tool with no required fields and no output schema, the description covers the decision-critical parts: what rings it, the mutually exclusive target, the cooldown, and the return value. Remaining gaps (cosmetic params) are fully documented in the schema at 96% coverage.

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

Parameters4/5

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

Schema coverage is 96%, so the baseline is 3, but the description contributes real semantics the schema lacks: the exclusivity constraint among trader/token_address/wallet_address (there is no oneOf in the schema), the FOMO-vs-GMGN trader distinction, and the cooldown behavior tied to the watch targets. Most of the 23 cosmetic params (vibe, theme, wallpaper) are left entirely to 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?

States a specific verb+resource (sets a trader alarm) and enumerates the exact trigger conditions: a trader buying/selling/posting a thesis, anyone on FOMO trading a token, or a wallet buying/selling. It also explicitly disambiguates from the sibling set_price_alarm by saying 'a token reaching a price is a different alarm.'

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?

Gives a clear selection rule: 'Takes exactly one of' a trader handle, token contract address, or wallet address, and scopes thesis to FOMO only and wallet alarms to never-public. It sets context well but does not name the alternative tools (set_price_alarm, set_event_alarm) or state when a trader alarm is the wrong choice beyond the price case.

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

set_webhook_alarmSet a webhook alarmAInspect

Sets an alarm that rings on the person's phone whenever its private web address is called: from a smart home (a garage door opening), a shop (a new sale), Zapier, IFTTT, a script, anything that can send a web request. For something only another system can see happen; a time, a post, a price, a trade or an event link each has its own alarm. Calls within its quiet time after a ring are ignored. Needs a paid plan; private or friends, never public. Returns the alarm, the address to call and its link.

ParametersJSON Schema
NameRequiredDescriptionDefault
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.
vibeNoThe 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.
reachNoWho can join: private (only the person) or friends (people on its list, or with its link).private
themeNoA 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).
titleYesWhat the alarm says when it rings, "Garage door is open".
surpriseNoFor a friends alarm: keep it a surprise. People who join see a curtain instead of its title, picture, sound and note until it rings. Free on every plan.
quiet_forNoAfter ringing, how long further calls are ignored, so a burst of calls rings once.5_min
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.
button_linkNo
words_colorNoColour of the words as hex, "#D7FF00".
hide_triggerNoNeeded with surprise, true or false: whether to also keep back when and why it rings, so people who join only know that it will. A surprise is not made until it is given.
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_colorNoWallpaper background colour as hex, "#5B2BFF".
wallpaper_wordsNoWords drawn on the wallpaper, "WAKE UP"; a line break starts a new line.
people_confirmedNoWhether the person has confirmed the people and groups being added. Nobody is added or told without it.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only declare the safety profile (readOnly=false, idempotent=false, destructive=false, openWorld=false). The description adds genuinely useful behavior beyond them: quiet-time suppression ('Calls within its quiet time after a ring are ignored'), the paid-plan requirement, the private/friends-only visibility constraint, and the returned payload (alarm, address to call, link).

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 purpose, then constraints and return values in a compact block of roughly 100 words for an 18-parameter tool. Sentences are long and list-heavy at points, but almost nothing is wasted.

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 complex mutation tool with 18 params and no output schema, the description covers purpose, prerequisites, key runtime behavior (quiet time), visibility limits and return values. It leaves the many cosmetic parameters (theme, vibe, snooze, wallpaper) to the schema, which is fair at 94% coverage, but a little more on the callable web address would help.

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?

With 94% schema description coverage, the schema already documents the 18 parameters in detail, so the baseline is 3. The description restates a few of them (quiet time, private/friends) but adds no syntax or format meaning beyond what the schema provides.

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 an alarm that rings... whenever its private web address is called') with the triggering mechanism spelled out. It differentiates from siblings by naming the parallel alarm types ('a time, a post, a price, a trade or an event link each has its own alarm'), which maps to set_time_alarm, set_post_alarm, set_price_alarm, set_trader_alarm and set_event_alarm.

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?

Gives a clear selection condition ('For something only another system can see happen') and prerequisites (paid plan; private or friends, never public). Alternatives are implied by pointing at the other alarm types, but it never says explicitly to use set_time_alarm etc. instead, so it stops short of full routing guidance.

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

show_alarmShow an alarmA
Read-onlyIdempotent
Inspect

Shows one of the person's alarms by its id, as it is now: its name, type, reach, on or off, next ring and link. Needs an alarm's id; it does not search by name or list alarms. Chat apps that support MCP Apps show it as the alarm's card. An id that is not one of the person's alarms returns an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe alarm's id.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description is free to add genuinely new behavior: the error returned for an id that isn't the person's alarm, the point-in-time ('as it is now') semantics, and the MCP Apps card rendering. It does not mention rate limits or pagination, but neither is relevant for a single-record fetch.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the core verb+resource, then constraints, then return shape. Every clause carries information an agent needs; nothing is redundant with the title.

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 enumerating the returned fields (name, type, reach, on/off, next ring, link) and disclosing the error case for foreign ids. Combined with annotations, an agent has everything needed to call and interpret this tool.

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% and the single uuid parameter is fully specified by the schema, including format and pattern. The description reinforces that the id must belong to the person's alarms but adds no syntax or format detail beyond the schema, so baseline 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 ('Shows one of the person's alarms by its id') plus the exact scope of what is returned, and explicitly separates itself from listing/searching siblings. An agent can distinguish it from list_my_alarms or update_alarm without opening any schema.

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?

Gives clear usage context (requires an id) and an explicit exclusion ('it does not search by name or list alarms'), which steers the agent away from misuse. It stops short of naming the alternative tool (e.g. list_my_alarms) as the way to obtain an id, so it is clear but not fully routing.

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

turn_alarm_on_offTurn an alarm on or offA
Idempotent
Inspect

Turns an alarm on or off without changing anything else about it. Keeps the alarm and everything on it; deleting is permanent and separate. Works on alarms the person made and ones they joined; for a joined alarm it only changes whether it rings for them. Returns the alarm as it is now.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe alarm's id.
onYestrue to turn it on, false to turn it off.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare write/idempotent/non-destructive, but the description adds real behavioral context beyond them: it keeps the alarm and all its contents, deleting is permanent and separate, and for a joined alarm it only toggles ringing for that user. It also discloses the return ('the alarm as it is now'). This is exactly the extra context annotations cannot carry.

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

Conciseness5/5

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

Four short sentences, each carrying distinct information (scope, preservation, scope of access, return). The core action is front-loaded and there is no filler.

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?

For a two-parameter toggle with full schema coverage and confirming annotations, the description supplies everything an agent needs: what changes, what is preserved, who it applies to, and the return shape. Nothing material is missing.

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 both parameters ('id' and 'on') are already fully documented in the schema. The description adds no syntax or format detail beyond restating the on/off toggle, so the baseline 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+resource ('Turns an alarm on or off') and immediately narrows scope ('without changing anything else about it'), which cleanly distinguishes it from update_alarm and delete_alarm. An agent can tell what it does without opening the schema.

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?

Gives clear usage context by noting it works on both owned and joined alarms, and that deleting is 'permanent and separate' – implicitly steering away from delete_alarm. It stops short of explicitly naming the alternative tools or stating when-not-to-use conditions, so it is a strong 4 rather than a 5.

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

update_alarmChange an alarmA
DestructiveIdempotent
Inspect

Changes an alarm the person made: its title, a time alarm's time or days, its drawn wallpaper (words and colours) or theme, its note, its button link, how it snoozes, who can join, whether it is a surprise, and who is let in or taken off. For an alarm that already exists and that the person made; it does not make new alarms, and on or off alone is a separate switch. Fields left out stay as they are. Riders of a friends alarm are told of a new look, and asked to keep riding or leave after a time change; people taken off lose it from their phone without being told. A public alarm cannot change once anyone has joined it. Returns the alarm and its link.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe alarm's id.
dateNoA time alarm's new date, making it a one-off, "2026-11-02".
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.
timeNoA time alarm's new time, 24-hour, "07:15". Its date or days stay unless given.
vibeNoThe 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.
reachNoWho can join: private, friends or public.
themeNoA 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).
titleNoNew short name for the alarm.
surpriseNoFor a friends alarm: keep it a surprise. People who join see a curtain instead of its title, picture, sound and note until it rings. Free on every plan.
add_groupsNoFor a friends alarm: names of the person's friend groups whose members to let in, "Family". Members get a notification.
add_peopleNoPeople to let in to a friends alarm, added to those already in: usernames of the person's LFG friends, or email addresses. Up to 20 at a time.
button_linkNo
repeat_daysNoA time alarm's new repeat days, making it repeating, ["sat","sun"].
words_colorNoColour of the words as hex, "#D7FF00".
hide_triggerNoNeeded with surprise, true or false: whether to also keep back when and why it rings, so people who join only know that it will. A surprise is not made until it is given.
snooze_timesNoHow many times it can be snoozed: 3, 10 or unlimited.
remove_peopleNoPeople to take off a friends alarm, by username or email. Anyone among them who already joined loses the alarm from their phone, without being told.
silent_snoozeNotrue to snooze without the spoken roast LFG plays by default.
snooze_minutesNoMinutes each snooze lasts: 5, 10, 15, 30 or 60.
wallpaper_colorNoWallpaper background colour as hex, "#5B2BFF".
wallpaper_wordsNoWords drawn on the wallpaper, "WAKE UP"; a line break starts a new line.
people_confirmedNoWhether the person has confirmed the people and groups being added. Nobody is added or told without it.

TDQS

A4.3/5.0
Behavior4/5

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

Adds real consequences beyond the annotations: riders of a friend's alarm are told of a new look and asked whether to stay after a time change, removed people lose the alarm silently, and public alarms freeze after joins. It also declares the return value ("Returns the alarm and its link"), which the tool has no output schema for. The destructiveHint=true annotation is consistent but the description doesn't explain why it is flagged destructive (e.g. remove_people) as sharply as it could.

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-loads verb, resource and the full set of mutable facets, then the boundaries, then side effects — good ordering with zero filler. The long enumeration of fields is dense but earns its place given 22 parameters; a slight trim would improve scanability.

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 22-parameter mutation with no output schema, the description covers preconditions, partial-update semantics, notification side effects, a hard block condition, and the return value. What it omits — mutual exclusivity of date and repeat_days, and the people_confirmed requirement — is documented in the schema, but would have been valuable to surface here given the tool's breadth.

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 95%, so the schema already carries field-level meaning; the description's list of changeable facets largely restates parameter names. It adds some framing ("whether it is a surprise", "who is let in or taken off") but does not clarify interactions such as date vs repeat_days exclusivity or the people_confirmed gate, which remain in the schema text only. Baseline 3 for a high-coverage 22-parameter 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?

Opens with a specific verb+resource ("Changes an alarm") and enumerates the mutable facets: title, time/days, wallpaper, theme, note, button link, snooze, reach, surprise, membership. It explicitly carves out the neighbouring operations ("it does not make new alarms, and on or off alone is a separate switch"), which cleanly separates it from set_time_alarm, turn_alarm_on_off and delete_alarm in the sibling list.

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?

States the precondition ("For an alarm that already exists and that the person made"), names the alternatives it is not (creation, toggling), and gives the constraint that blocks a call ("A public alarm cannot change once anyone has joined it"). It also supplies the partial-update rule: "Fields left out stay as they are."

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

use_invite_codeUse an invite codeAInspect

Uses a friend's LFG referral code for the person: it records who brought them in and makes them friends on LFG. For a referral code (LFG-…); an alarm's link or code is joined, not used here. Once per account and never their own code; it cannot be undone. The welcome gift opens for both when the person's first alarm rings. A code that is not one returns an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesThe referral code, "LFG-AB12C", or an invite link (lfg.gm/i/...).

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare non-readonly/non-idempotent, but the description adds substantial context beyond them: the one-time-per-account limit, the self-referral prohibition, irreversibility ('it cannot be undone'), the deferred welcome-gift side effect, and the error on an invalid code. This is rich behavioral disclosure.

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?

Dense and front-loaded, leading with the core action and constraints before the edge cases. Every sentence carries information, though the gift/error sentences could be slightly tighter.

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?

For a one-parameter mutation with no output schema, the description covers action, constraints, irreversibility, deferred effects, and error behavior. Nothing an agent needs to call it correctly is missing.

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% and the single 'code' parameter is fully documented in the schema. The description only echoes the LFG-… format and adds the referral-vs-alarm distinction, so it adds little beyond the structured field.

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 ('Uses a friend's LFG referral code'), and explicitly distinguishes itself from the alarm-joining path ('an alarm's link or code is joined, not used here'). An agent can separate this from join_alarm without opening either schema.

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?

Gives a clear selection condition: use this for a referral code (LFG-…), while an alarm's link/code is joined elsewhere. Constraints (once per account, never your own code) further scope usage, though it does not name the alternative sibling tool outright.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 33 tool updates
    • First observedadd_media_file
    • First observedadd_media_from_url
    • First observedanswer_join_request
    • First observedbrowse_discover
    • First observeddelete_alarm
    • First observedfind_token
    • First observedget_invite_card
    • First observedget_upload_link
    • First observedget_wake_board
    • First observedheart_alarm
    • First observedjoin_alarm
    • First observedlist_friends
    • First observedlist_join_requests
    • First observedlist_my_alarms
    • First observedlist_my_media
    • First observedlist_riders
    • First observedopen_link
    • First observedpost_comment
    • First observedread_comments
    • First observedsearch_gifs
    • First observedsearch_library
    • First observedset_event_alarm
    • First observedset_gif
    • First observedset_media
    • First observedset_post_alarm
    • First observedset_price_alarm
    • First observedset_time_alarm
    • First observedset_trader_alarm
    • First observedset_webhook_alarm
    • First observedshow_alarm
    • First observedturn_alarm_on_off
    • First observedupdate_alarm
    • First observeduse_invite_code

Publisher details

Operator
LFG Alarm · Publisher source
Operator website
https://lfg.gm · Publisher source
Vendor relationship
First-party · Publisher source
Trust center
Not available
Restrictions
An alarm rings through the LFG Alarm app on iPhone or Android, or on lfg.gm in a browser, so the person needs one of those signed in to the same account. Some alarm types and limits depend on the plan. For plans and pricing, go to lfg.gm. · Publisher source

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources