Skip to main content
Glama

Server Details

Meeting agenda timer for AI assistants: build agendas in chat, share a live synced countdown.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.4/5.0

Scored across 8 tools

Disambiguation5/5

Each tool has a crisp, non-overlapping role: block-level add/remove/update/reorder versus agenda-level create/get/rename/token-rotate. The descriptions explicitly fence off behavior (e.g. add_block 'adds only', update_block 'changes one block only', reorder_blocks 'only reorders'), so an agent can select correctly with no plausible confusion.

Naming Consistency5/5

Perfectly consistent verb_noun snake_case throughout (add_block, create_agenda, get_agenda, remove_block, reorder_blocks, rotate_edit_token, update_agenda, update_block). The only nit is update_agenda actually renames, but the pattern itself is uniform and predictable.

Tool Count5/5

Eight tools is well within the ideal 3-15 range and each one owns a distinct operation. No redundant or filler tools; the set is tightly scoped to agenda lifecycle plus block editing.

Completeness4/5

Covers full block CRUD, reorder, agenda create/read/rename, and edit-token rotation—solid lifecycle coverage. Minor gaps: no delete_agenda/expiry management and no way to re-read an agenda from only a share link, but these are workable around.

Available Tools

8 tools
add_blockAdd a block to an agendaAInspect

Adds one block to an existing agenda: at the end, above a final wrap-up, or directly after after_block_id.

Adds only — it does not reorder or change any existing block. Returns the full updated agenda, so no get_agenda call is needed afterwards.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesShort, active, scannable on a countdown screen.
block_typeYesInternal classification for aggregate analysis, inferred from the content; shown on no BriefMe page.
edit_tokenYesThe edit_token returned by create_agenda.
descriptionNoOptional one-line note, only when the title is ambiguous.
after_block_idNoInsert directly after this block id. Omit to add at the end.
duration_secondsYesHow long this block runs, in seconds.

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYes
blocksYesThe blocks in the order they run.
share_urlYesThe read-only agenda with the live timer; safe to give to attendees.
expires_atYesISO 8601. null when the agenda is saved to an account and does not expire.
total_secondsYesSum of every block's duration_seconds.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the bar is lower; the description still adds real value by stating that existing blocks are untouched and that the full updated agenda is returned, removing a follow-up get_agenda call.

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?

Two tight paragraphs with the insertion behavior front-loaded and no filler. Minor redundancy between 'Adds one block' and 'Adds only' plus a duplicated word in 'directly after after_block_id' keep it just under 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?

For a single-block insert with full schema coverage and an output schema, the description covers positioning, non-destructive scope, and return behavior — everything an agent needs 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 description coverage is 100%, so every parameter (including edit_token and block_type) is already documented in the schema. The description only restates after_block_id's 'omit to add at the end' behavior, 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?

Specific verb+resource ('Adds one block to an existing agenda') with the three insertion positions enumerated, which separates it cleanly from create_agenda, update_block and reorder_blocks 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?

The clause 'Adds only — it does not reorder or change any existing block' implicitly routes the agent away from reorder_blocks/update_block, and the after_block_id semantics tell it which variant of the call to make. It stops short of explicitly naming the alternative tools or stating prerequisites.

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

create_agendaCreate a meeting agendaAInspect

Creates a timed meeting agenda — a shareable countdown timer that walks attendees through timeboxed topics in sync. Use when the user wants a meeting timer, timeboxes, a run of show, a workshop or standup schedule, or to keep a meeting on time. Not for calendar scheduling or note-taking, and a two-item chat needs no timer.

Returns edit_url (the private control page: start, pause, advance and finish the meeting, and edit blocks by hand), share_url (the read-only live timer for attendees, safe to post anywhere) and edit_token (needed by every other BriefMe tool, and the only way back into this agenda). The user needs both links.

When the blocks depart from BriefMe's standard shape — an opening, a wrap-up, planned breaks — the result also carries structure_suggestions, each naming the block to add and its length; add_block and reorder_blocks apply them.

Block durations add up to the meeting length; when none is given, a standup is about 15 minutes, a 1:1 about 30, sprint planning 60 to 90. Most agendas are three to eight blocks. Titles are read off a wall-sized countdown, so six words or fewer read best; a description is useful only when the title alone is ambiguous.

Agendas expire after 7 days and cannot be recovered afterwards.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesShort name for the meeting, e.g. "Weekly engineering sync".
blocksYesThe agenda blocks, in the order they will run.
languageNoThe user's conversation language as a two-letter ISO 639-1 code (e.g. 'de'). Localizes the standard block titles quoted in structure_suggestions. Unsupported values fall back to English.

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYes
blocksYesThe blocks in the order they run.
edit_urlYesThe user's private control page. Give it to the user; never post it anywhere shared.
share_urlYesThe read-only agenda with the live timer; safe to give to attendees.
edit_tokenYesWhat every other tool takes. Keep it for the rest of the conversation.
expires_atYesISO 8601. null when the agenda is saved to an account and does not expire.
instructionsYesRead this first: how to reply to the user.
upgrade_hintNoPresent only on a free-tier agenda.
total_secondsYesSum of every block's duration_seconds.
structure_suggestionsNoPresent only when the agenda lacks an opening, a closing or a required break. Apply with add_block and reorder_blocks before replying.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations cover only the safety profile (not read-only, not idempotent, not destructive). The description adds substantial context: the three return values and their meanings, that edit_token is required by every other BriefMe tool, that structure_suggestions may appear, and that agendas expire after 7 days with no recovery. This is exactly the kind of behavioral detail 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?

Front-loads purpose, then usage, then return values and construction guidance; sentences are dense and informative. It runs long across several paragraphs, but nearly every sentence earns its place by adding operational detail, so only a minor conciseness deduction.

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?

Even though an output schema exists (relieving the description of return-value duties), it still describes the payload, and it covers expiry, follow-up tooling, and block-construction norms. An agent has everything needed to decide, call, and correctly populate this tool.

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 baseline is 3, but the description adds real construction guidance beyond the schema: default durations by meeting type (standup ~15 min, 1:1 ~30, sprint planning 60–90), the 3–8 block norm, the six-word title heuristic, and when a description is warranted. The 'language' parameter is only covered by the schema, keeping this from a 5.

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 ('Creates') and resource ('timed meeting agenda — a shareable countdown timer that walks attendees through timeboxed topics in sync'). It also explicitly rules out adjacent tasks ('Not for calendar scheduling or note-taking'), letting an agent distinguish this from get_agenda/update_agenda siblings 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?

Gives an explicit when-to-use list ('meeting timer, timeboxes, a run of show, a workshop or standup schedule'), an explicit when-not ('Not for calendar scheduling or note-taking, and a two-item chat needs no timer'), and names the sibling tools (add_block, reorder_blocks) that apply follow-up changes. Nothing is left to inference.

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

get_agendaRead a meeting agendaA
Read-onlyIdempotent
Inspect

Reads back the current state of an agenda, including the id of every block. Needed when block ids are unknown — typically at the start of a new conversation where the user has pasted an edit token; after any BriefMe mutation the current state is already in hand.

Takes edit_token only. A share link or share URL does not open an agenda here: one known only by its share link cannot be read or edited through this connector, only re-created.

ParametersJSON Schema
NameRequiredDescriptionDefault
edit_tokenYesThe edit_token returned by create_agenda.

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYes
blocksYesThe blocks in the order they run.
share_urlYesThe read-only agenda with the live timer; safe to give to attendees.
expires_atYesISO 8601. null when the agenda is saved to an account and does not expire.
total_secondsYesSum of every block's duration_seconds.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and closed-world, so the safety profile is covered. The description still adds genuine non-structured context: the edit_token is the sole credential, and an agenda known only by its share link is unreachable through this connector (re-create only). It stops short of stating failure modes or error behavior for a bad/rotated token.

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 usage triggers, then the credential constraint. Every sentence carries information, though the share-link sentence is wordy ('A share link or share URL does not open an agenda here') and could be tightened.

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?

An output schema exists, so return values need no explanation; the description instead covers what the agent must know to invoke correctly — trigger conditions, sole-parameter credential, and the share-link exclusion. Nothing material is missing for a one-parameter read tool.

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 schema already says edit_token comes from create_agenda, so the baseline is 3. The description adds a real semantic constraint beyond the schema: 'Takes edit_token only' and that share links/share URLs are not accepted as an equivalent credential, which prevents a plausible misuse.

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 ('Reads back the current state of an agenda') and even names the payload detail that matters ('including the id of every block'). The framing 'Needed when block ids are unknown' implicitly separates it from the mutating siblings (create_agenda, add_block, update_block), so an agent can route 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 Guidelines5/5

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

Gives an explicit trigger ('typically at the start of a new conversation where the user has pasted an edit token') and an explicit when-NOT ('after any BriefMe mutation the current state is already in hand'). It also rules out a tempting but invalid alternative: a share link cannot be used to read an agenda here.

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

remove_blockRemove a blockA
DestructiveIdempotent
Inspect

Removes one block from an agenda. The remaining blocks keep their ids and their order.

An agenda must keep at least one block, so this fails on the last one. Removing a block shortens the meeting — it does not redistribute that time to the other blocks.

Returns the full updated agenda.

ParametersJSON Schema
NameRequiredDescriptionDefault
block_idYesThe id of the block to remove.
edit_tokenYesThe edit_token returned by create_agenda.

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYes
blocksYesThe blocks in the order they run.
share_urlYesThe read-only agenda with the live timer; safe to give to attendees.
expires_atYesISO 8601. null when the agenda is saved to an account and does not expire.
total_secondsYesSum of every block's duration_seconds.

TDQS

A4.3/5.0
Behavior5/5

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

Adds substantive behavior beyond the annotations: id stability ('remaining blocks keep their ids and their order'), the invariant that the last block cannot be removed, and the non-obvious fact that the meeting shortens rather than redistributing time. That last point is exactly the kind of side-effect an agent would otherwise get wrong.

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

Conciseness4/5

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

Opens with the action, then two short paragraphs of constraints, then the return. Every sentence carries information, though the return statement is marginally redundant given an output schema exists.

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?

Covers the invariant, id/order preservation, and time behavior, and an output schema exists so return-value detail isn't needed in prose. What's missing is the auth/ownership expectation for edit_token (e.g. token invalidation on rotation), which sibling tools like rotate_edit_token imply is relevant.

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 (block_id, edit_token) are already documented in the schema. The description adds no extra meaning to either 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?

Names a specific verb and resource (removes one block from an agenda) and the scope is narrowed further than the bare name would suggest. An agent can distinguish it from update_block and reorder_blocks 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?

States a clear precondition ('an agenda must keep at least one block, so this fails on the last one') which is decision-relevant, and implicitly routes structural changes to siblings. It doesn't explicitly name an alternative tool for reordering or resizing, but the constraints define usage well enough.

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

reorder_blocksReorder the blocks of an agendaA
Idempotent
Inspect

Puts the agenda's blocks into the order given.

block_ids must contain every current block id exactly once — none missing, none extra, none repeated. This only reorders: it cannot add, remove or edit a block. get_agenda returns the current ids.

Returns the full updated agenda.

ParametersJSON Schema
NameRequiredDescriptionDefault
block_idsYesEvery current block id, exactly once, in the order you want them to run.
edit_tokenYesThe edit_token returned by create_agenda.

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYes
blocksYesThe blocks in the order they run.
share_urlYesThe read-only agenda with the live timer; safe to give to attendees.
expires_atYesISO 8601. null when the agenda is saved to an account and does not expire.
total_secondsYesSum of every block's duration_seconds.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly=false, idempotent=true and destructive=false, but the description adds real value on top: it states the operation is purely a reorder with no add/remove/edit side effects and discloses that the full updated agenda is returned. The strict 'exactly once' invariant is also a behavioral constraint the agent must respect.

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, then constraints, then return value. Well organized and short, though the 'none missing, none extra, none repeated' clause overlaps the schema description and is mildly 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?

For a two-parameter, high-coverage schema with an output schema present, the description covers the action, the input invariant, the source of ids, and the safety profile. Nothing an agent needs to invoke 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%, and the schema already documents both edit_token (from create_agenda) and block_ids (every id exactly once, in order). The description restates those constraints with emphasis ('none missing, none extra, none repeated') and adds the useful pointer to get_agenda, but does not add new syntactic or format detail, so the baseline 3 fits.

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 the agenda's blocks into the order given') and immediately delimits it from the other mutation siblings by declaring it only reorders and cannot add, remove or edit a block. An agent can distinguish it from add_block/remove_block/update_block 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 condition for use (supply every current block id) and routes the agent to get_agenda to obtain those ids. It stops short of an explicit when-not/alternative comparison against siblings, so it is strong context without full routing.

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

rotate_edit_tokenRegenerate the edit linkA
Destructive
Inspect

Replaces an agenda's edit token and edit link with new ones. The previous edit_token and edit_url stop working the moment this returns, for every assistant, browser and bookmark that held them — the remedy when an edit link was shared by mistake.

Returns the full agenda with the new edit_url and edit_token. The previous ones cannot be restored. Agendas expire after 7 days and cannot be recovered afterwards.

ParametersJSON Schema
NameRequiredDescriptionDefault
edit_tokenYesThe current edit_token — the one being replaced.

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYes
blocksYesThe blocks in the order they run.
edit_urlYesThe user's new private control page; the previous link is dead.
share_urlYesThe read-only agenda with the live timer; safe to give to attendees.
edit_tokenYesWhat every later tool call takes from now on; the previous token is dead.
expires_atYesISO 8601. null when the agenda is saved to an account and does not expire.
instructionsYesRead this first: how to reply to the user.
total_secondsYesSum of every block's duration_seconds.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and optionality/idempotency flags, and the description still adds substantial behavioral context beyond them: the old token and URL stop working immediately for every holder, the change is irreversible ('cannot be restored'), and agendas expire after 7 days with no recovery. This is exactly the extra context a destructive, non-idempotent operation needs.

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 sentences, front-loaded with the action, then the impact, then the return value and lifetime constraint. No filler; every sentence carries decision-relevant information.

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?

An output schema exists, so the description need not enumerate return fields — and it still notes that the full agenda with new edit_url and edit_token is returned. Combined with the irreversibility and expiry warnings, an agent has everything needed to call this 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 single parameter's meaning ('the current edit_token — the one being replaced') is already documented in the schema. The description confirms the same semantics in prose but adds no syntax, format, or sourcing guidance beyond it, 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+resource (replaces an agenda's edit token and edit link) with the scope made explicit — this is a rotation, not an edit. It is clearly differentiable from siblings like update_agenda, create_agenda, or get_agenda, which do not invalidate credentials.

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 when-to-use case: 'the remedy when an edit link was shared by mistake.' That is a clear trigger condition. It does not name alternatives or state when-not-to-use (e.g. routine rotation, or that update_agenda should be used for content changes), so it stops short of a 5.

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

update_agendaRename a meeting agendaA
DestructiveIdempotent
Inspect

Renames the agenda. Blocks are untouched — the block tools change those.

Returns the full updated agenda.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesThe new meeting title.
edit_tokenYesThe edit_token returned by create_agenda.

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYes
blocksYesThe blocks in the order they run.
share_urlYesThe read-only agenda with the live timer; safe to give to attendees.
expires_atYesISO 8601. null when the agenda is saved to an account and does not expire.
total_secondsYesSum of every block's duration_seconds.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=true, openWorldHint=false, so safety is covered. The description adds real behavioral context beyond that: the mutation is scoped to the agenda name only (blocks untouched) and it returns the full updated agenda. It does not explain why destructiveHint is true (the prior title is overwritten) or the auth/validation requirement on edit_token.

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?

Two tight sentences, front-loaded with the action and immediately followed by scope and return behavior; no filler. The return-value sentence is slightly redundant given an output schema exists, keeping it just below maximum.

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?

Low-complexity, two-parameter tool with a full schema, an output schema, and annotations, and the description covers purpose, mutation scope, and return shape. The only real gap is that token validity/rotation (rotate_edit_token is a sibling) is left entirely to the schema.

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% (both title and edit_token are documented, including that edit_token comes from create_agenda), so the baseline is 3. The description implies the title parameter is what changes but adds no format, length, or token-validity detail 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?

Specific verb+resource ('Renames the agenda') that unambiguously narrows the broad name update_agenda to a rename-only operation. It also explicitly carves out scope against the sibling block tools ('Blocks are untouched — the block tools change those'), so an agent can distinguish it from add_block/update_block/remove_block 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?

Clearly signals the context of use (title changes only) and routes block-level changes to the block tools, which is a genuine negative-routing statement. It stops short of naming other alternatives such as create_agenda or stating prerequisites (e.g., needing a fresh edit_token), so it is good but not exhaustive.

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

update_blockChange one blockA
DestructiveIdempotent
Inspect

Changes one block, identified by block_id. Only the supplied fields change; anything omitted keeps its current value exactly, so a one-field edit is a one-field call.

Changes one block only: it does not reorder, add or remove anything, and there is no whole-agenda replace. get_agenda returns the current block ids. Returns the full updated agenda.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoNew title. Omit to leave unchanged.
block_idYesThe id of the block to change, from create_agenda or get_agenda.
block_typeNoNew internal classification (aggregate analysis only; shown on no BriefMe page). Omit to leave unchanged.
edit_tokenYesThe edit_token returned by create_agenda.
descriptionNoNew note. Send null to clear it. Omit to leave unchanged.
duration_secondsNoNew duration in seconds. Omit to leave unchanged.

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYes
blocksYesThe blocks in the order they run.
share_urlYesThe read-only agenda with the live timer; safe to give to attendees.
expires_atYesISO 8601. null when the agenda is saved to an account and does not expire.
total_secondsYesSum of every block's duration_seconds.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly=false, idempotent=true, destructive=true and openWorld=false, so the safety profile is covered. The description adds real value beyond that: the merge semantics ('anything omitted keeps its current value exactly') and the fact that the full updated agenda is returned. It does not discuss edit_token validity or the existence of rotate_edit_token, and there is mild tension between destructiveHint=true and the reassuring partial-edit wording, but not a contradiction.

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 paragraphs, all front-loaded and waste-free: identity and scope first, then exclusivity, then the return value. Every sentence contributes something an agent cannot get from the name alone.

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 an output schema present, the return value need not be spelled out, and the partial-update contract plus sibling exclusions make the definition callable as-is. The only gap is operational: nothing about edit_token expiry or the rotate_edit_token sibling, which matters for a token-gated mutation.

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%, including per-field 'Omit to leave unchanged' notes, so the baseline is 3. The description's global statement about omitted fields preserving current values restates what each schema property already says, adding only emphasis rather than new syntax, format or range information.

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 ('Changes one block, identified by block_id') and immediately scopes it against siblings: no reorder, no add, no remove, no whole-agenda replace. An agent can distinguish it from reorder_blocks, add_block, remove_block and update_agenda 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?

Clearly routes the agent: it says only supplied fields change, so a one-field edit is a one-field call, and points to get_agenda for current block ids. It states exclusions (no reorder/add/remove/replace) but never names the sibling to use instead for those operations, so the alternative-routing is implied rather than explicit.

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. 1 tool update
    • Changedadd_block1 field changed
      • changedInput schema / properties / after_block_id / description
        Previous value: -"Insert directly after this block id. Omit to append to the end."New value: +"Insert directly after this block id. Omit to add at the end."
  2. 8 tool updates
    • Changedadd_block2 fields changed
      • changedInput schema / properties / block_type / description
        Previous value: -"Internal classification for analysis — infer it from the content; never mention it to the user."New value: +"Internal classification for aggregate analysis, inferred from the content; shown on no BriefMe page."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "blocks": {
        +      "description": "The blocks in the order they run.",
        +      "items": {
        +        "properties": {
        +          "block_type": {
        +            "description": "Internal classification; never mention it to the user.",
        +            "enum": [
        +              "standup",
        +              "discussion",
        +              "decision",
        +              "q_and_a",
        +              "break",
        +              "opening",
        +              "closing",
        +              "other",
        +              null
        +            ],
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "description": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "duration_seconds": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "id": {
        +            "description": "Stable 8-letter id: what update_block, remove_block, reorder_blocks and after_block_id take.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "title": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "title",
        +          "duration_seconds",
        +          "block_type",
        +          "description"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "expires_at": {
        +      "description": "ISO 8601. null when the agenda is saved to an account and does not expire.",
        +      "format": "date-time",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "share_url": {
        +      "description": "The read-only agenda with the live timer; safe to give to attendees.",
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "total_seconds": {
        +      "description": "Sum of every block's duration_seconds.",
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "title",
        +    "total_seconds",
        +    "expires_at",
        +    "share_url",
        +    "blocks"
        +  ],
        +  "type": "object"
        +}
    • Changedcreate_agenda2 fields changed
      • changedInput schema / properties / blocks / items / properties / block_type / description
        Previous value: -"Internal classification for analysis — infer it from the content; never mention it to the user."New value: +"Internal classification for aggregate analysis, inferred from the content; shown on no BriefMe page."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "blocks": {
        +      "description": "The blocks in the order they run.",
        +      "items": {
        +        "properties": {
        +          "block_type": {
        +            "description": "Internal classification; never mention it to the user.",
        +            "enum": [
        +              "standup",
        +              "discussion",
        +              "decision",
        +              "q_and_a",
        +              "break",
        +              "opening",
        +              "closing",
        +              "other",
        +              null
        +            ],
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "description": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "duration_seconds": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "id": {
        +            "description": "Stable 8-letter id: what update_block, remove_block, reorder_blocks and after_block_id take.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "title": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "title",
        +          "duration_seconds",
        +          "block_type",
        +          "description"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "edit_token": {
        +      "description": "What every other tool takes. Keep it for the rest of the conversation.",
        +      "type": "string"
        +    },
        +    "edit_url": {
        +      "description": "The user's private control page. Give it to the user; never post it anywhere shared.",
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "expires_at": {
        +      "description": "ISO 8601. null when the agenda is saved to an account and does not expire.",
        +      "format": "date-time",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "instructions": {
        +      "description": "Read this first: how to reply to the user.",
        +      "type": "string"
        +    },
        +    "share_url": {
        +      "description": "The read-only agenda with the live timer; safe to give to attendees.",
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "structure_suggestions": {
        +      "description": "Present only when the agenda lacks an opening, a closing or a required break. Apply with add_block and reorder_blocks before replying.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "total_seconds": {
        +      "description": "Sum of every block's duration_seconds.",
        +      "type": "integer"
        +    },
        +    "upgrade_hint": {
        +      "description": "Present only on a free-tier agenda.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "instructions",
        +    "edit_url",
        +    "edit_token",
        +    "title",
        +    "total_seconds",
        +    "expires_at",
        +    "share_url",
        +    "blocks"
        +  ],
        +  "type": "object"
        +}
    • Changedget_agenda1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "blocks": {
        +      "description": "The blocks in the order they run.",
        +      "items": {
        +        "properties": {
        +          "block_type": {
        +            "description": "Internal classification; never mention it to the user.",
        +            "enum": [
        +              "standup",
        +              "discussion",
        +              "decision",
        +              "q_and_a",
        +              "break",
        +              "opening",
        +              "closing",
        +              "other",
        +              null
        +            ],
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "description": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "duration_seconds": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "id": {
        +            "description": "Stable 8-letter id: what update_block, remove_block, reorder_blocks and after_block_id take.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "title": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "title",
        +          "duration_seconds",
        +          "block_type",
        +          "description"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "expires_at": {
        +      "description": "ISO 8601. null when the agenda is saved to an account and does not expire.",
        +      "format": "date-time",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "share_url": {
        +      "description": "The read-only agenda with the live timer; safe to give to attendees.",
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "total_seconds": {
        +      "description": "Sum of every block's duration_seconds.",
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "title",
        +    "total_seconds",
        +    "expires_at",
        +    "share_url",
        +    "blocks"
        +  ],
        +  "type": "object"
        +}
    • Changedremove_block1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "blocks": {
        +      "description": "The blocks in the order they run.",
        +      "items": {
        +        "properties": {
        +          "block_type": {
        +            "description": "Internal classification; never mention it to the user.",
        +            "enum": [
        +              "standup",
        +              "discussion",
        +              "decision",
        +              "q_and_a",
        +              "break",
        +              "opening",
        +              "closing",
        +              "other",
        +              null
        +            ],
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "description": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "duration_seconds": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "id": {
        +            "description": "Stable 8-letter id: what update_block, remove_block, reorder_blocks and after_block_id take.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "title": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "title",
        +          "duration_seconds",
        +          "block_type",
        +          "description"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "expires_at": {
        +      "description": "ISO 8601. null when the agenda is saved to an account and does not expire.",
        +      "format": "date-time",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "share_url": {
        +      "description": "The read-only agenda with the live timer; safe to give to attendees.",
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "total_seconds": {
        +      "description": "Sum of every block's duration_seconds.",
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "title",
        +    "total_seconds",
        +    "expires_at",
        +    "share_url",
        +    "blocks"
        +  ],
        +  "type": "object"
        +}
    • Changedreorder_blocks1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "blocks": {
        +      "description": "The blocks in the order they run.",
        +      "items": {
        +        "properties": {
        +          "block_type": {
        +            "description": "Internal classification; never mention it to the user.",
        +            "enum": [
        +              "standup",
        +              "discussion",
        +              "decision",
        +              "q_and_a",
        +              "break",
        +              "opening",
        +              "closing",
        +              "other",
        +              null
        +            ],
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "description": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "duration_seconds": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "id": {
        +            "description": "Stable 8-letter id: what update_block, remove_block, reorder_blocks and after_block_id take.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "title": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "title",
        +          "duration_seconds",
        +          "block_type",
        +          "description"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "expires_at": {
        +      "description": "ISO 8601. null when the agenda is saved to an account and does not expire.",
        +      "format": "date-time",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "share_url": {
        +      "description": "The read-only agenda with the live timer; safe to give to attendees.",
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "total_seconds": {
        +      "description": "Sum of every block's duration_seconds.",
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "title",
        +    "total_seconds",
        +    "expires_at",
        +    "share_url",
        +    "blocks"
        +  ],
        +  "type": "object"
        +}
    • Addedrotate_edit_token
    • Changedupdate_agenda1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "blocks": {
        +      "description": "The blocks in the order they run.",
        +      "items": {
        +        "properties": {
        +          "block_type": {
        +            "description": "Internal classification; never mention it to the user.",
        +            "enum": [
        +              "standup",
        +              "discussion",
        +              "decision",
        +              "q_and_a",
        +              "break",
        +              "opening",
        +              "closing",
        +              "other",
        +              null
        +            ],
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "description": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "duration_seconds": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "id": {
        +            "description": "Stable 8-letter id: what update_block, remove_block, reorder_blocks and after_block_id take.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "title": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "title",
        +          "duration_seconds",
        +          "block_type",
        +          "description"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "expires_at": {
        +      "description": "ISO 8601. null when the agenda is saved to an account and does not expire.",
        +      "format": "date-time",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "share_url": {
        +      "description": "The read-only agenda with the live timer; safe to give to attendees.",
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "total_seconds": {
        +      "description": "Sum of every block's duration_seconds.",
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "title",
        +    "total_seconds",
        +    "expires_at",
        +    "share_url",
        +    "blocks"
        +  ],
        +  "type": "object"
        +}
    • Changedupdate_block2 fields changed
      • changedInput schema / properties / block_type / description
        Previous value: -"New internal classification. Omit to leave unchanged; never mention it to the user."New value: +"New internal classification (aggregate analysis only; shown on no BriefMe page). Omit to leave unchanged."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "blocks": {
        +      "description": "The blocks in the order they run.",
        +      "items": {
        +        "properties": {
        +          "block_type": {
        +            "description": "Internal classification; never mention it to the user.",
        +            "enum": [
        +              "standup",
        +              "discussion",
        +              "decision",
        +              "q_and_a",
        +              "break",
        +              "opening",
        +              "closing",
        +              "other",
        +              null
        +            ],
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "description": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "duration_seconds": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "id": {
        +            "description": "Stable 8-letter id: what update_block, remove_block, reorder_blocks and after_block_id take.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "title": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "title",
        +          "duration_seconds",
        +          "block_type",
        +          "description"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "expires_at": {
        +      "description": "ISO 8601. null when the agenda is saved to an account and does not expire.",
        +      "format": "date-time",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "share_url": {
        +      "description": "The read-only agenda with the live timer; safe to give to attendees.",
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "total_seconds": {
        +      "description": "Sum of every block's duration_seconds.",
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "title",
        +    "total_seconds",
        +    "expires_at",
        +    "share_url",
        +    "blocks"
        +  ],
        +  "type": "object"
        +}
  3. 7 tool updates
    • First observedadd_block
    • First observedcreate_agenda
    • First observedget_agenda
    • First observedremove_block
    • First observedreorder_blocks
    • First observedupdate_agenda
    • First observedupdate_block

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources