GTD Brain
Server Details
Getting Things Done (GTD) board for AI agents: capture to Inbox, next actions by context, projects, waiting-for, someday/maybe. Remote Streamable HTTP server with OAuth 2.1 login (passwordless email code). 16 tools + 4 prompts. Setup guide: https://gtdbrain.com/connect?source=glama
- Status
- Healthy
- Uptime
- 57.0% over 46 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 19 tools
Every tool has an explicit scope plus targeted 'Do not use' guidance that resolves the genuinely overlapping cases (capture vs create_card, list_cards vs the specialized list tools, archive_card vs move_card-to-Done, move_card vs update_card). An agent can tell exactly which tool to pick in nearly every scenario.
Names follow a consistent snake_case verb_noun pattern (list_cards, create_context, update_column, archive_card) with only minor deviations: the bare verb 'capture' and the awkward mark_card_reviewed. Still highly predictable overall.
19 tools is on the heavier side but justified: cards, columns, and contexts each need CRUD, plus capture, search, review, archive/restore, and specialized list shortcuts. Each tool has a distinct job, though a few list shortcuts are near-redundant with list_cards.
Card, column, and context lifecycles are well covered (create/get/list/search/update/move/archive/restore, context CRUD, column list/update). Minor gaps: no create_column or delete_column for custom columns, and no explicit project-completion/close operation.
Available Tools
19 toolsarchive_cardADestructiveIdempotentInspect
Use this when the user says a card is done, finished, or no longer needed and the board has no Done (or Completed) column — check list_columns first: if there is one, move_card the card there instead. Archiving hides the card from the board; restore_card brings it back, and there is no delete. Tell the user the card was archived. Do not use to clear the board in bulk — archive only the cards the user named. Do not use when they just want the card somewhere else or changed (move_card, update_card), and never archive a card because you made a replacement for it. Returns the archived card.
| Name | Required | Description | Default |
|---|---|---|---|
| cardId | Yes | The card id to archive. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and idempotentHint=true; the description adds the critical nuance that 'destructive' here means hidden from the board, that restore_card reverses it, and that there is no delete — materially changing how an agent should treat the side effect. It also instructs informing the user and states the return value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the use condition, and each subsequent clause carries routing or behavioral value (alternatives, reversibility, bulk-exclusion, return). It is dense but slightly overpacked with prohibitions that could be trimmed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description states the return ('Returns the archived card'). Combined with explicit exclusions, preconditions, and reversibility, 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter with 100% schema description coverage ('The card id to archive'), so the schema carries the semantics. The description adds no format or sourcing detail for cardId beyond what the schema already says; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (archive a card) and immediately distinguishes it from the sibling behaviors an agent might confuse it with — move_card, update_card, restore_card, and deletion. An agent can select this tool 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit triggering language ('done, finished, or no longer needed'), a pre-check (list_columns for a Done column), the alternative to use in that case (move_card), and three explicit when-not conditions. This is a full routing decision tree, not mere context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
captureAInspect
Use this when the user mentions something they need to do, remember, buy, or follow up on and does not say which list it belongs to: it goes straight to the Inbox in one step, no column lookup (capture first, clarify later). Examples: 'remind me to renew my passport', 'add call the dentist', 'note: look into solar panels'. Do not use when the user names a destination list (Next Actions, Projects, Waiting For, Someday/Maybe, a custom column) or a card kind — use create_card. Do not use to change, move, or finish an existing card, and do not use for something the user says they already did ('Added the invoice', 'called Sam') — that completes an existing card: find it with search_cards and finish it. Returns the created card.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Optional details the user gave, e.g. 'expires in March, needs two photos'. | |
| title | Yes | What to capture, in the user's words, e.g. 'Renew passport' or 'Call the dentist about the invoice'. | |
| context | No | Optional. Set it only when the user asks for a context, e.g. 'computer'; otherwise leave it out. Never write a context into notes. GTD context id (e.g. calls, computer, errands, home). The user manages their own set — list_contexts shows it, create_context adds one; if unknown, the error lists the valid ids so you can retry. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (not read-only, not destructive, not idempotent), so the description's job is to add beyond that. It does: the 'no column lookup / capture first, clarify later' behavior and the explicit 'Returns the created card' statement tell the agent what happens on success, which annotations do not. It stops short of documenting duplicate handling or failure modes, so not quite a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the positive trigger before the negative exclusions, and every sentence carries routing information. It is somewhat long with three example utterances and two prohibition clauses, but nothing is clearly redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 states the return value, and for a 3-param create tool with full schema coverage the description supplies everything needed: trigger conditions, exclusions, alternative routing, and the success response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents title, notes, and context, including the retry-on-error behavior for unknown context ids. The description adds no parameter-level guidance beyond what the schema states, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (capture straight to Inbox in one step) on a specific resource (a card), and explicitly distinguishes itself from create_card and from card-completion flows. An agent can tell it apart from every relevant sibling 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use triggers with example utterances, names the alternative (create_card) and the exact condition that selects it (user names a destination list or card kind), and rules out mutation/completion cases with pointers to search_cards. This is about as complete as routing guidance gets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_cardAInspect
Use this when the user says where a card belongs or what it is: a next action ('add a next action: email Sam the quote'), a project's next step (pass projectId), a project ('new project: plan the offsite'), something they are waiting on someone for, a Someday/Maybe idea, something to keep for reference that needs no action (the Reference column), or a card for a named custom column. Needs the destination columnId from list_columns; kind 'action' only in Next Actions, 'project' only in Projects, 'card' anywhere else. Do not use for a bare 'add / remind me / note' with no list named — use capture (Inbox, no lookup). Do not use for a card that is already on the board ('put the blog post under my launch project', 'make the passport card a next action') — find it with search_cards and move_card or update_card it; a new card plus archive_card on the old one loses its history. Returns the created card.
| Name | Required | Description | Default |
|---|---|---|---|
| who | No | Optional, for Waiting For: who it is delegated to, e.g. 'Sam'. | |
| kind | No | 'action' for Next Actions, 'project' for Projects, 'card' for every other column. Defaults to 'card'. | |
| notes | No | Optional details the user gave. | |
| since | No | Optional, for Waiting For: since when, e.g. '2026-09-01' or 'last Monday'. | |
| title | Yes | The card title: a verb-first next action ('Email Sam the quote'), a project outcome ('Offsite planned'), or the note itself. | |
| context | No | Optional, for actions: the context id, e.g. 'calls'. GTD context id (e.g. calls, computer, errands, home). The user manages their own set — list_contexts shows it, create_context adds one; if unknown, the error lists the valid ids so you can retry. | |
| columnId | Yes | Destination column id, from list_columns. | |
| projectId | No | Optional, for actions: the project card id (from list_projects) this action moves forward. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-idempotent, non-destructive write, so the safety profile is covered. The description adds real behavioral context beyond that: columnId must be resolved via list_columns first, the kind value is constrained by destination column, and it states what is returned. It does not discuss failure modes or duplicate creation, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the triggering condition and dense with actionable content — nearly every clause rules an intent in or out. The middle section is one long run-on chain of cases, which is heavier than ideal but each clause carries routing value, so it is not padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter write tool with no output schema, the description covers prerequisites (columnId from list_columns, projectId from list_projects), value constraints, alternatives, and the return ('the created card'). It omits board position/ordering behavior, which is a minor gap rather than a blocking one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 goes beyond the schema by stating the cross-parameter rule the schema only implies per-field: 'kind action only in Next Actions, project only in Projects, card anywhere else', plus the projectId/lookup requirement. This is genuine added meaning, though per-field examples largely duplicate the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (create a card) and then enumerates exactly which user intents map to it — next action, project step, project, waiting-for, Someday/Maybe, reference, custom column. It explicitly distinguishes itself from siblings by naming capture, search_cards, move_card, update_card and archive_card as the wrong tools in specific cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use triggers ('use this when the user says where a card belongs or what it is') and two explicit when-NOT-to-use rules with named alternatives: bare 'add/remind me/note' with no list → capture; a card already on the board → search_cards + move_card/update_card, with a stated reason (archive_card loses history).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_contextAInspect
Use this when the user wants a new GTD context — a place, tool, or situation to tag actions with, e.g. '@boat', 'errands', 'deep work'. The id is derived from the label and must not already exist; color is optional (hex like #4f9466, auto-picked otherwise). Do not use when a matching context already exists (check list_contexts), and do not use to tag a card — use update_card with the existing id.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | Optional hex color, e.g. '#4f9466'. Auto-picked if omitted. | |
| label | Yes | The context label as the user said it, e.g. '@boat' or 'boat'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the id is derived from the label and must not already exist, and that color is optional and auto-picked. Since the annotations are only sparse boolean flags, this text carries the behavioral burden well, though it does not mention response or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three focused sentences that front-load purpose, then state constraints, then give exclusions. Every sentence earns its place with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter creation tool with no output schema, the description covers the core purpose, constraints, and alternative tools. It is complete enough for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 adds value by clarifying label semantics with examples and explaining the derived-id and auto-color behavior beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('create' a GTD context) and defines what a context is with concrete examples like '@boat', 'errands', 'deep work'. It clearly differentiates from sibling tools like update_context, delete_context, and create_card.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it ('when the user wants a new GTD context') and when not to use it: if a matching context already exists, check list_contexts first; for tagging a card, use update_card with the existing id. This is strong routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_contextADestructiveIdempotentInspect
Use this when the user explicitly wants a context removed from their set. Every card tagged with it (archived included) has its context cleared, so confirm before calling. Do not use to take a context off one card — use update_card with an empty context.
| Name | Required | Description | Default |
|---|---|---|---|
| contextId | Yes | The context id to delete, from list_contexts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds critical behavior: every card tagged with the context, including archived cards, has its context cleared, and that confirmation is needed before calling. This goes beyond the annotations and materially informs the agent about consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver the trigger condition, a critical behavioral warning, an explicit exclusion, and the alternative tool. Every clause earns its place, and key guidance is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with annotations covering idempotency and destructiveness, and no output schema, the description covers all essential aspects: what it deletes, what it affects (archived included), when to use it, and when not to. No missing information that would prevent correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single parameter contextId is already well-documented in the schema ('The context id to delete, from list_contexts'). The description does not add further parameter semantics but also does not need to given full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (removing a context from the user's set) and clearly differentiates it from the sibling tool update_card. The distinction from removing a context from a single card is explicit, leaving no ambiguity about what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit condition for use ('when the user explicitly wants a context removed from their set') and an explicit exclusion ('Do not use to take a context off one card') with a named alternative (update_card with an empty context). This is textbook usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cardARead-onlyIdempotentInspect
Use this when you already have a card id (from a list, a search, or an earlier result) and the user wants that card's full details — notes, context, who it is waiting on and since when — or asks what happened to it: its history lists, oldest first, when it was created, moved between lists, edited, reviewed, archived or restored. Do not use to find a card by text — use search_cards.
| Name | Required | Description | Default |
|---|---|---|---|
| cardId | Yes | The card id, from a list, search, or earlier result. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and non-destructive, so safety is covered; the description adds genuinely new behavioral detail about the payload — notes, context, who it is waiting on and since when, and a chronological history of create/move/edit/review/archive/restore events ordered oldest first. It stops short of noting limits (pagination, history truncation), so not a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense but well-ordered sentence that front-loads the precondition, then the payload, then the exclusion. It is longer than minimal but each clause carries routing or payload information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates what the call returns (details plus an ordered history), which is the main thing an agent would otherwise lack. Minor gaps remain around history size/ordering guarantees and whether archived cards are returned, but the definition is largely self-sufficient 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single cardId parameter whose schema description matches the text ('from a list, search, or earlier result'). The description adds no format, validation, or edge-case semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource ('get_card' returns a card's full details and history) and explicitly contrasts itself with the sibling search_cards. An agent can distinguish it from list_cards, search_cards, and update_card 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit precondition ('when you already have a card id ... from a list, a search, or an earlier result') and a negative rule ('Do not use to find a card by text — use search_cards'), naming the alternative tool directly. Both when-to-use and when-not-to-use are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cardsARead-onlyIdempotentInspect
Use this when you need cards as plain data to reason over — every card in one column, all cards of one kind, all actions in one context, or a project's actions. Filters combine; archived cards only with includeArchived. For the three main lists prefer list_next_actions, list_projects, and list_waiting_for. Do not use to find a card by words in its title — use search_cards.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Only cards of this kind: 'action' (Next Actions), 'project' (Projects), or 'card' (everything else). | |
| context | No | Only action cards tagged with this context id, e.g. 'calls'. GTD context id (e.g. calls, computer, errands, home). The user manages their own set — list_contexts shows it, create_context adds one; if unknown, the error lists the valid ids so you can retry. | |
| columnId | No | Only cards in this column id (from list_columns). | |
| projectId | No | Only the actions that belong to this project card id (from list_projects). | |
| includeArchived | No | Include archived cards. Defaults to false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds genuine behavioral context beyond them: filters combine (AND semantics) and archived cards appear only when includeArchived is set. It omits return ordering/pagination, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the primary use case, then the filter-combination rule, then the routing/exclusion guidance. No filler and nothing repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, five-optional-param list tool with no output schema, the description covers scope, filter interaction, archival behavior, and sibling routing. An agent has everything needed to invoke it correctly; return-format detail is not required for a plain-data list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 goes beyond it by stating that filters combine and that includeArchived is the gate for archived cards — a cross-parameter interaction the schema does not express. It adds real meaning rather than restating field docs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource+intent ('cards as plain data to reason over') and enumerates the actual result shapes (one column, one kind, one context, a project's actions). It explicitly names the siblings it is not (list_next_actions, list_projects, list_waiting_for, search_cards), so an agent can disambiguate 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives positive selection criteria ('when you need cards as plain data'), routing rules for the three main lists, and an explicit negative ('Do not use to find a card by words in its title — use search_cards'). This is a full when/when-not/alternative triad.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_columnsARead-onlyIdempotentInspect
Use this when you need a column id — for create_card, move_card, or list_cards — when the user asks which lists their board has, or how many cards a list holds ('how many are in my inbox?'). Returns every column (Inbox, Next Actions, Projects, Waiting For, Someday/Maybe, Reference, and any custom ones) with id, label, kind, order, and cardCount, the number of cards on the board in it (archived cards not included). Do not use to tell the user what is on the board: it carries no cards — use list_cards or the list tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide the safety profile (readOnlyHint, idempotentHint, destructiveHint), so the bar is lower. The description adds useful behavioral context beyond annotations: the returned cardCount excludes archived cards, and custom columns are included alongside the standard set. This clarifies the scoping of results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but every sentence earns its place: primary use case, return shape, and exclusionary guidance. It is front-loaded with the most critical usage information, though the phrase 'the number of cards on the board in it' is slightly redundant after 'cardCount'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only tool, this description is complete: it explains when to call it, what it returns (including field names), the archived-card exclusion, and how it differs from sibling tools. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty schema, so there are no parameter semantics to document. The baseline for 0-parameter tools is 4, and the description adequately covers return values instead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete purpose: list all columns with their metadata, and explicitly frames it as the go-to for obtaining column ids for create_card, move_card, or list_cards. It identifies the resource (columns) and distinguishes itself from list_cards by noting it carries no cards.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use conditions: when you need a column id, when the user asks what lists a board has, or when counting cards per list. It also provides when-not-to-use guidance and explicitly points to list_cards or list tools as the alternative for actual card content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_contextsARead-onlyIdempotentInspect
Use this when you need the user's context ids — before passing a context to list_next_actions, list_cards, create_card, or update_card — or when the user asks which contexts they have. Returns id, label, color, and order. Do not guess a context id: the set is user-defined and an unknown id is rejected.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds value beyond that by disclosing the returned fields and the important constraint that context ids are user-defined and unknown ids are rejected. This is helpful context that the annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the primary use case. It packs purpose, return contents, and a critical constraint into two sentences with no wasted words or redundant restatements of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the description fully covers what an agent needs: when to use the tool, what it returns, and the caveat about not guessing context ids. There is no meaningful missing context for this simple read-only operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description does not need to explain parameter semantics. It goes slightly beyond the empty schema by describing the returned fields, which is useful context for the caller. A baseline of 4 is appropriate for a zero-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: retrieving the user's context ids and metadata. It specifies the resource (contexts), the returned fields (id, label, color, order), and its role as a prerequisite for several sibling tools, making it easy to distinguish from other list or context-management tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: before passing a context to list_next_actions, list_cards, create_card, or update_card, or when the user asks which contexts they have. It does not explicitly state when not to use it or name alternatives, but for a simple read-only listing tool this is not a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_next_actionsARead-onlyIdempotentInspect
Use this when the user asks what to do now, what they can work on, or for their next actions or to-do list — optionally narrowed to a GTD context when they say where they are or what they have ('I'm at my desk', 'what can I do on the phone?'). Lists the Next Actions column (each card with context and project), in board order. Do not use for projects (list_projects), things delegated to others (list_waiting_for), the Inbox or other columns (list_cards), or to find one specific card (search_cards).
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | Only actions tagged with this context id, e.g. 'calls' or 'errands'. GTD context id (e.g. calls, computer, errands, home). The user manages their own set — list_contexts shows it, create_context adds one; if unknown, the error lists the valid ids so you can retry. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so safety is covered. The description adds meaningful behavioral detail about what is returned (cards with context and project), the source (Next Actions column), and ordering (board order). It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the when-to-use condition, followed by the behavior and exclusions. It is somewhat dense but every clause earns its place; no filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with one optional parameter and no output schema, the description is sufficient: it covers intended use, exclusions, output content, and ordering. It does not discuss pagination or empty states, but those are minor for this type of tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema description already provides rich detail about the context parameter, including examples, management via list_contexts/create_context, and recovery when an unknown id is given. The tool description adds the practical trigger for narrowing by context, going slightly beyond the schema's technical description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Lists the Next Actions column (each card with context and project), in board order.' This clearly differentiates it from siblings like list_cards and search_cards, and the name reinforces the function without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: when the user asks what to do now, next actions, or to-do list, with optional GTD context narrowing. It also provides clear exclusions with named alternatives: list_projects, list_waiting_for, list_cards, and search_cards.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsARead-onlyIdempotentInspect
Use this when the user asks about their projects, their open outcomes, or which projects have no next action yet. Lists the Projects column in board order; a project is any outcome that needs more than one step. Do not use for single tasks (list_next_actions) or to add a project (create_card).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds behavioral context by specifying that output is in 'board order' and clarifying the definition of a project. It does not contradict annotations. While it doesn't describe output fields, the annotation coverage lowers the bar, and the added ordering context is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a concise two-sentence block that front-loads the primary usage trigger and then provides the tool's behavior and exclusions. Every sentence earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there are no parameters and no output schema, the description covers the essential facts: when to use it, what it lists, and how it defines a project. It doesn't describe the exact output shape, but for a straightforward list tool with strong annotations, this is sufficient for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4 per the rubric. The description correctly leaves parameter semantics untouched since there are none to explain. No additional value is needed here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: it lists the Projects column in board order, defines what counts as a project ('any outcome that needs more than one step'), and differentiates from sibling tools by naming specific alternatives (list_next_actions, create_card). This makes the tool's function unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage triggers ('when the user asks about their projects, their open outcomes, or which projects have no next action yet') and explicit exclusions ('Do not use for single tasks (list_next_actions) or to add a project (create_card)'). It names the alternatives directly, leaving no ambiguity about when to select this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_waiting_forARead-onlyIdempotentInspect
Use this when the user asks who they are waiting on, what they have delegated, or what to follow up on with other people. Lists the Waiting For column in board order, each card with who it is delegated to and since when. Do not use for the user's own tasks (list_next_actions).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering safety. The description adds behavioral context beyond annotations: output is in board order, includes delegation recipient and since when, and is scoped to the Waiting For column. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: trigger conditions, output format, and exclusion. Each sentence adds distinct value, front-loads the usage guidance, and is compact with no verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a simple read-only listing tool with no parameters and no output schema. The description covers trigger conditions, behavior, output details, and alternative selection, leaving no ambiguity for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is trivially 100%, and the baseline for zero-parameter tools is 4. The description adds no parameter-specific info because none exist, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Lists') and resource ('Waiting For column') and details the output (each card with who it is delegated to and since when). It also explicitly differentiates from sibling list_next_actions by saying 'Do not use for the user's own tasks (list_next_actions).'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit trigger conditions: 'when the user asks who they are waiting on, what they have delegated, or what to follow up on with other people.' It also gives a clear when-not and names the alternative: 'Do not use for the user's own tasks (list_next_actions).'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_card_reviewedAIdempotentInspect
Use this during a weekly review when the user keeps a card as it is ('keep', 'still relevant', 'reviewed, leave it'): it stays in its list and counts as reviewed now. Do not use when the card should change — move_card, update_card, or archive_card it instead. Returns the card.
| Name | Required | Description | Default |
|---|---|---|---|
| cardId | Yes | The card id to mark as reviewed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare idempotentHint=true and destructiveHint=false, so safety is covered. The description adds the key behavioral fact that the card 'stays in its list and counts as reviewed now,' which the annotations do not express. It doesn't cover auth or rate limits, but the main state effect is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary use case, followed by the exclusion and alternatives. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple one-parameter tool, idempotent/non-destructive annotations, and no output schema, the description is complete. It covers purpose, routing, and the state outcome, and the 'Returns the card' note handles the return value even though no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single cardId parameter is already documented in the schema. The description adds no syntax or meaning beyond what the schema provides, so the baseline of 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('mark... reviewed') and resource ('card'), and the description explicitly scopes it to a weekly review with 'keep' intent. It distinguishes itself from sibling mutation tools by naming move_card, update_card, and archive_card as the wrong choices for change scenarios.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('during a weekly review when the user keeps a card as it is') and when-not-to-use ('Do not use when the card should change'), with the correct alternatives named. Nothing is left to inference about routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_cardAIdempotentInspect
Use this when the user wants a card in a different column — clarifying an Inbox item into Next Actions, Projects, Waiting For, Someday/Maybe, or Reference (worth keeping, no action), or into one of their own columns (a Done or Completed column, say) — or reordered within its column. 'Move it to done' means move_card into the user's column with that label (find it with list_columns), never archive_card. The card's kind follows the destination (Next Actions → action, Projects → project, normal columns → note, flexible columns keep it). Set the card's context, project, or who/since in the same call: clarifying or re-filing a card is one move_card on that card, never a new card plus archive_card on the old one. Do not use to only edit a card's text or tags — use update_card. Rejected for an archived card — use restore_card. Returns the moved card.
| Name | Required | Description | Default |
|---|---|---|---|
| who | No | Optional, for Waiting For: who it is delegated to, e.g. 'Sam'. | |
| since | No | Optional, for Waiting For: since when, e.g. '2026-09-01'. | |
| cardId | Yes | The card id to move. | |
| context | No | Optional context id to set as it moves, e.g. 'calls', or an empty string to clear it. GTD context id (e.g. calls, computer, errands, home). The user manages their own set — list_contexts shows it, create_context adds one; if unknown, the error lists the valid ids so you can retry. | |
| toIndex | No | Optional 0-based position within the destination column, e.g. 0 for the top. Defaults to the end. | |
| projectId | No | Optional project card id (from list_projects) when it lands in Next Actions as that project's next step; an empty string unlinks it. | |
| toColumnId | Yes | Destination column id, from list_columns. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-readonly, non-destructive, idempotent, so the safety bar is met; the description goes well beyond by disclosing the side effect that the card's kind follows the destination (Next Actions → action, Projects → project, etc.), the archived-card rejection, and that re-filing is one move rather than create+archive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and the key routing rule ('move it to done' → move_card), but the dense em-dash-embedded clauses make it long and slightly hard to scan. Every sentence carries information, so nothing is truly wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so 'Returns the moved card' is a valuable addition, and the description covers error handling (archived rejection), kind side effects, the correct alternative tools, and how optional clarifying fields combine. Complete for a 7-param mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds cross-parameter semantics the schema does not: context/project/who/since should be set in the same call, and who/since apply specifically when landing in Waiting For. It does not explain toIndex or the empty-string clearing behavior, so it isn't a full 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (moving a card between columns) and immediately distinguishes it from siblings: 'Do not use to only edit a card's text or tags — use update_card', 'never archive_card', 'use restore_card'. An agent can select it correctly 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use (clarifying Inbox, reordering, moving to a Done-style column) and when-not (text/tag edits → update_card; archived → restore_card). It even decodes the ambiguous natural-language phrase 'move it to done' and routes it to the right column lookup via list_columns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_cardAIdempotentInspect
Use this when the user wants an archived card back on the board: 'unarchive', 'restore', 'bring back', 'undo the archive'. Find the card with search_cards and includeArchived=true. By default it returns to the column it was archived from (Inbox if that column is gone); pass toColumnId to put it somewhere else, e.g. Next Actions. Do not use move_card on an archived card — it is rejected. Returns the restored card.
| Name | Required | Description | Default |
|---|---|---|---|
| cardId | Yes | The archived card's id, from search_cards with includeArchived. | |
| toColumnId | No | Optional destination column id, from list_columns. Defaults to the column the card was archived from. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint=true and destructiveHint=false, so the description complements by explaining the default behavior (returns to original column or Inbox), the optional toColumnId, and the rejection of move_card on archived cards. It clearly describes the operation's effect and edge cases, going beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the purpose, then essential steps, alternatives, and edge cases. Every sentence adds value, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with clear annotations, the description covers all necessary aspects: when to use, how to find input, default behavior, optional parameter, and a critical warning about move_card. Comprehensive and sufficient for an agent to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already documented. The description adds value by explaining the default for toColumnId and the source of cardId from search_cards, but the schema already covers the basics. Hence, a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verb and resource: 'restore' an 'archived card' to the board. It includes trigger phrases and clearly distinguishes from move_card by stating it is rejected for archived cards.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (archived card back on board), how to find the card (search_cards with includeArchived=true), and warns against using move_card on archived cards. Mentions alternative tools like search_cards and move_card.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_cardsARead-onlyIdempotentInspect
Use this when the user refers to a card by words from its title or notes ('the passport thing', 'my note about solar') and you need its id or details, or asks whether something is already on the board. Case-insensitive match over title and notes: every word of the query must appear, in any order, so leave out words you are unsure of ('testing agent' finds 'testing from the agent'); archived cards only with includeArchived. Do not use to list a whole column — use the list tools or list_cards.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Words to look for in card titles and notes, e.g. 'passport' or 'dentist'. | |
| includeArchived | No | Include archived cards. Defaults to false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive. The description adds valuable behavioral details: case-insensitive matching, every word required, any order, and the includeArchived flag. It exceeds what annotations alone convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph but packed with necessary information. It could be slightly trimmed, but every sentence earns its place, and the usage guidance is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with no output schema, the description covers the essential aspects: matching rules, archived handling, and exclusions. Missing return format is minor and not required for successful invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover both parameters, but the description adds crucial semantics: the matching rule (all words, any order) and the example clarifying query behavior. This goes beyond the schema's basic 'words to look for'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific verb and resource: searching cards by words in title/notes, with clear differentiation from list tools and get_card. The description makes it obvious that this is a search operation, not a list or fetch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (user refers by words, need id/details, or checks existence) and when not to (listing a whole column, pointing to list_cards). The example and exclusion are unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_cardAInspect
Use this when the user wants to change what a card says or how it is tagged: retitle it, edit its notes, set or clear its context, link an action to a project or unlink it, or change who it is waiting on and since when. Only the fields passed change; an empty string clears a field. Do not use to put a card in another column or reorder it — use move_card, which takes these same fields. Do not use to finish or remove a card — use archive_card. Returns the updated card.
| Name | Required | Description | Default |
|---|---|---|---|
| who | No | New delegated-to value, e.g. 'Sam'. | |
| notes | No | New notes / body. | |
| since | No | New waiting-since value, e.g. '2026-09-01'. | |
| title | No | New title. | |
| cardId | Yes | The card id to edit. | |
| context | No | New context id, e.g. 'errands', or an empty string to clear it. GTD context id (e.g. calls, computer, errands, home). The user manages their own set — list_contexts shows it, create_context adds one; if unknown, the error lists the valid ids so you can retry. | |
| projectId | No | Project card id (from list_projects) to put this action under, or an empty string to unlink it. Only actions (Next Actions cards) can belong to a project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false), so the bar is lower. The description still adds genuine behavioral context beyond them: patch semantics ('Only the fields passed change'), the empty-string-clears convention, and the return value ('Returns the updated card'). It does not cover auth requirements or what happens to unspecified fields beyond the partial-update note.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences: capability, patch/clear semantics, exclusions, return value. Every sentence carries distinct information with no padding or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter partial-update tool with no output schema, the description covers mutation scope, clearing behavior, sibling routing, and the return value. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter including the empty-string clearing behavior for context and projectId. The description restates the fields and generalizes the clear convention, adding only marginal value over the structured data. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource and enumerates exactly what can be changed (title, notes, context, project link, who/since), which maps cleanly onto the schema. It explicitly distinguishes itself from move_card and archive_card by name, so an agent can route 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use triggers (retitle, edit notes, set/clear context, link/unlink project, change delegation), explicit when-not-to-use conditions (column placement, reordering, finishing/removing), and names the correct alternative for each exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_columnAIdempotentInspect
Use this when the user wants to rename one of their own columns or put a column in a different position on the board ('move Done to the end', 'rename my Errands column to Shopping'). Only columns the user added can be renamed — Inbox, Next Actions, Projects, Waiting For, Someday/Maybe, and Reference keep their names — and no plain column can move ahead of the Inbox. Do not use to move cards — use move_card. Returns the column.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | New label, e.g. 'Shopping'. | |
| toIndex | No | New 0-based position among the columns, e.g. 0 for the far left; out-of-range values go to the end. | |
| columnId | Yes | The column id, from list_columns. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare non-destructive, idempotent behavior, so the description needn't repeat those. The description adds valuable behavioral constraints: only user-added columns can be renamed, system columns keep their names, and no plain column can move ahead of the Inbox. It does not mention permissions or rate limits, but the constraint detail is strong. Slightly less than 5 because it doesn't mention partial update behavior or what happens if both label and toIndex are omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with zero waste. Front-loads the purpose, then constraints, then the alternative tool. No repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given annotations cover safety and idempotency, schema covers parameters fully, and no output schema exists, the description provides sufficient context: purpose, constraints, alternative tool, and return ('Returns the column'). Missing only a note on what happens if both label and toIndex are provided (though schema implies both can be used), but overall complete for an update tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all three parameters with examples and edge cases (out-of-range values go to end). The description adds no additional parameter semantics beyond what the schema provides. Baseline 3 is correct when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb+resource ('rename one of their own columns or put a column in a different position') and gives concrete examples. It distinguishes itself from move_card explicitly and from other column operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('when the user wants to rename... or move a column') and when-not-to-use ('Do not use to move cards — use move_card'). It also names the alternative tool and states the constraints on which columns can be renamed and the Inbox restriction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_contextAIdempotentInspect
Use this when the user wants to rename or recolor one of their contexts. The id never changes, so cards keep their assignment. Do not use to change which context a card carries — use update_card.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | New hex color, e.g. '#4f9466'. | |
| label | No | New label, e.g. '@office'. | |
| contextId | Yes | The context id, from list_contexts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (not read-only, not destructive, idempotent). The description adds meaningful behavioral context: the id never changes, so cards keep their assignment. This explains an important invariant beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The primary use case is front-loaded, followed by a key behavioral invariant and a clear pointer to the sibling tool. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool with only three parameters, full schema coverage, and helpful annotations, the description is complete. It covers purpose, usage boundaries, and an important side effect, and no output schema is expected for this update operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter already has a clear description. The tool description adds only the label/color mapping implicitly through 'rename or recolor,' which is mild added value but not a significant enhancement over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'rename or recolor one of their contexts.' It clearly distinguishes itself from update_card, which changes a card's context assignment rather than the context's own label/color.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to use the tool ('when the user wants to rename or recolor one of their contexts') and gives an explicit exclusion: 'Do not use to change which context a card carries — use update_card.' This leaves no ambiguity about when this tool is appropriate.
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.
6 tool updates
- Changed
create_card1 field changed- added
Input schema / properties / projectIdAdded value: +{ + "description": "Optional, for actions: the project card id (from list_projects) this action moves forward.", + "type": "string" +}
- Changed
list_cards1 field changed- added
Input schema / properties / projectIdAdded value: +{ + "description": "Only the actions that belong to this project card id (from list_projects).", + "type": "string" +}
- Added
mark_card_reviewed - Changed
move_card4 fields changed- added
Input schema / properties / contextAdded value: +{ + "description": "Optional context id to set as it moves, e.g. 'calls', or an empty string to clear it. GTD context id (e.g. calls, computer, errands, home). The user manages their own set — list_contexts shows it, create_context adds one; if unknown, the error lists the valid ids so you can retry.", + "type": "string" +} - added
Input schema / properties / projectIdAdded value: +{ + "description": "Optional project card id (from list_projects) when it lands in Next Actions as that project's next step; an empty string unlinks it.", + "type": "string" +} - added
Input schema / properties / sinceAdded value: +{ + "description": "Optional, for Waiting For: since when, e.g. '2026-09-01'.", + "type": "string" +} - added
Input schema / properties / whoAdded value: +{ + "description": "Optional, for Waiting For: who it is delegated to, e.g. 'Sam'.", + "type": "string" +}
- Changed
update_card1 field changed- added
Input schema / properties / projectIdAdded value: +{ + "description": "Project card id (from list_projects) to put this action under, or an empty string to unlink it. Only actions (Next Actions cards) can belong to a project.", + "type": "string" +}
- Added
update_column
1 tool update
- Changed
capture1 field changed- added
Input schema / properties / contextAdded value: +{ + "description": "Optional. Set it only when the user asks for a context, e.g. 'computer'; otherwise leave it out. Never write a context into notes. GTD context id (e.g. calls, computer, errands, home). The user manages their own set — list_contexts shows it, create_context adds one; if unknown, the error lists the valid ids so you can retry.", + "type": "string" +}
1 tool update
- Added
restore_card
11 tool updates
- Changed
capture2 fields changed- changed
Input schema / properties / notes / descriptionPrevious value: -"Optional longer description / body."New value: +"Optional details the user gave, e.g. 'expires in March, needs two photos'." - changed
Input schema / properties / title / descriptionPrevious value: -"The card title (the thing to capture)."New value: +"What to capture, in the user's words, e.g. 'Renew passport' or 'Call the dentist about the invoice'."
- Changed
create_card7 fields changed- changed
Input schema / properties / columnId / descriptionPrevious value: -"The destination column id (from list_columns)."New value: +"Destination column id, from list_columns." - changed
Input schema / properties / context / descriptionPrevious value: -"Optional, for action cards. GTD context id (e.g. calls, computer, errands, home). The user manages their own set — list_contexts shows it, create_context adds one; if unknown, the error lists the valid ids so you can retry."New value: +"Optional, for actions: the context id, e.g. 'calls'. GTD context id (e.g. calls, computer, errands, home). The user manages their own set — list_contexts shows it, create_context adds one; if unknown, the error lists the valid ids so you can retry." - changed
Input schema / properties / kind / descriptionPrevious value: -"Card kind. Defaults to 'card'."New value: +"'action' for Next Actions, 'project' for Projects, 'card' for every other column. Defaults to 'card'." - changed
Input schema / properties / notes / descriptionPrevious value: -"Optional longer description / body."New value: +"Optional details the user gave." - changed
Input schema / properties / since / descriptionPrevious value: -"Optional: since when it's been waiting (Waiting For)."New value: +"Optional, for Waiting For: since when, e.g. '2026-09-01' or 'last Monday'." - changed
Input schema / properties / title / descriptionPrevious value: -"The card title (the task or note)."New value: +"The card title: a verb-first next action ('Email Sam the quote'), a project outcome ('Offsite planned'), or the note itself." - changed
Input schema / properties / who / descriptionPrevious value: -"Optional: who it's delegated to (Waiting For)."New value: +"Optional, for Waiting For: who it is delegated to, e.g. 'Sam'."
- Changed
create_context2 fields changed- changed
Input schema / properties / color / descriptionPrevious value: -"Optional hex color like #4f9466."New value: +"Optional hex color, e.g. '#4f9466'. Auto-picked if omitted." - changed
Input schema / properties / label / descriptionPrevious value: -"The context label, e.g. '@boat' or 'boat'."New value: +"The context label as the user said it, e.g. '@boat' or 'boat'."
- Changed
delete_context1 field changed- changed
Input schema / properties / contextId / descriptionPrevious value: -"The context id (from list_contexts)."New value: +"The context id to delete, from list_contexts."
- Changed
get_card1 field changed- changed
Input schema / properties / cardId / descriptionPrevious value: -"The card id."New value: +"The card id, from a list, search, or earlier result."
- Changed
list_cards2 fields changed- changed
Input schema / properties / context / descriptionPrevious value: -"Only action cards with this context. GTD context id (e.g. calls, computer, errands, home). The user manages their own set — list_contexts shows it, create_context adds one; if unknown, the error lists the valid ids so you can retry."New value: +"Only action cards tagged with this context id, e.g. 'calls'. GTD context id (e.g. calls, computer, errands, home). The user manages their own set — list_contexts shows it, create_context adds one; if unknown, the error lists the valid ids so you can retry." - changed
Input schema / properties / kind / descriptionPrevious value: -"Only cards of this kind."New value: +"Only cards of this kind: 'action' (Next Actions), 'project' (Projects), or 'card' (everything else)."
- Changed
list_next_actions1 field changed- changed
Input schema / properties / context / descriptionPrevious value: -"Only actions with this context. GTD context id (e.g. calls, computer, errands, home). The user manages their own set — list_contexts shows it, create_context adds one; if unknown, the error lists the valid ids so you can retry."New value: +"Only actions tagged with this context id, e.g. 'calls' or 'errands'. GTD context id (e.g. calls, computer, errands, home). The user manages their own set — list_contexts shows it, create_context adds one; if unknown, the error lists the valid ids so you can retry."
- Changed
move_card2 fields changed- changed
Input schema / properties / toColumnId / descriptionPrevious value: -"The destination column id."New value: +"Destination column id, from list_columns." - changed
Input schema / properties / toIndex / descriptionPrevious value: -"Optional 0-based position within the destination column. Defaults to the end."New value: +"Optional 0-based position within the destination column, e.g. 0 for the top. Defaults to the end."
- Changed
search_cards1 field changed- changed
Input schema / properties / query / descriptionPrevious value: -"Text to search for in card titles and notes."New value: +"Words to look for in card titles and notes, e.g. 'passport' or 'dentist'."
- Changed
update_card3 fields changed- changed
Input schema / properties / context / descriptionPrevious value: -"New context, or an empty string to clear it. GTD context id (e.g. calls, computer, errands, home). The user manages their own set — list_contexts shows it, create_context adds one; if unknown, the error lists the valid ids so you can retry."New value: +"New context id, e.g. 'errands', or an empty string to clear it. GTD context id (e.g. calls, computer, errands, home). The user manages their own set — list_contexts shows it, create_context adds one; if unknown, the error lists the valid ids so you can retry." - changed
Input schema / properties / since / descriptionPrevious value: -"New waiting-since value."New value: +"New waiting-since value, e.g. '2026-09-01'." - changed
Input schema / properties / who / descriptionPrevious value: -"New delegated-to value."New value: +"New delegated-to value, e.g. 'Sam'."
- Changed
update_context3 fields changed- changed
Input schema / properties / color / descriptionPrevious value: -"New hex color like #4f9466."New value: +"New hex color, e.g. '#4f9466'." - changed
Input schema / properties / contextId / descriptionPrevious value: -"The context id (from list_contexts)."New value: +"The context id, from list_contexts." - changed
Input schema / properties / label / descriptionPrevious value: -"New label."New value: +"New label, e.g. '@office'."
16 tool updates
- First observed
archive_card - First observed
capture - First observed
create_card - First observed
create_context - First observed
delete_context - First observed
get_card - First observed
list_cards - First observed
list_columns - First observed
list_contexts - First observed
list_next_actions - First observed
list_projects - First observed
list_waiting_for - First observed
move_card - First observed
search_cards - First observed
update_card - First observed
update_context
Publisher details
- Operator
- Minosin AB (maker of GTD Brain) · Publisher source
- Operator website
- https://gtdbrain.com
- Vendor relationship
- First-party
- Documentation
- https://gtdbrain.com/connect?source=glama
- Trust center
- Not available
- Restrictions
- Free GTD Brain account (passwordless email login) covers the first few tool actions; continued use needs an active GTD Brain subscription. No custom OAuth app or admin approval needed.
Related MCP Connectors
Task & board management for AI agents + humans. Kanban, comments, digests via MCP.
ADHD-friendly tasks, notes & projects for LucidNest - 18 tools, scoped tokens, Streamable HTTP.
Create, read and live-edit visual boards, Kanban plans, Gantt timelines and diagrams with AI agents.
Task management for people and AI agents, with scoped OAuth access to issues, projects, and docs.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to work a self-hosted kanban board as first-class users, exposing eleven kanban_* tools over a stateless Streamable HTTP endpoint for listing projects, stages, members and custom fields, and for creating, updating, moving and deleting tasks. Authenticates with bearer-token scopes so read-only or write access can be granted per agent, with every mutation audited.MIT
- FlicenseNot gradedqualityDmaintenanceA comprehensive project management system that provides a full-featured Kanban board and dashboard accessible to AI agents. It enables agents to programmatically manage projects, tasks, and workflows through a suite of 13 specialized tools and 4 resource types.4-
- AlicenseNot gradedqualityFmaintenanceConnects AI assistants to the Tududi productivity platform to manage tasks, projects, and notes using GTD methodology. It provides a standardized interface for LLMs to read and manipulate data through a suite of over 25 tools and resources.1MIT
- AlicenseNot gradedqualityAmaintenanceSelf-hosted kanban board that dispatches AI agent fleets against tickets. The embedded Streamable HTTP /mcp endpoint exposes 7 tools to list projects, read boards and tickets, and create, move and comment tickets from any MCP client.26AGPL 3.0
Glama MCP Gateway
Add one secure layer between your agents and this server.