Skip to main content
Glama

Server Details

Notifications, reminders and alarm-style alerts on the user's iPhone. Sign in with OAuth.

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

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation2/5

The core tools `alert` and `create_alarm` substantially overlap: both can send an immediate notification or a timed reminder, and both distinguish ringing/urgent behavior. The description explains `create_alarm` as a legacy compatibility tool, but an agent still has two plausible choices for the same action, which creates real misselection risk.

Naming Consistency4/5

Most tools follow a clear snake_case verb_noun pattern: `cancel_alarm`, `create_alarm`, `list_alarms`, `rename_agent`, `update_alarm`. The main outlier is `alert`, which lacks the `_alarm` suffix, but the overall convention remains readable and mostly predictable.

Tool Count4/5

Six tools is a reasonable scope for an alarm/reminder server, covering the main lifecycle operations without being bloated. The count is slightly inflated by the legacy `create_alarm` duplicate, but it is not excessive.

Completeness4/5

The surface covers sending, listing, updating, cancelling, and renaming agent context. Minor gaps exist, such as no direct get-by-id or explicit snooze/delete-history operation, but the core lifecycle is covered and agents can work around the missing pieces.

Available Tools

6 tools
alertAlert the userAInspect

Alert the user on their iPhone. The one tool for both kinds:

  • Without at: a notification, now. It goes to the app's Notifications feed.

  • With at: a reminder at that time, in the app's Reminders list. It only reaches the signed-in user's own iPhone, never anyone else. Use at ONLY when the user names a clock time or date ("at 18:00", "tomorrow", "in an hour"). Anything tied to an event ("when you finish", "if the deploy fails", "when it's ready") you send yourself at that moment, WITHOUT at. ring: true rings like an alarm clock, through silent mode, until the user answers (Done or Snooze): "call me", "ring me", "wake me" (in any language). AgentAlarm places no real phone calls. "Notify / tell / remind me when X" = no ring (the default). sound only applies when it rings. ends_at and countdown only apply to reminders (with at). "Show a countdown / timer to " = a reminder at the event time with countdown: true. Examples:

  • "Done" -> alert(title: "Done: refactor")

  • "Call me when done" -> alert(title: "Done: refactor", ring: true), sent when you are done

  • "Remind me at 18 to buy milk" -> alert(title: "Buy milk", at: "18:00")

  • "Wake me at 7" -> alert(title: "Wake up", at: "07:00", ring: true)

  • "Countdown to the Champions League final" -> alert(title: "Champions League final", at: , countdown: true, icon: "sportscourt")

NameRequiredDescriptionDefault
atNoOnly when the user named a time or date: makes a reminder at that time. ISO 8601 (e.g. 2026-10-23T18:00:00+03:00, without an offset in the user's timezone), or a clock time alone ("18:00": its next occurrence). Omit it for a notification now.
bodyNoOptional details. Supports line breaks and URLs: line breaks are kept, and links, phone numbers and addresses can be tapped in the app.
iconNoOptional. The icon shown with it in the app, the Live Activity and the widget. Pick the one that fits, or omit it for the default (bell). Icons: bell: anything else (the default); checkmark.circle: a task, job or build finished; exclamationmark.triangle: an error, incident, failure or outage; calendar: a meeting, appointment, deadline or event; sportscourt: sport: a match, a game, a workout; gift: a birthday, anniversary or holiday; cart: shopping, orders, deliveries, prices; airplane: travel: flights, trips, check-in; heart: health and personal life: medication, family, self-care; briefcase: work: reviews, follow-ups, documents, clients.
ringNotrue: rings like an alarm until answered ("call/ring/wake me"). Default false: a quiet notification.
colorNoOptional. The colour in the app (its icon in the feed and the list, the alarm screen and the Live Activity). Use the colour the user asks for. Otherwise pick the one that fits best, or omit it for the default (blue). Colours: blue: everything else (the default); red: critical: incidents, outages, failures, hard deadlines; orange: important or due soon: reviews, renewals, follow-ups; green: personal and health: sport, medication, family errands, money; purple: events and fun: meetings, birthdays, trips, matches.
soundNoOptional. The sound it rings with: only when it rings (urgent, ring: true); a quiet one is a notification with the sound from the app's Settings. Use the sound the user asks for. Otherwise omit it for the user's chosen default sound (picked in the app's Settings), or pick one when the context clearly suggests it: a football match -> stadium, something that must wake the user -> loudalarm or urgentpulse, a gentle nudge -> calmpiano or softbells. Sounds, calm to loud: default: the iPhone's standard system alarm sound, familiar; calmpiano: calm soft piano, gentle: quiet nudges, evenings; softbells: soft bells, gentle and quiet: a reminder that must not startle; sunrise: slowly rising warm tones: a gentle wake-up in the morning; chime: a clear short chime, neutral: everyday reminders; brightmarimba: bright cheerful marimba, the classic phone alarm feel: a normal alarm; upbeatpop: upbeat pop melody, energetic and happy: workouts, fun plans; urgentpulse: fast insistent pulsing beeps, hard to ignore: something urgent, incidents; loudalarm: very loud aggressive alarm that wakes you up: must not be slept through; stadium: football stadium fans chanting with drums and air horns: matches, sports events.
titleYesShort, the most important words first, e.g. "Done: refactor" or "Buy milk".
ends_atNoReminders only: when it ends (ISO 8601, after `at`). The phone shows a Live Activity counting down to it, from `at` until then.
locationNoOptional. An address or place; the app offers to open it in Maps. One line.
countdownNoReminders only: show a countdown to `at` (a Live Activity in the last hours, and the Home Screen widget).

TDQS

A4.4/5.0
Behavior5/5

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

Annotations declare non-read-only, non-destructive, non-idempotent, non-open-world, and the description goes well beyond them: it names the blast radius ("only reaches the signed-in user's own iPhone, never anyone else"), the artifact created (feed entry vs reminder list entry), the ring semantics (through silent mode, until Done/Snooze), and a clear disclaimer that no real phone calls are placed. That is exactly the 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.

Conciseness4/5

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

Front-loaded with the one-line purpose and the two-mode split before any rules, and the per-parameter reference material is correctly left to the schema rather than duplicated. It is long, and the six worked examples sit at the edge of what's needed, but each one resolves a genuinely ambiguous mapping, so the length mostly earns itself.

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 10-parameter mutation tool with no output schema, the description covers mode selection, scope, and phrasing-to-parameter mapping thoroughly. The remaining gap is the return behavior: since cancel_alarm/update_alarm/list_alarms exist as siblings, an agent needs to know whether this call yields an identifier it can later use — and with no output schema, that is nowhere stated.

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

Parameters5/5

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

Schema coverage is already 100%, so the baseline would be 3, but the description materially adds to it: it gates `at` on the user having named a clock time or date, restricts `sound` to the ringing case and `ends_at`/`countdown` to reminders, and maps natural-language utterances to full parameter combinations ("Wake me at 7" -> at + ring, "Countdown to..." -> at + countdown + icon). These cross-parameter constraints are not derivable from the schema alone.

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 ("Alert the user on their iPhone") and immediately splits the tool into its two modes — a notification now versus a reminder at a time — with the destination of each (Notifications feed vs Reminders list). It does not, however, distinguish itself from the alarm siblings (create_alarm, update_alarm), which is a real ambiguity given that `ring: true` produces something the user would call an 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?

Unusually explicit about when to use `at` versus omit it, including the negative case ("Anything tied to an event... you send yourself at that moment, WITHOUT `at`") and the ring-vs-quiet rule keyed to phrasing like "call me"/"wake me". What's missing is routing guidance toward the alarm siblings — nothing says which tool to reach for when the user asks to cancel, list, or change an existing alarm.

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

cancel_alarmCancel a reminderA
DestructiveIdempotent
Inspect

Cancel an alarm so it no longer rings. It stays in history with status "cancelled".

NameRequiredDescriptionDefault
idYesAlarm id from list_alarms.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds genuinely new context by disclosing the soft-delete behavior ('stays in history with status cancelled'), which tells the agent the record survives rather than being purged — a meaningful detail annotations don't convey.

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?

Two short sentences with zero waste: the effect is front-loaded and the post-condition follows. Nothing redundant and nothing padded.

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 mutation with full annotation coverage and no output schema, the description supplies the key missing piece — what happens to the alarm afterward. Minor gaps like permissions or whether a cancelled alarm can be reinstated keep it from a 5.

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 single 'id' parameter is documented as coming from list_alarms, so the description has nothing extra to add. Baseline 3 applies for a one-param tool whose schema does the work.

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 (cancel an alarm) and its immediate effect ('no longer rings'), which is clearly distinct from create_alarm, update_alarm, and list_alarms. It stops short of naming a sibling, so it lands at 4 rather than 5.

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: the schema note 'Alarm id from list_alarms' hints that discovery precedes cancellation, but the description never says when to cancel versus update_alarm or rename_agent, nor does it mention prerequisites.

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

create_alarmCreate an alert (legacy)AInspect

Create an alarm on the user's iPhone (kept for agents set up before 2026-10). Without fire_at it is a notification now (the app's feed); with fire_at a reminder at that time. type "normal": a quiet notification. type "urgent": an alarm that rings through silent mode and Focus until the user taps Done or Snooze. Use urgent only when the user must not miss it. "Call me", "ring me", "phone me", "wake me" (in any language) means an urgent alarm: now, or at the time they name. Optional color: pick the one that fits (see the color argument), or the one the user asks for. Optional sound (urgent alarms only): omit it for the user's default sound, or pick one that fits (see the sound argument).

NameRequiredDescriptionDefault
bodyNoOptional details. Supports line breaks and URLs: line breaks are kept, and links, phone numbers and addresses can be tapped in the app.
iconNoOptional. The icon shown with it in the app, the Live Activity and the widget. Pick the one that fits, or omit it for the default (bell). Icons: bell: anything else (the default); checkmark.circle: a task, job or build finished; exclamationmark.triangle: an error, incident, failure or outage; calendar: a meeting, appointment, deadline or event; sportscourt: sport: a match, a game, a workout; gift: a birthday, anniversary or holiday; cart: shopping, orders, deliveries, prices; airplane: travel: flights, trips, check-in; heart: health and personal life: medication, family, self-care; briefcase: work: reviews, follow-ups, documents, clients.
typeNoDefault normal.
colorNoOptional. The colour in the app (its icon in the feed and the list, the alarm screen and the Live Activity). Use the colour the user asks for. Otherwise pick the one that fits best, or omit it for the default (blue). Colours: blue: everything else (the default); red: critical: incidents, outages, failures, hard deadlines; orange: important or due soon: reviews, renewals, follow-ups; green: personal and health: sport, medication, family errands, money; purple: events and fun: meetings, birthdays, trips, matches.
soundNoOptional. The sound it rings with: only when it rings (urgent, ring: true); a quiet one is a notification with the sound from the app's Settings. Use the sound the user asks for. Otherwise omit it for the user's chosen default sound (picked in the app's Settings), or pick one when the context clearly suggests it: a football match -> stadium, something that must wake the user -> loudalarm or urgentpulse, a gentle nudge -> calmpiano or softbells. Sounds, calm to loud: default: the iPhone's standard system alarm sound, familiar; calmpiano: calm soft piano, gentle: quiet nudges, evenings; softbells: soft bells, gentle and quiet: a reminder that must not startle; sunrise: slowly rising warm tones: a gentle wake-up in the morning; chime: a clear short chime, neutral: everyday reminders; brightmarimba: bright cheerful marimba, the classic phone alarm feel: a normal alarm; upbeatpop: upbeat pop melody, energetic and happy: workouts, fun plans; urgentpulse: fast insistent pulsing beeps, hard to ignore: something urgent, incidents; loudalarm: very loud aggressive alarm that wakes you up: must not be slept through; stadium: football stadium fans chanting with drums and air horns: matches, sports events.
titleYesShort text shown on the alarm.
ends_atNoReminders only: when it ends (ISO 8601, after fire_at).
fire_atNoOnly when the user named a time: a reminder then. ISO 8601 with offset, e.g. 2026-10-23T09:00:00+03:00. Without an offset the user's timezone is used. Omit for a notification now.
locationNoOptional. An address or place; the app offers to open it in Maps. One line.
countdownNoReminders only: show a countdown to fire_at on the phone.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only declare write/non-destructive/non-idempotent, and the description adds substantial behavior beyond that: no fire_at yields an immediate notification, fire_at yields a reminder, and urgent alarms ring through silent mode and Focus until Done or Snooze — a real side effect an agent must know before calling. It also flags the tool's legacy status, which is behavioral context nothing else carries.

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 mode split, and the color/sound/icon advice is compressed into pointers ("see the sound argument") rather than repeating the enum text. Still somewhat long for a create tool, with a few sentences that restate schema-documented defaults, but nothing is wasted outright.

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 10 optional parameters, no output schema, and annotations covering only the safety profile, the description carries the load well: it covers both execution modes, urgency semantics, silence/Focus behavior, and guidance for the optional presentation fields. An agent has everything needed to call it correctly without opening the schema.

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; the description still adds cross-parameter policy the schema documents only field-by-field — that sound applies only to urgent ringing alarms and that fire_at should be supplied only when the user named a time. It does not add format details for fire_at/ends_at/countdown beyond the schema, so it stops short of a 5.

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 ("Create an alarm on the user's iPhone") and immediately splits the behavior into the two modes an agent must choose between: notification now vs. reminder at fire_at. The "legacy / kept for agents set up before 2026-10" note signals it may be superseded, but it never names the replacement or explains how it differs from the sibling tool `alert`, so differentiation is incomplete.

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 strong, explicit when-to-use rules: "Use urgent only when the user must not miss it," plus a phrase-to-intent mapping ("call me", "ring me", "wake me" in any language → urgent alarm). It also says when to omit color and sound. It never routes the agent among siblings (create vs. update_alarm vs. alert), so the alternatives half of the guidance is missing.

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

list_alarmsList reminders and notificationsA
Read-onlyIdempotent
Inspect

List the user's reminders ordered by time: active (scheduled/snoozed) ones unless status is given. With include_notifications, also the notifications sent in the last 24 hours (newest first), so you do not send the same one twice. Also returns the current server time and the user's timezone.

NameRequiredDescriptionDefault
toNoOnly alarms with fire_at at or before this ISO 8601 time.
fromNoOnly alarms with fire_at at or after this ISO 8601 time.
limitNoMax results, default 500.
statusNoFilter by status. Default: ["scheduled", "snoozed"].
include_notificationsNoAlso return the notifications of the last 24 hours (default false).

TDQS

A4.2/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), so the description's value is in the behavioral detail it adds: default status filtering, time-ordered results, newest-first notification ordering, and the 24-hour window. It also discloses an extra return payload (current server time and user timezone) not visible anywhere else. It does not discuss limit/truncation behavior when results exceed the cap.

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 tight sentences with the default scope and ordering front-loaded, then the optional branch, then the return payload. Every clause carries information, though the parenthetical '(scheduled/snoozed) ones unless status is given' is compressed at the cost of 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?

No output schema exists, yet the description compensates by naming the extra non-alarm payload (server time, timezone) an agent needs for scheduling decisions. For a five-optional-parameter read tool with full schema coverage, nothing required 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 coverage is 100%, so every parameter including the status enum and default is already documented in structured form. The description's mentions of the default status set and include_notifications largely restate the schema, adding only the rationale for deduplicating notifications. Baseline 3 is appropriate when the schema carries the parameter semantics.

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 (list the user's reminders) plus the ordering and the default filter scope (active/scheduled/snoozed unless status is given). The optional include_notifications branch is described precisely as notifications from the last 24 hours, newest first. Against siblings like create_alarm, update_alarm and cancel_alarm, the read-only listing role is unmistakable.

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 concrete usage driver: enable include_notifications 'so you do not send the same one twice', which tells the agent when that flag matters. It also defines the default call shape (active alarms only). It does not explicitly name when to prefer a sibling or when not to call this tool, so it stops short of full guidance.

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

rename_agentRename this agentA
DestructiveIdempotent
Inspect

Rename yourself: change the name of the key you are connected with, as the user sees it in the AgentAlarm app (the list of connected agents, and the tag on the reminders you created). Only your own key is renamed. Use it when the user asks, or when the name no longer says what you are and where you run, e.g. "Claude Code on Alex's MacBook".

NameRequiredDescriptionDefault
nameYesYour new name, one line, at most 60 characters (longer names are cut).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true and idempotentHint=true. The description adds real context beyond them: the change is user-visible in two places (the connected-agents list and reminder tags) and is limited to the caller's own key. It does not explain that the change is trivially reversible by renaming again, which would soften the destructiveHint a caller sees.

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, then usage conditions, then an example. Every clause is informative; the parenthetical explaining where the name appears is worth its length. Minor awkwardness: the first sentence is split across a line break mid-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?

For a one-parameter mutation with no output schema but full annotations, the description covers scope, visibility of the effect, and when to invoke it. Missing only an indication of what happens on success or on invalid input (e.g., an empty name), which is a small residual gap.

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% and the single 'name' parameter is documented there, so baseline is 3. The description earns above baseline by supplying a naming convention and example ('Claude Code on Alex's MacBook'), which tells the agent what a good value looks like beyond the 60-character constraint.

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 ('Rename yourself: change the name of the key you are connected with') and pins the scope with 'Only your own key is renamed.' None of the alarm siblings perform renaming, so the agent can distinguish it immediately.

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 trigger conditions: 'Use it when the user asks, or when the name no longer says what you are and where you run,' with a concrete example name. It does not name an alternative tool or a when-not case, but no sibling overlaps this function, so the guidance is effectively complete.

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

update_alarmChange a reminderA
DestructiveIdempotent
Inspect

Change a reminder (or the texts, location, colour, icon or sound of a notification). Pass only the fields to change. Setting fire_at re-arms the reminder (status becomes scheduled), even if it was done or cancelled, and moves ends_at with it. color / icon / location: another one, or null for the default. sound (ringing alerts only): another sound, or null to go back to the user's default sound. ends_at: null removes the end. countdown: true or false.

NameRequiredDescriptionDefault
idYesAlarm id from list_alarms.
bodyNoOptional details. Supports line breaks and URLs: line breaks are kept, and links, phone numbers and addresses can be tapped in the app.
iconNoOptional. The icon shown with it in the app, the Live Activity and the widget. Pick the one that fits, or omit it for the default (bell). Icons: bell: anything else (the default); checkmark.circle: a task, job or build finished; exclamationmark.triangle: an error, incident, failure or outage; calendar: a meeting, appointment, deadline or event; sportscourt: sport: a match, a game, a workout; gift: a birthday, anniversary or holiday; cart: shopping, orders, deliveries, prices; airplane: travel: flights, trips, check-in; heart: health and personal life: medication, family, self-care; briefcase: work: reviews, follow-ups, documents, clients.
typeNo
colorNoOptional. The colour in the app (its icon in the feed and the list, the alarm screen and the Live Activity). Use the colour the user asks for. Otherwise pick the one that fits best, or omit it for the default (blue). Colours: blue: everything else (the default); red: critical: incidents, outages, failures, hard deadlines; orange: important or due soon: reviews, renewals, follow-ups; green: personal and health: sport, medication, family errands, money; purple: events and fun: meetings, birthdays, trips, matches.
soundNoOptional. The sound it rings with: only when it rings (urgent, ring: true); a quiet one is a notification with the sound from the app's Settings. Use the sound the user asks for. Otherwise omit it for the user's chosen default sound (picked in the app's Settings), or pick one when the context clearly suggests it: a football match -> stadium, something that must wake the user -> loudalarm or urgentpulse, a gentle nudge -> calmpiano or softbells. Sounds, calm to loud: default: the iPhone's standard system alarm sound, familiar; calmpiano: calm soft piano, gentle: quiet nudges, evenings; softbells: soft bells, gentle and quiet: a reminder that must not startle; sunrise: slowly rising warm tones: a gentle wake-up in the morning; chime: a clear short chime, neutral: everyday reminders; brightmarimba: bright cheerful marimba, the classic phone alarm feel: a normal alarm; upbeatpop: upbeat pop melody, energetic and happy: workouts, fun plans; urgentpulse: fast insistent pulsing beeps, hard to ignore: something urgent, incidents; loudalarm: very loud aggressive alarm that wakes you up: must not be slept through; stadium: football stadium fans chanting with drums and air horns: matches, sports events.
titleNo
ends_atNoReminders only: the new end (ISO 8601, after fire_at), or null for none.
fire_atNoNew time, ISO 8601 with offset (reminders only).
locationNoOptional. An address or place; the app offers to open it in Maps. One line.
countdownNoReminders only: show a countdown to fire_at, or not.

TDQS

A3.8/5.0
Behavior4/5

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

The description discloses a non-obvious state transition the annotations cannot express: setting fire_at re-arms the reminder even if it was done or cancelled, and moves ends_at with it. That is exactly the kind of side effect an agent needs. It does not cover permissions or the response shape, but with destructiveHint/idempotentHint already declared, this is solid added context.

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?

One dense paragraph that front-loads purpose and then walks each special field in a predictable order, with no filler sentences. The opening parenthetical is the only awkward part — it reads as a clarification of alarm vs notification but adds little for an agent that has the schema.

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

Completeness4/5

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

For an 11-parameter destructive mutation with strong schema coverage and no output schema, the description covers the risky part (re-arming a completed/cancelled reminder) and the null-reset semantics for every optional field. It stops short of describing the returned object, which is a minor gap given there is no output schema to lean on.

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 already 82%, so the baseline would be 3; the description earns an extra point by spelling out null semantics the schema leaves implicit — null color/icon/location reverts to the default, null sound returns to the user's default sound, null ends_at removes the end. It also restates the reminders-only constraint for fire_at and ends_at, keeping the enum-heavy fields interpretable without opening the schema.

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 ('Change') and resource ('a reminder'), and enumerates the mutable facets (texts, location, colour, icon, sound, plus the title/body fields). An agent can tell it apart from create_alarm, cancel_alarm and list_alarms, though the parenthetical about 'a notification' is slightly muddling and no sibling is named explicitly.

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?

'Pass only the fields to change' is a genuinely useful partial-update rule, and the fire_at note implies when this tool's re-arm behavior matters. But there is no explicit when-to-use vs create_alarm/cancel_alarm/rename_agent guidance, so routing must be inferred from the tool name.

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. 6 tool updates
    • First observedalert
    • First observedcancel_alarm
    • First observedcreate_alarm
    • First observedlist_alarms
    • First observedrename_agent
    • First observedupdate_alarm

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to send push notifications and interactive alerts to iPhone and Mac devices via the BotBell app. It allows AI to receive user replies and manage notification bots for tasks like alerts, reminders, and remote approvals.
    2
    10 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to send native macOS notifications for task completion alerts and reminders. Supports interactive features like custom system sounds, action buttons, and user replies directly from the notification center.
    201 npm
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables AI agents to reach users on their phone through push notifications, and to raise urgent, escalating alarms that fall back to a voice call until someone acknowledges. It also ships hooks that notify users automatically when Claude Code or Codex needs input or finishes a turn.
    3
    14 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources