Skip to main content
Glama

Caddie

Server Details

Caddie connects AI agents to notes, tasks and calendar through an HTTP MCP server. Authenticate with a personal agent key from Settings > AI. Free while in beta.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

B3.1/5.0

Scored across 97 tools

Disambiguation3/5

Most tools target distinct resources or actions, but the 97-tool surface creates several confusing clusters: agent_tasks/task_status/task_wait/agent_reply/task_reply/task_approve/task_stop, phone_ask/phone_location/phone_photo/phone_result, and note/task/table operations overlap conceptually. Descriptions are detailed enough to disambiguate in many cases, but selection remains error-prone at this scale.

Naming Consistency3/5

Names are uniformly snake_case, but the convention mixes verb_noun (create_note, list_tasks, update_event), noun_verb (linear_issues, memory_read, journal_write), and noun-only-ish forms (decision_log, task_status). It is generally readable but not predictable enough for a 97-tool server.

Tool Count1/5

Ninety-seven tools is an extreme mismatch for a single MCP server and makes the tool surface difficult to navigate or select from reliably. Even though the app is broad, many tools could be consolidated or grouped into smaller domain-specific servers.

Completeness4/5

Coverage is very broad: notes, tasks, tables, calendar, booking links, agents, routines, habits, journal, meetings, memory, skills, Linear, Slack, phone prompts, and search all have lifecycle operations. Minor gaps exist, such as no obvious single-task getter or explicit note listing beyond search, but agents can work around them.

Available Tools

97 tools
add_columnAInspect

Add a column to a data table: column is { name, type, options?, unique? } as in create_data_table. A select column's options are changed in Caddie: if a value you need isn't an option, ask the user rather than making a near-duplicate column.

NameRequiredDescriptionDefault
tableYesthe data table's id or name (list_data_tables)
columnYes
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses the Caddie constraint that select-column options must be requested from the user, which is real behavioral context. However, it omits permissions, reversibility, duplicate-name handling, and what the call returns for a mutation tool.

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 compact sentences, front-loaded with the core operation and the column structure, followed by the caveat. No wasted prose.

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

Completeness3/5

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

For a mutation tool with a nested object and no annotations or output schema, the description covers structure and one key behavioral edge case but leaves gaps: return value, error/duplicate behavior, and whether existing rows are affected when adding a column.

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 67%, and the description adds value beyond it by spelling out the column object shape ({ name, type, options?, unique? }) and clarifying that options applies to select columns. The 'as in create_data_table' cross-reference helps an agent construct valid nested input.

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

Purpose4/5

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

States a specific verb and resource: 'Add a column to a data table', and clarifies the column shape by referencing create_data_table. This distinguishes it from siblings like add_rows or create_data_table, though it doesn't explicitly contrast when to extend an existing table vs. create a new one.

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

Usage Guidelines3/5

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

Provides a meaningful constraint: for select columns, if a needed value isn't an option, ask the user rather than creating a near-duplicate. But there's no explicit guidance on when to use this vs. create_data_table or other column-related operations; usage is largely implied.

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

add_dictation_wordsAInspect

Add names and terms to the user's dictation dictionary (Settings › Dictation), so their Mac spells them right when they dictate: people, companies, products, jargon. Up to 50 at a time, each under 40 characters; ones already there are skipped.

NameRequiredDescriptionDefault
wordsYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does disclose real constraints: a 50-item batch ceiling, a 40-character per-item limit, and skip-on-duplicate semantics. It omits permissions requirements and whether the response reports skipped vs added items, which is the remaining gap for an unannotated mutation tool.

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

Conciseness5/5

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

Two sentences, front-loaded with the purpose and the destination, followed by the limits and dedupe behavior. Every clause carries information an agent would otherwise have to guess.

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

Completeness4/5

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

For a one-parameter, unannotated, no-output-schema write tool, the description covers purpose, limits, and idempotency. It stops short of describing what the call returns or how partial failures are reported, which would fully close the loop.

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 0% — the single `words` array param has no description at all — so the description must compensate, and it does: it explains the array holds names/terms, its batch limit of 50, and the 40-character constraint per item. Only the item format (plain strings vs phrases) is left implicit.

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 — add names and terms to the user's dictation dictionary — and even names the exact settings location (Settings › Dictation). No sibling tool covers dictation vocabulary, and the description makes the scope unmistakable.

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

Usage Guidelines4/5

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

Gives concrete examples of what belongs in the dictionary (people, companies, products, jargon), which tells an agent when this tool is the right call. There are no exclusions or stated alternatives, but none exist among the siblings, so the gap is minor.

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

add_rowsAInspect

Add rows to a data table (up to 500 a call): each row is { "": value }. Values are checked against each column's type: numbers, dates as YYYY-MM-DD (or YYYY-MM-DDTHH:MM), true/false for checkboxes, select and status values must be one of the column's options (by name), multi-select takes a list. The call is all or nothing: if any row is wrong nothing is added and the error says which row and why. A value already in the table's unique column is rejected: use upsert_rows to update-or-add by that column.

NameRequiredDescriptionDefault
rowsYes
tableYesthe data table's id or name (list_data_tables)
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so: it discloses atomic all-or-nothing behavior, that the error identifies the failing row and reason, and that unique-column collisions are rejected. These are exactly the behavioral traits an agent needs before attempting a bulk write.

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?

Front-loads the action and batch limit, then value formats, then atomicity, then the redirect to upsert_rows. Every sentence adds distinct operational information with no filler.

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

Completeness4/5

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

There is no output schema, and the description only covers the failure path (which row failed and why), not what a successful call returns such as a count of inserted rows. Everything else needed to invoke it correctly is present.

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 67%, and the description more than compensates by defining the rows payload as {column name: value} and specifying per-type value formats (YYYY-MM-DD dates, true/false checkboxes, option names for select/status, lists for multi-select). The table and workspace parameters are left to the schema, which documents them adequately.

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 ("Add rows to a data table") with an explicit batch bound and the row object shape. It also names the sibling it is not (upsert_rows), so an agent can distinguish it from update_rows/upsert_rows 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 exclusion with the routing condition: values already in the unique column are rejected, and upsert_rows is named as the tool to use instead. The 500-row-per-call limit also sets a practical usage boundary.

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

agent_replyBInspect

Whether an agent you asked (ask_agent) has answered, and its answer. Once you have it here, it isn't sent to this task again.

NameRequiredDescriptionDefault
requestYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full load and does disclose one valuable behavioral trait: the answer is consumed once and won't be re-sent. However, it doesn't say whether the call blocks until an answer exists or returns immediately with a pending status, nor what subsequent calls return -- critical for a polling tool.

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 short sentences with no filler, front-loading the retrieval purpose before the consumption caveat. The second sentence's phrasing ('it isn't sent to this task again') is slightly awkward but earns its place.

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

Completeness3/5

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

With no annotations and no output schema, the description should clarify return semantics and blocking behavior, but leaves both underspecified and never defines the sole parameter. It is adequate to know what the tool is for, but not fully sufficient to call it correctly.

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

Parameters2/5

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

The single required parameter 'request' has 0% schema description coverage, and the description never explains what it represents (a task/request id? the original question?). With low coverage the description is expected to compensate, and it does not.

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

Purpose4/5

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

The description clearly states this retrieves (a) whether an agent previously asked via ask_agent has answered, and (b) its answer, which distinguishes it from the ask_agent sibling that initiates the question. It lacks an explicit verb of its own (the name 'agent_reply' could read as a send action), but the text resolves that ambiguity.

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

Usage Guidelines4/5

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

It ties itself to ask_agent, establishing the usage sequence (ask, then check here), and adds the important caveat that a retrieved answer is not delivered to the task again. It doesn't address polling cadence or how it relates to alternatives like task_wait/task_status for task-style replies, so guidance is clear but not exhaustive.

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

agent_tasksAInspect

For clients outside Caddie (T3 Code, Claude Code or Codex in a terminal) acting for the user: the user's agents' tasks with each one's state (working, queued, waiting_for_mac, waiting_for_ok, needs_user, failed, stopped, idle, done) and its last message. agent: one agent (name or id); include_done: done tasks too. A list of { agent, agent_id, tasks }, the newest 20 tasks each; when not all could be read, { agents, partial: true } with some of them. Caddie's own agents: use list_agents.

NameRequiredDescriptionDefault
agentNo
include_doneNo

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose meaningful behavior: the exact return shape ({agent, agent_id, tasks}), a 20-task cap per agent, and the degraded 'partial: true' response when some agents cannot be read. It omits permission/auth requirements and whether include_done defaults to false, 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.

Conciseness4/5

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

Front-loaded with the scoping condition and the resource, then params, then return shape, then the sibling pointer. Dense but every clause carries information; the long parenthetical state list is the only mildly heavy element and it removes the need for a separate state reference.

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 return structure, the 20-task limit, and the partial-read failure mode despite there being no output schema and no annotations, and defines both parameters. Only default values and any auth/rate context are missing, which is minor for a read-only listing 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 0%, so the description must compensate, and it does: 'agent' is defined as a name or id, and 'include_done' is defined as including done tasks. It does not state the default value for include_done or whether 'agent' accepts multiple values, which is the remaining gap.

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 (list) plus resource (the user's agents' tasks), enumerates the possible states, and explicitly scopes it to clients outside Caddie (T3 Code, Claude Code, Codex). It also names the sibling that covers the other case ('Caddie's own agents: use list_agents'), so it is unambiguously distinguishable from list_agents and task_status.

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 condition (clients outside Caddie acting for the user) and names the alternative tool for the complementary case (list_agents for Caddie's own agents). An agent can route correctly without opening either schema.

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

append_to_noteBInspect

Add Markdown content to the end of an existing note.

NameRequiredDescriptionDefault
idYes
contentYes
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It reveals the mutation direction (appended to the end, not replacing) but says nothing about permissions, formatting handling, behavior when the id is not found, or what the response contains.

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

Conciseness4/5

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

One front-loaded sentence with zero filler; the mutation target and append semantics come first. It is efficient but so terse that it leaves no room for the behavioral context a no-annotation mutation tool needs.

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

Completeness2/5

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

With no annotations, no output schema, and only 33% schema coverage, the description should explain return value, error behavior on a missing note, and whether a separator is inserted. None of that is present.

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 33%: only 'workspace' is documented in the schema, and it is described well. The description adds real meaning for 'content' by specifying Markdown, and 'existing note' implies id is a note identifier, partially compensating for the undocumented id parameter.

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

Purpose4/5

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

A specific verb ('Add') plus resource ('Markdown content ... existing note') with the append-to-end semantics made explicit, which distinguishes it from update_note or create_note. It stops short of naming those siblings directly, so it is clear but not fully differentiated.

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

Usage Guidelines3/5

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

'existing note' implies the precondition that the note must already exist and that this is additive rather than replacing content, which is enough to choose it over create_note. However, it never states when to prefer this over update_note, nor any exclusions or prerequisites.

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

archive_agentAInspect

Archive one of the user's agents, as Archive agent on the Agents page does: it moves under Done in the list, open tasks and all, and a message to it brings it back. Its routines keep running, as in the app (pause_routine stops one). unarchive: true puts it back in the list.

NameRequiredDescriptionDefault
agentYes
unarchiveNo

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the burden well: it discloses that archival is reversible ('a message to it brings it back'), that open tasks move with it, and — critically — that routines keep running, which is a non-obvious side effect. It omits permissions/auth needs and whether the call is idempotent or errors on an already-archived agent.

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

Conciseness3/5

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

Front-loads the core action, which is good, but the UI analogue is stated twice ('as Archive agent on the Agents page does' and 'as in the app'), and the middle clause 'open tasks and all' is loose where precision is needed. Trimmed of redundancy it would be two tight sentences.

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?

No output schema and no annotations, yet the description covers the state change, reversibility, side effects on tasks and routines, and the unarchive override — enough to call it correctly. The remaining hole is return/error behavior and the identifier format for 'agent'.

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 0%, so the description must compensate. It handles 'unarchive' well ('puts it back in the list'), but gives no format guidance for the required 'agent' parameter — whether it takes an ID, a name, or a slug. That is the single most likely invocation error for this tool.

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

Purpose4/5

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

Clear verb+resource pairing ('Archive one of the user's agents') with an explicit anchor to the equivalent UI action, so the agent knows exactly what operation this represents. It implicitly distinguishes itself from siblings like organize_agents, update_agent, and list_agents by being about archiving rather than listing/editing, though it never names them.

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

Usage Guidelines3/5

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

The description implies usage ('as Archive agent on the Agents page does') and names one alternative path weakly — pause_routine is referenced as the way to stop routines. But there is no explicit 'use this when…/do not use this when…' guidance versus siblings such as organize_agents or update_agent, and no preconditions stated.

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

ask_agentAInspect

Ask another of the user's agents for something it's set up for (its tools, files, sign-ins or what it knows). It runs as a new task in that agent, on the Mac that runs it. from: your own "agent:task:key" from your instructions. With from, its answer comes back to this task as a new message by itself; without it (a client outside Caddie), it's a message to it marked as asked from outside Caddie via this client, and you get the answer with agent_reply (task_status follows the task, by the task_id it returns). wait_seconds (up to 50) waits here for a quick answer. Up to 4 asks an hour from one task. Don't ask it to do what you can do yourself.

NameRequiredDescriptionDefault
fromNoyour own "agent:task:key", so the answer comes back by itself
agentYesits name or id (list_agents)
messageYes
wait_secondsNo

TDQS

A4.1/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it discloses that the ask runs as a new task on the target's Mac, how the answer returns (as a new message with from; via agent_reply without from), that task_status follows by task_id, the wait_seconds wait behavior, and a 4-asks-per-hour rate limit.

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

Conciseness3/5

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

Purpose is front-loaded, but the middle is a dense run-on ('without it (a client outside Caddie), it's a message to it marked as asked from outside Caddie via this client') that is hard to parse. Every clause carries information, so it's not padded, but structure and readability suffer.

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

Completeness4/5

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

For a 4-param tool with no output schema and no annotations, the description explains direction of the call, return path, and limits well enough to invoke correctly. It could be slightly clearer on what the returned answer message looks like, but the essential mechanics are covered.

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 50%, and the description compensates by explaining the semantics of from (your own agent:task:key, triggers automatic reply) and wait_seconds (up to 50, waits here for a quick answer). agent is covered by the schema's list_agents hint; message is self-evident.

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

Purpose4/5

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

States a specific verb+resource: asking another agent for something it's set up for, with scope ('its tools, files, sign-ins or what it knows'). This distinguishes it from agent_reply (which retrieves answers) and list_agents, though it doesn't name those siblings explicitly.

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

Usage Guidelines4/5

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

Gives clear context: use it to get something only another agent can provide, and 'Don't ask it to do what you can do yourself.' It also explains the from vs no-from scenarios and the rate limit. However, it doesn't explicitly contrast with agent_reply as a retrieval alternative beyond mentioning it in passing.

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

create_collectionBInspect

Make an empty collection (folder) for notes. (create_note and move_note make one too when given a new name.)

NameRequiredDescriptionDefault
nameYes
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It discloses only that the collection is created empty. It says nothing about behavior when a collection of that name already exists, whether the call is idempotent, permission requirements, or what is returned.

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

Conciseness5/5

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

Two short sentences, purpose front-loaded, with the sibling carve-out in a parenthetical. No filler.

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

Completeness3/5

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 annotations and no output schema, the description covers intent but omits duplicate-name behavior and return information. The workspace parameter is rescued by the schema, leaving the definition only marginally complete.

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

Parameters2/5

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

Schema description coverage is only 50%: 'workspace' is well documented in the schema (including the personal-workspace default), but 'name' is undocumented in both the schema and the description. The description adds no meaning to any parameter, so it fails to compensate for the uncovered 'name' argument.

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

Purpose4/5

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

States a specific verb and resource ('Make an empty collection (folder) for notes') and clarifies that it creates a container with no notes inside. The parenthetical names sibling paths (create_note, move_note) that also produce collections, which helps an agent differentiate, though it doesn't distinguish from list_collections/rename_collection beyond the verb.

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 parenthetical 'create_note and move_note make one too when given a new name' is effectively a when-not-to-use note, steering the agent away from this tool when the collection is a byproduct of creating a note. No explicit prerequisites or exclusions beyond that, but the context is clear.

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

create_data_tableAInspect

Make a data table. columns: [{ name, type, options?, unique? }]; type is text, number, select, multi, status, date, checkbox, email, url, person or note; options lists a select/multi/status column's choices (a status column without options gets To do, In progress, Done); unique: true on one column (say Email) makes upsert_rows match on it and keeps duplicates out. The first column is each row's title.

NameRequiredDescriptionDefault
nameYes
columnsYes
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses useful defaults (a status column without options gets To do/In progress/Done) and side effects (unique:true makes upsert_rows match and keeps duplicates out), but says nothing about permissions/scope, what happens on a duplicate column name, or what is returned on success.

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 purpose followed by dense, high-value semantics for the non-obvious parameters; almost every clause earns its place. The middle section is a run-on that chains several rules into one sentence, slightly hurting scanability.

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

Completeness3/5

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

Covers creation input thoroughly, which is the hard part. However, with no output schema and no statement of what is returned (e.g. table id/URL), an agent that needs the new table's identity to call add_column or add_rows afterwards is left guessing.

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 only 33% (only workspace is described in-schema), so the description must compensate, and it does: it spells out the columns object shape, enumerates all eleven type values, explains the conditional requirement that options lists choices for select/multi/status, and defines unique's matching semantics. The top-level `name` argument is still unexplained.

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

Purpose4/5

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

Opens with a specific verb+resource ('Make a data table') and immediately narrows the resource with column/type semantics, so an agent can distinguish it from add_column, add_rows and query_rows. It never names a sibling explicitly, so differentiation is inferred rather than stated.

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

Usage Guidelines3/5

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

Usage is implied by the resource ('create a table' before adding columns/rows), and the unique-column note hints at the upsert_rows follow-up. But there is no explicit guidance on when to use this versus add_column/get_data_table/list_data_tables, nor any stated prerequisite ordering.

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

create_eventAInspect

Create an event on the user's primary Google calendar. start is an ISO date-time with timezone offset (e.g. 2026-10-12T15:00:00+05:30); give end or minutes (default 30). attendees (up to 20 emails) are invited and Google emails them, so from an agent's own turn inside Caddie that's refused; meet: true adds a Google Meet link. Returns the Meet link and attendees.

NameRequiredDescriptionDefault
endNo
meetNoadd a Google Meet link
startYes
titleYes
minutesNo
attendeesNoguests' email addresses

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the side effect of emailing invitees, the agent-context restriction that blocks it, the 20-attendee cap, the 30-minute default, and the Meet-link side effect. It stops short of stating calendar-permission requirements or what happens on conflict/invalid timezone.

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

Conciseness4/5

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

Dense and front-loaded — the core action leads, then format rules, then the constraint, then the return. Semicolon-chained clauses make it slightly run-on, but nearly every clause carries non-redundant information.

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

Completeness4/5

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

For a 6-parameter mutation with no annotations and no output schema, the description covers the action, key parameter formats, a hard restriction, and the return value. Missing only edge-case behavior (missing primary calendar, invalid timezone, attendee failure) which keeps it from being complete.

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 only 33%, yet the description compensates: it gives the ISO date-time format with a concrete example for start, explains the end-vs-minutes tradeoff with the default, and documents attendees as emails capped at 20. Only title is left unstated, which is self-evident.

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

Purpose4/5

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

States a specific verb and resource with scope: 'Create an event on the user's primary Google calendar.' An agent can distinguish this from list_events/update_event/delete_event, though no sibling is named explicitly to route away from create_booking_link or find_free_time.

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

Usage Guidelines3/5

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

Provides one concrete exclusion ('from an agent's own turn inside Caddie that's refused' for attendees) and a defaulting rule ('give end or minutes (default 30)'), but gives no guidance on when to prefer create_booking_link or find_free_time, or what to do when the agent needs to invite guests.

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

create_habitAInspect

Add a habit (something to tick off, with a streak) or a routine (planned time on the calendar, like Lunch; not an agent routine, which is create_routine). Always personal. Defaults as in Caddie: a habit 30 minutes at 07:00 on weekdays, a routine 45 minutes at 12:30 every day.

NameRequiredDescriptionDefault
daysNothe days it's on: Mon, Tue… or weekdays, weekends, daily
kindNodefault habit
nameYes
timesNotimes of day, HH:MM: more than one is that many sessions a day
minutesNohow long each session takes, 5 to 600

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations present, the description carries the full behavioral burden and does well: it states the resource is 'Always personal' and discloses the concrete Caddie defaults (habit: 30 minutes at 07:00 on weekdays; routine: 45 minutes at 12:30 every day). It does not cover permissions, duplicate handling, or side effects, so it falls short of complete.

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 dense sentences that front-load the two kinds before adding the disambiguation and defaults. The parentheticals earn their place, though the sentence is slightly packed and could be split for easier scanning.

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

Completeness4/5

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

For a 5-parameter mutation tool with no annotations and no output schema, the description covers semantics, defaults, the personal-only constraint, and sibling disambiguation. Error or duplicate behavior is absent, but the major calling context is present.

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

Parameters4/5

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

Schema coverage is already 80%, so the schema documents most parameters. The description adds genuine meaning beyond the schema by tying specific default values to kind (default minutes, times, and days per habit/routine), which the schema only partially captures via 'default habit'.

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

Purpose5/5

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

The description opens with a specific verb and resource ('Add a habit… or a routine') and immediately defines what each kind is: a habit is ticked off with a streak, a routine is planned calendar time. It also disambiguates from the sibling create_routine by calling out that agent routines are handled separately.

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

Usage Guidelines4/5

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

The description gives clear context for choosing between the two kinds and explicitly routes agent-routine creation to create_routine. It lacks explicit exclusions against update_habit or update_routine, but for a creation tool the distinction is well covered.

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

create_linear_issueAInspect

Create an issue in the user's Linear through Caddie's Linear connection. team is a team key like ENG (default: their first team); assignee is a name or email in that team (from an agent's own turn inside Caddie, leave it out: assigning is refused there); priority is urgent, high, normal or low (or Linear's 0-4: 0 none, 1 urgent, 2 high, 3 normal, 4 low).

NameRequiredDescriptionDefault
teamNo
titleYes
assigneeNo
priorityNourgent, high, normal (or medium), low, none; or 0-4
descriptionNo

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses the default team (first team) and the notable assignee-refusal behavior inside Caddie agent turns, which is valuable context. However, it omits permissions, reversibility/idempotency, rate limits, and what the response contains.

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

Conciseness4/5

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

One front-loaded paragraph leads with purpose before parameter details, with no filler sentences. The dense parentheticals and long sentence slightly reduce readability but the content is efficiently sized.

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

Completeness3/5

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

For a mutation tool with no annotations and no output schema, it covers the core creation action and key parameter semantics. It does not state that title is required or what the tool returns (e.g., issue ID or URL), leaving the agent to infer result handling.

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

Parameters4/5

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

Schema description coverage is only 20%, so the description must compensate; it does for three of five parameters. It explains team format and defaulting, assignee name/email plus refusal context, and maps human priority labels to Linear's 0–4 scale. The title and description parameters remain undocumented in both places, though title is self-evident and body content is straightforward.

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 ('Create') and resource ('issue in the user's Linear'), plus integration context ('Caddie's Linear connection'). The creation action distinguishes it implicitly from siblings like linear_update_issue and linear_query.

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

Usage Guidelines3/5

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

Implies use when creating a Linear issue but never states when to prefer linear_update_issue or linear_query, nor any when-not-to-use conditions. The assignee caveat is a conditional behavior, not alternative routing guidance.

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

create_noteAInspect

Create a note in Caddie. content is Markdown: # headings, - bullets, 1. lists, bold, and '- [ ] something' lines become checklist items in the note (not the user's To-dos). To give the user a To-do, use create_task (with note: this note's id to link it); put decisions you need from the user in your reply.

NameRequiredDescriptionDefault
titleYes
contentYes
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.
collectionNooptional: a collection (folder) name, e.g. Meetings

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses non-obvious rendering behavior (Markdown subset, checklist conversion, and that checklists are NOT To-dos), which is real value. However it omits permissions, duplicate-title behavior, and never states what the call returns — the id is only implied by 'this note's id', which matters for chaining into create_task.

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

Conciseness4/5

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

Three tight sentences, front-loaded with the core action, then format semantics, then the To-do routing rule. Every sentence carries information; the only mild bloat is the mixed audience of formatting and cross-tool routing in one paragraph.

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

Completeness3/5

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

For a 4-parameter write tool with no annotations and no output schema, the description covers format and To-do routing but leaves the agent guessing about the return value (needed to link via create_task) and about behavior when the same title already exists. Adequate but with clear gaps.

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 50%: workspace and collection are documented in the schema, but title has no description anywhere. The description compensates well for content by spelling out the Markdown semantics and checklist behavior, but adds nothing for title or the workspace/collection selection logic beyond what the schema already says. Baseline 3 fits.

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

Purpose4/5

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

The description opens with a specific verb and resource ('Create a note in Caddie') and immediately distinguishes the tool from create_task for the To-do case. It does not distinguish itself from append_to_note, update_note, or note_from_template, which share the note-creation space, so sibling differentiation is only partial.

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

Usage Guidelines4/5

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

It gives a clear routing rule: '- [ ]' lines are checklist items in the note, and to give the user a real To-do use create_task with note: <id>. It also says where to put decisions ('in your reply'). It stops short of covering append_to_note vs create_note vs note_from_template, so it is not a full when/when-not map.

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

create_taskAInspect

Add a task. Without a date it goes to the Inbox; with a date (YYYY-MM-DD, optional time HH:MM) it's planned on that day. Optionally a priority, a due date, a list (someday, week), subtasks, the note it came from, a Linear issue, and in a team workspace who it's for (assignee).

NameRequiredDescriptionDefault
dueNoa deadline, YYYY-MM-DD (apart from date, the day it's planned); "" clears it
dateNo
listNounplanned, where it waits: inbox (To-dos), someday (the backlog) or week (Later this week; next week on Saturday and Sunday). Takes it off its planned day; not with date
noteNoa note's id (search_notes) the task came from, shown with it in Caddie; "" unlinks it
timeNo
titleYes
linearNoa Linear issue key like ENG-123. Only an issue assigned to the user: Caddie's Linear sync keeps the task in step with it (title, status), and ticks it off once it's no longer theirs. "" unlinks it
minutesNohow long it takes, default 30
assigneeNoteam workspaces only: whose it is, a member's name, email or id ("me" for the user); "" or "none" leaves it unassigned
priorityNo
subtasksNothe subtasks' titles: replaces them all ([] removes them); one with the same title as before keeps its tick
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.
add_subtasksNosubtasks to add after the ones it has

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the load and does disclose the single most non-obvious behavior: omitting a date silently files the task in the Inbox rather than erroring. It also discloses the Linear-sync side effect and team-workspace scoping for assignee. It does not state permissions, failure modes, or that creation is not idempotent, keeping it below a 5.

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

Conciseness4/5

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

Three sentences, front-loaded with the default routing rule before the optional-field enumeration. The trailing optional-field list is a long comma chain that duplicates schema content, but nothing is wasted overall.

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

Completeness3/5

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

For a 13-parameter create tool with no annotations and no output schema, the description covers the core routing semantics but says nothing about the created task being returned (id, fields) or about how workspace scoping interacts with note/linear linking. Adequate but leaves gaps an agent will hit in practice.

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 69%, so the schema does most of the work, and the description adds real value on date format (YYYY-MM-DD, optional HH:MM). But it omits minutes (default 30), workspace selection, add_subtasks, and the interaction between date and list beyond the parenthetical.

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

Purpose4/5

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

Opens with a specific verb+resource ("Add a task") and immediately qualifies the two routing outcomes (Inbox vs. planned day). This distinguishes it from update_task and create_event without naming them, though no sibling is called out explicitly.

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

Usage Guidelines3/5

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

The date/no-date branch implicitly tells the agent which variant to use, and the assignee clause scopes team-workspace use. However, there is no explicit "use update_task to modify an existing task" or "use create_event for calendar blocks" guidance, so alternative selection 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.

create_video_noteAInspect

Make a video note from a YouTube video or an X post with a video, on the user's Mac, as pasting the link in Caddie does: the video, its transcript (captions, or transcribed on the Mac) and notes written from it. Returns the note's id once it's made (the transcript and notes may still be coming), else that it's being made.

NameRequiredDescriptionDefault
urlYesThe video's link (youtube.com/watch?v=…, youtu.be/…, x.com/<user>/status/…).
workspaceNoWorkspace name or id (list_workspaces). Default: the personal one. It must be the one open in Caddie on the Mac, where the note is made.
collectionNoA collection to put it in (its name, list_collections). Default: Inbox.

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden and does well: it discloses that processing happens on the user's Mac (Caddie must be running) and that the call is asynchronous — an id is returned before the transcript and notes exist. It omits failure modes (no captions available), duplicate-note behavior, and permission requirements.

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

Conciseness4/5

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

The purpose is front-loaded and the return contract is stated in a second sentence with no filler. The first sentence is dense but every clause (sources, Mac locality, Caddie equivalence, outputs produced) carries information.

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

Completeness4/5

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

With no output schema and no annotations, the description supplies the return semantics (note id, or 'being made') and the async caveat, which is what an agent most needs. It stops short of covering what happens when transcription fails or when the workspace isn't open in Caddie.

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 url formats, workspace defaults and collection defaults in detail. The description adds only the Mac/Caddie locality constraint, which the schema's workspace field already states, so it adds little beyond the structured fields.

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 ('Make a video note') and names the exact accepted sources (YouTube video, X post with video). The 'as pasting the link in Caddie does' analogy pins the behavior to a known user workflow, clearly separating it from the generic create_note sibling.

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

Usage Guidelines4/5

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

The description makes clear this is for video links and that it runs on the user's Mac, which is the operative precondition. It does not explicitly exclude non-video links or point at create_note/get_transcript as alternatives, so routing is implied rather than spelled out.

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

decision_logAInspect

Write down a real choice right after you make it, so this agent's later runs follow it instead of working it out again: who someone is on an account, which of several matches you picked, which account, channel or approach you used when more than one would do, a default the user set. Not narration of steps, and not a choice the request already made for you. decision: one line, the conclusion ("Anupama on Slack is anupamadpverma@gmail.com"), 200 characters at most. why: what settled it, 300 at most. about: 1 to 4 short names of the people, accounts or topics ("Anupama Verma", "Slack"). evidence: "seen" (you saw it in the data), "inferred" (your best reading of it) or "said" (the user told you). rejected: the options you turned down. replaces: the id of an entry (decisions_read) this one overrides. A decision the user marked wrong or deleted is refused (the same text, or the same email, handle or number about the same people). from: your own "agent:task:key" (required inside Caddie); from outside Caddie, agent instead, and it's logged as the user's, via this client. Up to 20 an hour from one task, and 20 an hour from outside Caddie into one agent's log; 60 an hour into one agent's log in all.

NameRequiredDescriptionDefault
whyYes
fromNoyour own "agent:task:key" from your instructions
aboutYes
agentNooutside Caddie: the agent's name or id
decisionYes
evidenceYes
rejectedNo
replacesNoan entry's id from decisions_read

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries the full load and does so: it discloses refusal behavior (entries the user marked wrong or deleted are refused, including near-duplicates by text/email/handle/number), rate limits (20/hour per task, 20/hour externally, 60/hour per log overall), and attribution (external writes are logged as the user's via this client). These are non-obvious behavioral traits an agent cannot get from the schema.

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

Conciseness4/5

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

Front-loaded with the purpose and every clause carries real information, but the parameter rules, refusal policy, and rate limits are crammed into one undifferentiated paragraph, making the constraints harder to scan than they need to be.

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

Completeness4/5

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

For an 8-parameter, annotation-free mutation tool with no output schema, the description covers qualification rules, field limits, refusal policy, attribution, and throttling. The only real gap is that it never says what a successful write returns (e.g., the new entry's id), which matters because replaces depends on ids.

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

Parameters5/5

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

Schema coverage is only 38%, but the description compensates for essentially every parameter: character ceilings for decision (200) and why (300), cardinality and format for about (1–4 short names), the meaning of each evidence enum value, the purpose of rejected, and how from vs agent split inside/outside Caddie. This is meaning well beyond the bare schema types.

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

Purpose4/5

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

Specific verb and resource ("write down a real choice right after you make it") plus a concrete enumeration of qualifying decisions (identity on an account, which match was picked, which channel, a user default) and explicit exclusions ("not narration of steps"). An agent can tell this apart from note-taking siblings, though the boundary against memory_update/skill_save is never drawn.

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?

Explicit timing ("right after you make it") and an explicit negative rule ("not a choice the request already made for you"), which is stronger than most definitions offer. It does not name an alternative tool for the cases it rejects, so the agent must infer where narration or facts belong.

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

decisions_readAInspect

What this agent decided before, and why: its Decisions log (one line each: who a person is on which account, which account or approach to use, who gets what), newest first, 20 at most. Read it before you choose a recipient, an account, a channel or an approach that may have been settled already, and follow what's there instead of searching again (or replace it with decision_log if it's wrong now). about: words for the people, accounts or topics ("Anupama Slack"); without it, the newest. Your instructions may already list the ones that fit this task. from: your own "agent:task:key" from your instructions; from outside Caddie, agent (its name or id) instead. include_replaced: the ones a later decision overrode too.

NameRequiredDescriptionDefault
fromNoyour own "agent:task:key" from your instructions
aboutNo
agentNooutside Caddie: the agent's name or id
include_replacedNo

TDQS

A4.2/5.0
Behavior4/5

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

No annotations exist, so the description carries the burden and mostly does: it discloses result ordering (newest first), a hard cap (20 at most), and the semantic content of each line. It also implies read-only behavior by routing mutations to decision_log. It does not state permission/auth requirements or what an empty result means, so it stops short of full disclosure.

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

Conciseness4/5

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

Purpose comes first, then usage, then per-parameter notes, and no sentence is filler. It is dense with nested parentheticals and second-person asides, which makes it slower to parse than it needs to be, but the information density justifies the length.

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

Completeness4/5

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

With no annotations, no output schema, and 50% schema coverage, the description supplies the missing pieces: entry shape, ordering, cap, and the read-vs-write split against decision_log. It leaves open whether results are text or structured and how about matching works, minor gaps for a zero-required-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?

All four parameters get meaning beyond the schema: about is "words for the people, accounts or topics ("Anupama Slack")" with a documented default ("without it, the newest"), from is tied to the caller's "agent:task:key", agent is the outside-Caddie substitute, and include_replaced is "the ones a later decision overrode too". The gap is that about's matching semantics (substring vs. full-text, multi-word behavior) are left unstated.

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

Purpose4/5

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

The description names a specific resource ("its Decisions log"), describes the shape of each entry, and constrains scope ("newest first, 20 at most"). It also names the sibling decision_log as the write/replace counterpart, so the agent can separate read from write. The verb itself is only implied ("Read it before you choose..."), which keeps this short of a 5.

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?

It gives an explicit trigger ("Read it before you choose a recipient, an account, a channel or an approach that may have been settled already"), an explicit behavior to take ("follow what's there instead of searching again"), and an explicit alternative when the data is stale ("replace it with decision_log if it's wrong now"). When-to-use, what-to-do, and the competing tool are all stated.

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

delete_collectionAInspect

Delete a collection, not its notes: each note in it goes to its next collection, or else the Inbox (as Delete collection in Caddie). Only when the user asked to.

NameRequiredDescriptionDefault
nameYes
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations at all, the description carries the full burden and does disclose the key side effect: contained notes migrate to their next collection or the Inbox, so nothing is lost. It does not state whether the collection deletion itself is permanent/undoable, whether nested collections or settings are affected, or what authorization is required, which are meaningful gaps for a destructive operation.

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 and dense: the core behavior and its most important caveat appear in the first clause, and the consent rule closes it. The parenthetical '(as Delete collection in Caddie)' is slightly awkward phrasing but conveys a useful cross-reference and does not bloat the text.

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

Completeness4/5

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

For a two-parameter destructive tool with no annotations and no output schema, the description covers the two things an agent most needs: notes are preserved and user intent is required. Missing pieces — permanence/undo, workspace defaults, and error behavior — are modest but real, keeping it from a 5.

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

Parameters3/5

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

Schema coverage is 50%: `workspace` is well documented in the schema, while `name` has no description anywhere. The description adds no parameter guidance of its own (e.g., whether `name` is a display name, id, or both), so it neither compensates for the gap nor adds meaning beyond the schema.

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

Purpose5/5

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

States a specific verb and resource ('Delete a collection') and immediately distinguishes the act from sibling delete_note by clarifying that notes are not deleted but reassigned. An agent can tell exactly what this removes versus what survives 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?

'Only when the user asked to' gives an explicit precondition that excludes speculative or proactive deletions, which is valuable for a destructive tool. It stops short of naming alternatives (e.g., rename_collection, move_note) or saying what to do if the user only wants to empty a collection, so it is clear but not complete routing.

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

delete_eventAInspect

Delete a Google Calendar event (id, calendar_id and account_id from list_events). This can't be undone from Caddie: only delete when the user asked to. From an agent's own turn inside Caddie it's refused.

NameRequiredDescriptionDefault
idYes
account_idNo
calendar_idYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the burden and discloses important behavior: deletion cannot be undone from Caddie and agent-initiated deletion is refused. It does not cover return values or authentication details, but the critical safety profile is present.

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

Conciseness5/5

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

Three short sentences, front-loaded with purpose. The safety warning and caller restriction are compact and useful; no sentence is wasted.

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

Completeness4/5

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

For a simple delete tool with no annotations and no output schema, the description covers the main risks, source of parameters, and caller restriction. It could say more about optional account_id or post-delete behavior, but nothing essential is missing.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate. It names all three parameters and points the agent to list_events as the source, which is useful, but it does not clarify that account_id is optional or explain expected identifier formats.

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: "Delete a Google Calendar event." It also ties the parameters to list_events, making it clearly distinct from list_events and update_event.

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

Usage Guidelines5/5

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

Explicitly says only delete when the user asked to, and that deletion from an agent's own turn inside Caddie is refused. That gives clear when-to-use and when-not-to-use guidance.

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

delete_habitAInspect

Delete a habit or routine (kept for 30 days on the server, so it can be brought back if needed). Only when the user asked to.

NameRequiredDescriptionDefault
idYes

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description carries the full load and does disclose the key behavioral trait: deletion is soft, retained 30 days server-side, and recoverable. It still omits what happens to associated habit logs/streaks and whether any permission is required, but the retention semantics are a substantive disclosure.

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

Conciseness5/5

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

Two short sentences, front-loaded with the action and followed by the recovery window, then the usage guard. No filler; every clause carries information.

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

Completeness3/5

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

A destructive tool with no annotations and no output schema needs to cover reversibility (it does) plus the parameter and downstream effects. The undocumented 'id' and unstated effect on habit history leave it only minimally complete.

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

Parameters2/5

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

Schema coverage is 0% for the single required parameter 'id', and the description says nothing about it — not whether it is the habit id vs. routine id, nor its format. The description does not compensate for the documentation gap.

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

Purpose4/5

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

States a specific verb (delete) and resource (habit), so an agent can identify the operation. However, 'or routine' muddies the boundary against the sibling delete_routine, leaving some ambiguity about which tool owns routine deletion.

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

Usage Guidelines3/5

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

'Only when the user asked to' gives a real gating condition for use, which is more than most tools offer. But it never names the alternative (delete_routine for routines, update_habit or log_habit for other habit operations), so the sibling overlap is left unresolved.

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

delete_noteAInspect

Delete a note. It's kept for 30 days on the server, so it can be brought back if needed. Its tasks stay. Only delete when the user asked to.

NameRequiredDescriptionDefault
idYes
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses soft deletion with 30-day server retention and that child tasks survive the delete, both non-obvious side effects. It omits permissions/authorization requirements, idempotency, and behavior when the id does not exist.

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

Conciseness5/5

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

Three short sentences, zero filler, with the core action stated first and the safety constraint last. Every sentence earns its place.

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

Completeness3/5

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

A mutation tool with no annotations and no output schema is adequately covered on retention and cascade behavior, but leaves the required id parameter undocumented and doesn't state what a successful delete returns or what errors look like. Enough to call it, not enough to call it confidently.

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

Parameters2/5

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

Schema coverage is 50%: the workspace parameter is well documented in the schema, but 'id' has no description anywhere. The tool description adds nothing about the id's type, format, or where to obtain it, so it fails to compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb+resource ('Delete a note') in the first sentence, immediately distinguishing it from append_to_note, update_note, and move_note. It does not name the obvious counterpart restore_note, so sibling differentiation is only partial.

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

Usage Guidelines4/5

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

'Only delete when the user asked to' is an explicit gating condition that prevents unrequested destructive actions. It stops short of naming alternatives (restore_note for undoing, archive-style flows), so it sits at clear-context rather than full when/when-not/alternatives.

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

delete_routineAInspect

Delete one of the user's routines for good (list_routines). Only when the user asked; pause_routine stops it and can be undone. From an agent's own turn inside Caddie it's refused: pause it instead.

NameRequiredDescriptionDefault
agentNo
routineYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does real work: it discloses irreversibility, a permission rule that causes refusal in a specific context, and the recoverable alternative. It does not say whether related history/run logs are also destroyed or whether any confirmation step is required, so it falls short of a 5.

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

Conciseness5/5

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

Three short sentences, each carrying distinct information: what it does, who may trigger it, and what to do instead. Destructive semantics and the alternative are front-loaded with no filler.

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

Completeness4/5

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

For a destructive mutation with no annotations and no output schema, the description covers irreversibility, caller restriction, and the recommended alternative. The remaining gap is parameter-level: the unexplained 'agent' field and the absence of routine identifier format guidance.

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

Parameters2/5

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

Schema coverage is 0%, so the description must document both parameters. The '(list_routines)' hint implies where to obtain the routine identifier, but the required 'routine' parameter's accepted format is never stated, and the 'agent' parameter is entirely unaddressed in both schema and description.

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 (delete) plus resource (routines) with an explicit permanence qualifier ('for good'). It also distinguishes itself from the reversible sibling pause_routine, so an agent can tell the two apart 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 Guidelines5/5

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

States a hard precondition ('Only when the user asked'), names the safer alternative (pause_routine, which 'can be undone'), and gives a concrete when-not case ('From an agent's own turn inside Caddie it's refused'). This is explicit when/when-not/alternative guidance.

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

delete_rowsAInspect

Delete rows by id. The user can undo it from the table's History in Caddie. Only delete when the user asked to.

NameRequiredDescriptionDefault
idsYes
tableYesthe data table's id or name (list_data_tables)
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose the key trait that deletion is recoverable via the table's History in Caddie, which is genuinely useful. But it omits whether unknown ids error or are silently skipped, whether partial deletion is possible, any cap on the id list, and what the call returns — gaps that matter for a destructive operation.

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

Conciseness5/5

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

Three short sentences with the destructive action and its reversibility front-loaded, and no filler. Each sentence contributes a distinct fact (what, recoverability, permission gate).

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

Completeness3/5

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

For a 3-param destructive tool with no annotations and no output schema, the description covers the essentials of intent and reversibility but leaves return behavior and edge-case handling unexplained. It is adequate rather than complete.

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 67%: table and workspace are already documented in-schema with cross-references to list_data_tables and list_workspaces. The description adds only "by id" on top, saying nothing about the format of ids, array size limits, or the consequence of a workspace/table mismatch. Baseline 3 fits given the schema does most of the work.

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

Purpose4/5

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

"Delete rows by id" states a specific verb and resource, and the id-based scope distinguishes it from add_rows/update_rows/upsert_rows by action. It is clear without the schema, though it does not explicitly name the sibling alternatives.

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

Usage Guidelines3/5

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

"Only delete when the user asked to" is a genuine invocation gate, so there is real guidance about when it is appropriate. However, there is no mention of when to prefer update_rows or how to handle a request to remove a subset of columns/values, leaving the alternative-selection reasoning implicit.

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

delete_taskAInspect

Delete a task (kept for 30 days on the server, so it can be brought back if needed). To finish a task, use update_task with done: true instead.

NameRequiredDescriptionDefault
idYes
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose the crucial behavioral fact: deletion is soft, retained 30 days server-side, and recoverable. It stops short of stating permission requirements, idempotency for a nonexistent id, or what happens to subtasks/recurrences tied to the task.

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

Conciseness5/5

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

Two sentences, zero filler, with the recoverability fact and the alternative-use case both front-loaded rather than buried.

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

Completeness4/5

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

For a 2-parameter destructive tool with no annotations and no output schema, the description covers the essentials an agent needs: what it destroys, that it is reversible for 30 days, and when not to use it. Missing only permission/edge-case behavior and a note on the id's origin.

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 50%: the workspace parameter is well documented in the schema, while id is undocumented but self-evident as the target task identifier. The description adds no parameter guidance of its own, so the schema does nearly all the work — baseline 3 is appropriate at this coverage level.

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

Purpose5/5

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

The description opens with a specific verb+resource ('Delete a task') and immediately clarifies a key property of the deletion. It also explicitly names the sibling it is often confused with (update_task) so an agent can distinguish the two 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?

It gives an explicit when-not with the exact alternative: to finish a task, use update_task with done: true. That is the single most likely mis-invocation for a delete tool, and the description routes the agent away from it with a concrete call shape.

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

find_free_timeAInspect

Free time on a day (default today; from now on, if today) between calendar events you're going to (not declined, not marked Free), planned tasks and habits, in the user's time zone. Returns slots as HH:MM-HH:MM at least minutes long, and what's busy. A Busy all-day event (a trip) leaves none.

NameRequiredDescriptionDefault
dateNoYYYY-MM-DD
betweenNothe part of the day to look in, HH:MM-HH:MM, default 09:00-18:00
minutesNothe shortest slot wanted, default 30

TDQS

A3.8/5.0
Behavior4/5

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

With zero annotations the description carries the full burden and does substantial work: it defines which events count (not declined, not marked Free), that tasks and habits also block, the time zone used, the return format, and the important edge case that a Busy all-day event leaves no free time. It never explicitly states the tool is read-only and has no side effects, which is the remaining gap.

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

Conciseness4/5

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

Three dense sentences, front-loaded with the core operation and followed by return format and the key edge case; nothing is padding. The parenthetical '(default today; from now on, if today)' is syntactically awkward and costs a re-read, which keeps it off a 5.

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?

There is no output schema, and the description compensates by describing the return as HH:MM-HH:MM slots plus what's busy. For a three-param, all-optional read tool with no annotations, the remaining gap is minor: no explicit statement of side-effect freedom or how overlapping tasks/habits are resolved when they conflict.

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 a baseline of 3 applies, but the description genuinely adds meaning: the date defaults to today and, when it is today, the window starts from now; and the 'minutes' threshold is tied to slot length ('at least minutes long'). The 'between' parameter is only implicitly referenced via the schema's 09:00-18:00 default.

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

Purpose4/5

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

The description states a specific computation — free slots on a day, derived from calendar events, planned tasks and habits — which is far more than a restatement of the name. It does not, however, distinguish itself from plausible siblings like plan_day or list_events, so an agent must infer where the boundary lies.

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

Usage Guidelines3/5

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

Usage is implied by the framing ('free time on a day', default today, from-now-on semantics for today) and the eligibility rule for events is spelled out. But there is no explicit when-to-use/when-not or pointer to an alternative tool for scheduling, listing events, or checking a specific meeting.

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

followup_actAInspect

Settle one Get it done row on a call note, as the user's own Done, Dismiss and Undo buttons do: "done" (the user did it already; an open or failed row), "dismiss" (not needed; an open or failed row) or "reopen" (open again a row marked done by hand or dismissed). It only changes the row's state: nothing is run, sent or paid. A payment can't be marked done (only the user marks a payment paid), and one marked paid can't be reopened. Only when the user said so, or it's plainly done. row: the row's id from followups_list (or its exact title).

NameRequiredDescriptionDefault
rowYes
noteYes
actionYes
workspaceNoa team workspace's name or id (list_workspaces); default: the personal Caddie

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden well: it says only the row's state changes, nothing is run, sent, or paid, and it explains payment-related restrictions. It does not cover permissions or failure behavior, but it is substantially transparent for a mutation tool.

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

Conciseness4/5

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

The definition is dense but front-loaded, beginning with the core purpose and action semantics before adding constraints. It contains little waste, though the single-paragraph structure could be clearer for a multi-action mutation.

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

Completeness4/5

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

For a complex mutation with no annotations and no output schema, the description gives a strong picture of what changes, what does not, and when the tool applies. It still leaves the note parameter and any return behavior unspecified, which keeps it short of fully complete.

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 low at 25%, and the description adds real meaning for row and action, including the source of the row id and when each action applies. However, the required note parameter is not explained, and workspace is only covered by 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?

The description states a specific verb and resource: settling one Get it done row on a call note. It distinguishes the tool from followups_list by saying the row id comes from that list, and the three actions are clearly scoped.

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

Usage Guidelines4/5

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

It gives explicit usage conditions such as 'Only when the user said so, or it's plainly done' and constraints for payment rows. It also points to followups_list as the source for the row id, though it does not name an alternative tool for the same action.

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

followups_listAInspect

A call's Get it done rows (the follow-ups Caddie worked out from it), or, without note, the open ones across the last 14 days' calls in one workspace (workspace; default the personal Caddie: a team's calls need its workspace). Each row: id, title, where it goes (dest, and service for an agent: Slack, Gmail, a coding agent…), to, owner ("me" is the user), state (open, failed, running, waiting, done, kept as a task for later, dismissed), result or error, and payment: true for a payment. status: "open" (still to do: open, failed, running or waiting), "done" (done, later or dismissed) or "all"; default "all" for one note, "open" without. mine: only the user's own rows. Read only: followup_act changes a row's state.

NameRequiredDescriptionDefault
mineNo
noteNoa call note's id (list_meetings)
statusNo
workspaceNoa team workspace's name or id (list_workspaces); default: the personal Caddie

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it declares the tool read-only, describes default scoping to the last 14 days, lists returned fields, maps status semantics, and explains workspace defaults. It does not mention pagination, sort order, or row limits, but the core behavioral profile is clear.

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

Conciseness3/5

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

The description is information-dense and front-loads the main purpose, but it is a single convoluted paragraph with heavy parentheticals and semicolons. It remains readable but could be structured more cleanly.

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?

No output schema exists, so the description appropriately explains returned row fields and state values. It covers the essential filter defaults and read-only nature, leaving only minor operational details such as pagination or sort order unstated.

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 only 50%, but the description compensates by explaining all four parameters: note, workspace, status, and mine. It adds meaning for status values beyond the enum and clarifies default scoping, though 'mine' gets only a brief gloss.

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 resource — a call's 'Get it done' follow-up rows — and clearly distinguishes the two modes: with a note vs. without a note across recent calls. It also explicitly differentiates itself from followup_act, which changes state.

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?

Explains the conditional behavior of using note vs. omitting note, gives default status behavior, and names followup_act as the alternative for mutations. An agent can select this tool and know when not to use it for state changes.

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

get_data_tableAInspect

A data table's columns (name, type, select options, which one is unique, which is the row title), its row count and 5 sample rows. Read this before adding or changing rows so values fit the columns.

NameRequiredDescriptionDefault
tableYesthe data table's id or name (list_data_tables)
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose the return payload in useful detail (column metadata, row count, exactly 5 sample rows), which is the key behavioral fact since there is no output schema. It never states this is a read-only operation or discusses permissions/cross-workspace visibility, so it falls short of fully self-describing.

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

Conciseness5/5

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

Two sentences: the return contents are front-loaded in a compact parenthetical, followed by the actionable precondition. No filler or restatement of the tool name.

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

Completeness5/5

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

No output schema exists, and the description compensates by specifying precisely what comes back, including the sample-row cap of 5. Parameters are fully documented in-schema, so nothing an agent needs to call this 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 both parameters (table, workspace) already document themselves including the list_workspaces/list_data_tables pointers, so baseline 3 applies. The description adds no additional meaning about parameter usage or format beyond what the schema provides.

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

Purpose4/5

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

The description names a specific resource (a data table) and enumerates exactly what is returned: columns with name/type/select options/unique flag/row-title flag, plus row count and 5 sample rows. That is materially more specific than the name alone. It stops short of naming sibling tools like query_rows or list_data_tables, so an agent must infer the boundary from the 'sample rows' framing.

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?

'Read this before adding or changing rows so values fit the columns' gives an explicit usage trigger tied to the write tools (add_rows, update_rows, upsert_rows). It does not state when not to use it, e.g. when to reach for query_rows to actually read full row data instead of the 5-row sample.

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

get_noteCInspect

Read one Caddie note in full (as plain text).

NameRequiredDescriptionDefault
idYes
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose two real traits: the operation is a read (non-destructive) and the return is plain text rather than rich formatting. It omits what happens when the id does not exist or the caller lacks access to the referenced workspace, and gives no sense of note size or truncation.

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

Conciseness4/5

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

One short sentence, no filler, and the plain-text return format is front-loaded alongside the core action. It is efficiently sized; the remaining gaps are omissions the other dimensions penalize rather than verbosity here.

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

Completeness2/5

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

A two-parameter retrieval tool with no annotations and no output schema needs the description to compensate for the undocumented id parameter and to explain error behavior and workspace scoping. The description only covers the action and output medium, leaving an agent to guess at id format and failure modes.

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

Parameters2/5

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

Schema coverage is 50%: the workspace parameter is well-documented in the schema, but id is a bare string with no description anywhere. The description says nothing about either parameter — not the id format, not whether workspace must match the workspace the note was found in.

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

Purpose4/5

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

States a specific verb and resource with scope: 'Read one Caddie note in full (as plain text)'. An agent can tell it retrieves a single note by id rather than listing or searching. It does not explicitly name siblings like search_notes or get_transcript, so sibling differentiation is only implied.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of search_notes as the way to obtain an id first, and no condition under which this tool should be preferred over search_notes or get_transcript. 'One ... in full' hints at single-item retrieval, but that is inference rather than stated guidance.

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

get_transcriptBInspect

Read a meeting note's transcript (who said what, with times from the start of the call), or a video note's (what's said, with times from the start of the video).

NameRequiredDescriptionDefault
idYes
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose the return shape (speaker attribution and offsets from the start of the call/video) plus a behavioral difference between the two note types. It omits pagination/truncation behavior, what happens when a note has no transcript, and the access requirements implied by the workspace parameter.

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?

A single sentence with no filler, and the core action is front-loaded. The parallel parenthetical construction ("...or a video note's (what's said...)") is slightly dense to parse but earns its space by distinguishing the two cases.

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

Completeness3/5

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

For a two-parameter read tool with no output schema or annotations, the description covers what is returned and the two note types, which is the essential part. It still leaves gaps around id semantics, empty-transcript behavior, and result size, so it is adequate rather than complete.

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 50%: the workspace parameter is documented in the schema, but `id` has no schema description. The description only indirectly implies `id` is a meeting-note or video-note id, without saying so explicitly or clarifying whether it accepts a note id versus a meeting id.

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

Purpose4/5

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

States a specific verb and resource ("Read ... transcript") and covers both variants it handles: meeting notes and video notes. It is clear what the tool returns, though it never names the sibling it competes with (search_transcripts) so an agent must infer that this one fetches a full transcript by id rather than searching.

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

Usage Guidelines3/5

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

Usage is only implied: you call it when you have a meeting or video note and want its transcript. There is no explicit statement of when to prefer this over search_transcripts or get_note, and no prerequisites (e.g. the note must exist and have a transcript) are given.

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

growth_libraryAInspect

Search Caddie's product and growth library: tips from 2026 episodes of Lenny's Podcast, Subversive, Superwall and Sub Club, and A/B test results from apps (abtest.design), on paywalls, pricing, trials, onboarding, retention, acquisition, creators, ads and product strategy. Each tip has who said it, the evidence (numbers, test results) and a link to the moment it was said. queries: up to 6 keyword searches at once (e.g. ["paywall annual plan anchoring", "trial length"]); show narrows to one source. Use it to advise on product and growth, and to audit a screen, flow or page (the audit_screen prompt says how); cite tips with their links.

NameRequiredDescriptionDefault
showNo
limitNotips per search, default 8, max 20
queriesYeskeyword searches, 1 to 6

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it does well: it discloses that results are curated tips with attribution, evidence (numbers, test results) and a link to the moment said. It does not state read-only status explicitly, rate limits, or pagination, but "Search" plus the citation requirement gives the agent a clear operational contract.

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 resource and sources, then query semantics, then usage. It is dense and runs long in the first two sentences, but almost every clause carries actionable information, so there is little waste.

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?

No output schema exists, and the description fills that gap by describing the shape of each tip (who said it, evidence, link) and instructing the agent to cite links. Missing only edge-case behavior such as empty results or how many tips come back per query beyond the schema's limit.

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 67%, and the description compensates by explaining that queries takes up to 6 keyword searches with worked examples ("paywall annual plan anchoring", "trial length") and that show narrows to a single source. The limit parameter is left to the schema, which already documents its default and max.

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

Purpose5/5

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

Opens with a specific verb and resource ("Search Caddie's product and growth library") and immediately names the exact sources covered (Lenny's Podcast, Subversive, Superwall, Sub Club, abtest.design). That source list and topic list distinguish it unambiguously from siblings like search_notes or search_transcripts, which search the user's own content.

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 concrete use cases: advising on product and growth, and auditing a screen, flow or page, pointing to the audit_screen prompt for the latter. It does not name sibling tools it should be preferred over (e.g. search_notes), but the domain-specific framing makes the choice clear in practice.

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

invite_memberAInspect

Invite someone to a team workspace by email (Caddie emails them a join link, good for 14 days). role: "member" (default) or "admin". Only a workspace's owner and admins can invite, from a confirmed email address, 50 a day. Only when the user asked for this person to be invited. From an agent's own turn inside Caddie it's refused: ask the user.

NameRequiredDescriptionDefault
roleNo
emailYes
workspaceYes

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so well: it discloses the join-link mechanism, the 14-day validity, the default role, the permission model, the confirmed-email requirement, and the 50-per-day rate limit. It also clearly states that calls from an agent's own turn are refused.

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?

The description is dense but well organized: purpose, role values, permissions and rate limit, then usage restriction and refusal behavior. Every sentence contributes operational information, and the main purpose is front-loaded.

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

Completeness4/5

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

For a no-annotation, no-output-schema mutation tool, this is nearly complete: it covers permissions, rate limits, invitation validity, role defaults, and refusal behavior. The main missing detail is the expected workspace identifier format and whether any success response or invitation status is returned.

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 0%, so the description must compensate. It explains the role parameter's enum values and default, and clarifies that invitation is by email to a workspace. It does not fully specify the expected format or source of the workspace parameter, which leaves a small gap.

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

Purpose5/5

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

The description states a specific verb and resource: invite someone to a team workspace by email. It also clarifies the invitation mechanism (Caddie emails a join link) and role options, so an agent can distinguish this from related tools like list_members or set_agent_access.

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?

It gives explicit usage constraints: only when the user asked for this person to be invited, only from a confirmed email address, and only by a workspace owner or admin. It also states a hard refusal condition for an agent's own turn and directs the agent to ask the user instead.

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

journal_readAInspect

Read the user's journal (always personal): one day (date, default today) or the days from-to (YYYY-MM-DD, up to 92 days), each with its text and one-line summary. Days with nothing written are left out.

NameRequiredDescriptionDefault
toNo
dateNo
fromNo

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose what an agent would otherwise have to guess: read-only semantics, the 92-day cap on ranges, that empty days are omitted from results, and that each day comes with text plus a one-line summary. It stops short of stating permission requirements or error behavior for malformed ranges.

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

Conciseness4/5

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

One sentence, no filler, and the most important facts (personal scope, read, two modes) come first. The deeply nested parentheses around the range parameters make it slightly dense to parse but nothing is wasted.

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

Completeness4/5

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

For a 3-param, no-output-schema read tool this covers nearly everything: defaults, format, range limit, return shape, and empty-day handling. The remaining gap is precedence when multiple date parameters are combined, which an agent would have to discover by experiment.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does: 'date' is documented with a default of today, 'from'/'to' are documented with YYYY-MM-DD format and a 92-day maximum. It does not say what happens if 'date' and 'from'/'to' are supplied together, which leaves one real ambiguity for a 3-param tool.

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

Purpose4/5

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

Opens with a specific verb and resource ('Read the user's journal') and immediately scopes it as 'always personal', which separates it from workspace-scoped siblings and from the writing counterpart journal_write. It never names a sibling explicitly, so the differentiation is implicit rather than spelled out.

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

Usage Guidelines3/5

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

The two modes (single day vs. date range) imply when each applies, and 'default today' gives a sane fallback, but the description never states when to prefer a range over a single day or when to use journal_write instead of reading. Usage is inferable but not guided.

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

journal_writeAInspect

Write in the user's journal for a day (default today). text is Markdown, as in create_note. mode append (default) adds it after what the day has; replace writes the day's whole text over. Only when the user asked you to write in their journal.

NameRequiredDescriptionDefault
dateNo
modeNo
textYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does the most important part: it discloses that mode=replace overwrites the day's entire text, which is the one piece of destructive behavior an agent must know before calling. It also gives the append-vs-replace default. It doesn't say whether a missing day is created implicitly (relevant to the 'default today' claim) or what the call returns, leaving a modest gap.

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

Conciseness5/5

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

Three short sentences, front-loaded with scope and gating, then the overwrite semantics. Every clause carries a fact an agent would otherwise have to guess; nothing is filler.

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

Completeness4/5

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

For a three-parameter write tool with no annotations and no output schema, the description supplies the decision gate, the default values, and the destructive-replace warning. It is nearly complete; only the implicit day creation and the date format remain unspecified.

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 0%, so the description must compensate, and it does: date is explained as defaulting to today, mode is given as append-by-default versus replace-overwrites, and text is Markdown matching create_note. The only shortfall is that the date string format is never specified.

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 — writing to the user's journal for a given day — and immediately delimits it against the sibling journal_read and against create_note, which is used only as a format reference. An agent can distinguish this from create_note or append_to_note 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?

"Only when the user asked you to write in their journal" is an explicit gating condition that excludes proactive writes, which is exactly the kind of guidance an agent needs. It stops short of naming the near-miss alternatives (create_note, append_to_note, journal_read) as the tools to prefer when it isn't a journal write.

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

linear_commentAInspect

Comment on a Linear issue as the user (their Linear connection; Markdown). issue: its key ("ENG-123"). Its subscribers are notified, so only what the user would say there.

NameRequiredDescriptionDefault
bodyYes
issueYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description does real work: it discloses the identity the comment is posted under (the user's Linear connection), the Markdown format, and the key side effect that subscribers are notified. It stops short of covering permissions, editability/deletability, 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.

Conciseness5/5

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

Three compact sentences, front-loaded with the action, then the parameter detail, then the behavioral constraint. No filler and nothing buried.

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

Completeness4/5

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

For a simple two-parameter write tool with no annotations and no output schema, the description covers action, identity, format, ID format, and the notification side effect. Only error/permission behavior is absent, which is a minor gap.

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 0%, so the description must compensate. It does clarify the `issue` parameter precisely ('its key ("ENG-123")') and hints at `body` being Markdown, but says nothing about body length limits, mentions, or whether the issue key must be from a specific team.

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

Purpose4/5

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

States a specific verb and resource ('Comment on a Linear issue') plus who the action is attributed to ('as the user') and the body format ('Markdown'). The action is intrinsically distinct from create_linear_issue and linear_update_issue, but the description never names those siblings to make the boundary explicit.

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

Usage Guidelines3/5

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

Usage is implied by 'only what the user would say there' — i.e. this is a public, attributable action — but there is no explicit when-to-use/when-not rule and no routing to alternatives such as linear_update_issue for editing the issue itself.

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

linear_cyclesAInspect

The user's Linear cycles (sprints): the previous, current and next one per team, with number, start and end dates and progress. team is a key like ONC2 (default: all teams).

NameRequiredDescriptionDefault
teamNo

TDQS

A4.6/5.0
Behavior4/5

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

Lacking annotations, the description must carry the burden. It clarifies the specific attributes returned (number, start and end dates, progress) which provides necessary context about the data the tool delivers, even if not explicitly stated in the schema.

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?

The definition is highly concise, packing all essential information—the resource, the scope, the parameter definition, and the default setting—into a single, efficient sentence.

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?

Given the simplicity of the schema (one optional string parameter) and the lack of annotations, the description is perfectly complete. It allows an agent to understand exactly what the tool returns and how to use the single input parameter.

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

Parameters5/5

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

While the schema defines 'team' as a string, the description provides vital semantic context by explaining the format of the key ('like ONC2') and the default behavior of the parameter when it is not provided ('default: all teams').

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

Purpose5/5

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

The description clearly identifies the resource ('Linear cycles (sprints)') and specifies the precise scope of the operation: retrieving the 'previous, current and next one per team.' This is highly distinct from other listing or querying tools.

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

Usage Guidelines4/5

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

It provides guidance on how to use the 'team' parameter, specifically noting that omitting it will default to retrieving cycles for 'all teams.' This helps the agent decide whether to include the parameter based on the user's intent.

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

linear_issuesAInspect

Read issues from the user's Linear through Caddie's Linear connection, newest activity first. All filters optional: text (in title or description), team (key like ONC2), assignee ("me" or a name or email), state (backlog, unstarted, started, completed, canceled, or a state name like "In Review"), cycle (current, next, previous). Each issue has its id (ONC2-123), title, state, assignee, priority, due date, cycle with dates, project and url.

NameRequiredDescriptionDefault
teamNo
textNo
cycleNo
limitNodefault 25, max 100
stateNo
assigneeNo

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does reasonably well: 'Read' signals a safe, non-mutating operation, ordering ('newest activity first') is disclosed, and the return shape is listed. It omits pagination/truncation behavior beyond the schema's limit field and any auth or connection-state caveats.

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 core verb and ordering, then filters, then return fields. No filler; each clause conveys usable information.

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

Completeness4/5

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

With no output schema, the description usefully enumerates returned fields (id, title, state, assignee, priority, due date, cycle, project, url), which is what an agent needs. The remaining gap is routing relative to sibling Linear tools, which is unaddressed.

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

Parameters5/5

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

Schema coverage is only 17% (only limit is documented), yet the description compensates thoroughly: it explains the team key format (ONC2), that assignee accepts 'me', a name, or an email, the five state values plus named states like 'In Review', and the cycle enum meaning. This adds real semantics beyond the schema.

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

Purpose4/5

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

States a specific verb and resource ('Read issues from the user's Linear') plus ordering ('newest activity first'). However, it never distinguishes itself from sibling tools like linear_query, linear_cycles, or create_linear_issue, leaving the agent to guess which Linear tool to pick.

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

Usage Guidelines3/5

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

Enumerates that all filters are optional and what each filter accepts, which implies the listing/searching use case. But there is no explicit when-to-use guidance or exclusion versus the nearby linear_query and linear_cycles tools, which is exactly where confusion is likely.

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

linear_queryAInspect

Run any read-only Linear GraphQL query through Caddie's Linear connection, for what linear_issues and linear_cycles don't cover (projects, comments, labels, a single issue by id: issue(id: "ONC2-123") { title description comments { nodes { body user { name } } } }). Mutations are refused.

NameRequiredDescriptionDefault
queryYes
variablesNo

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the load and does disclose the key behavioral trait that this is read-only and mutations are refused, plus that it authenticates through Caddie's Linear connection. It says nothing about rate limits, pagination, error behavior, or what shape results come back in — significant for an arbitrary GraphQL passthrough.

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

Conciseness4/5

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

One front-loaded sentence with the core purpose first, the scope boundary second, and the example parenthetical last. The inline example is long but earns its space by demonstrating the query format; nothing is redundant.

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

Completeness3/5

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

For a GraphQL passthrough with no output schema and no annotations, the description should say more about response shape and how `variables` binds to the query. It covers the query param and the read-only constraint well, but leaves the caller guessing on variables and return values.

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 0%, so the description must compensate. The embedded `issue(id: "ONC2-123") { title description comments { nodes { body user { name } } } }` example usefully conveys that `query` takes raw GraphQL syntax including nested selections. The `variables` parameter, a nested object, is never mentioned at all, leaving half the inputs undocumented.

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 — 'Run any read-only Linear GraphQL query' — and immediately scopes it against the sibling tools linear_issues and linear_cycles, naming the resource families (projects, comments, labels) those don't cover. An agent can distinguish this from the structured Linear siblings 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?

Provides a clear routing rule: use this for what linear_issues and linear_cycles don't cover, plus a concrete example (single issue by id). It also states the exclusion 'Mutations are refused.' It doesn't mention the other Linear siblings (linear_comment, linear_update_issue) that could be confused with this escape hatch, so not quite a 5.

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

linear_update_issueAInspect

Change a Linear issue through the user's Linear connection: state (a workflow state's name in its team, "In Progress", "Done"), assignee (a name or email in its team, "me", or "none" to unassign), priority ("urgent", "high", "normal", "low", "none" or 0 to 4), title. issue: its key ("ENG-123"). Only what you give changes. A state or assignee change notifies people, so from an agent's own turn inside Caddie it's refused: ask the user.

NameRequiredDescriptionDefault
issueYes
stateNo
titleNo
assigneeNo
priorityNo

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the whole burden, and it discloses three things an agent could not otherwise know: this is a partial/patch update, state and assignee changes trigger notifications, and such changes are refused during an agent's own turn. It omits permission requirements, reversibility, and the response shape, which keeps it below a 5.

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

Conciseness4/5

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

Front-loaded with the action and resource, and every clause carries information. The field list is a single comma-spliced run-on that is harder to scan than a separated list would be, which costs a point despite there being no filler.

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

Completeness4/5

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

For a 5-parameter mutation with no annotations and no output schema, the description covers field formats, patch semantics, side effects, and the refusal path. It does not say what the tool returns or how a failed/refused call surfaces, leaving a small gap.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate, and it does: state is a workflow state name scoped to its team with examples, assignee accepts a name/email in its team, "me", or "none" to unassign, priority accepts the named levels or 0-4, and issue is the key format ("ENG-123"). These are effectively enumeration values the schema lacks entirely.

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

Purpose5/5

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

Opens with a specific verb and resource ("Change a Linear issue through the user's Linear connection") and immediately enumerates the mutable fields, which cleanly separates it from siblings like create_linear_issue, linear_comment, and linear_issues. An agent can identify the tool's job without opening the schema.

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

Usage Guidelines4/5

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

States the update is partial ("Only what you give changes") and gives an explicit refusal condition with the required alternative: from an agent's own turn inside Caddie, state/assignee changes are refused, so "ask the user." That is genuine when-not guidance. It stops short of naming sibling tools for reading or bulk issue operations, so it is not a full routing statement.

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

list_agentsAInspect

The user's other agents in Caddie: what each is for, what it's working on, and whether its Mac is on now, to pick one for ask_agent. A list; when the user has more agents than fit in one read, { agents, partial: true, note } with some of them.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It helpfully discloses the partial-result shape { agents, partial: true, note } when there are too many agents, but it does not explicitly state read-only semantics, permission needs, or pagination behavior beyond the partial note.

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

Conciseness4/5

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

The definition is compact and front-loads the purpose before describing the partial-return behavior. The second sentence is somewhat fragmentary ('A list; when...'), but every piece of information earns its place.

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

Completeness4/5

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

For a zero-parameter, no-output-schema listing tool, the description gives enough context to call it and interpret the main response. It could be more complete by clarifying read-only behavior and the exact shape of the partial response, but the core is covered.

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

Parameters4/5

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

The tool has zero parameters, so parameter semantics are not a meaningful burden. The description does not need to explain any input parameters, and the baseline for a zero-parameter tool is 4.

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

Purpose4/5

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

The description clearly identifies the resource as the user's other Caddie agents and lists the key fields returned: purpose, current work, and Mac availability. It also states the intended use for choosing an agent for ask_agent, though it does not explicitly contrast with other agent-related siblings like agent_tasks or organize_agents.

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

Usage Guidelines4/5

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

It provides clear usage context: this tool helps pick an agent for ask_agent. It lacks explicit when-not conditions or comparisons to adjacent tools, but the intended selection scenario is stated directly.

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

list_collectionsBInspect

The collections (folders) notes are kept in, with how many notes each has.

NameRequiredDescriptionDefault
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the burden, and it does disclose one behavioral detail beyond the schema: results include a per-collection note count. However, it says nothing about scope (all collections in the workspace vs. a subset), ordering, pagination, or permissions, which an agent might want for a listing tool.

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

Conciseness4/5

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

One tight sentence with the resource and the payload detail front-loaded; nothing is wasted. It is a fragment rather than a full sentence, which slightly limits readability but not efficiency.

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

Completeness3/5

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

For a one-parameter, no-annotation, no-output-schema listing tool, the description is roughly sufficient: it names the resource, the domain mapping (folders), and the returned count field. Gaps remain around scope/ordering/empty results that an agent could otherwise infer only by trial.

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

Parameters3/5

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

Schema description coverage is 100% and the single optional parameter (workspace) is already richly documented in the schema, including how to find workspace ids via list_workspaces. The description adds no additional parameter semantics, so the baseline 3 applies.

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

Purpose4/5

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

The phrase identifies the exact resource (collections/folders) and even clarifies the domain concept by equating collections with folders, plus notes the returned metric (note counts). It reads as a noun phrase rather than 'List collections', but the name and content make the operation unambiguous and separate it from create_collection/rename_collection/delete_collection.

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

Usage Guidelines2/5

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

The description offers no when-to-use or when-not-to-use guidance, no mention of prerequisites, and no routing to alternatives (e.g., search_notes vs. this). The only usage glue lives in the schema's workspace description ('Use the same one you found the item in'), not in the tool description itself.

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

list_data_tablesBInspect

The user's data tables: structured, typed tables (an outreach registry, a CRM, a reading list) that you read and change row by row. Use these instead of a table inside a note or a spreadsheet whenever you keep records. Without workspace it lists tables everywhere the user is.

NameRequiredDescriptionDefault
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It discloses useful context such as structured typed tables, row-by-row reading/changing, and cross-workspace behavior, but it does not explicitly state that this specific call is read-only, nor does it cover ordering, pagination, permissions, or return shape.

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

Conciseness4/5

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

The description is short and reasonably front-loaded, moving from concept to usage to workspace scope. The first sentence mixes listing with row-by-row reading/changing, which slightly blurs the action, but there is little wasted text.

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

Completeness3/5

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

For a simple one-parameter list tool, the description covers purpose, examples, alternatives, and workspace scope. It is still incomplete because it does not clarify the list-vs-get distinction, return shape, pagination/order, or resolve the workspace omission inconsistency with the schema.

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

Parameters2/5

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

Schema coverage is 100%, so the schema already defines workspace. However, the description says that without workspace it lists tables everywhere the user is, while the schema says omitting workspace selects the user's personal one; that is a potentially misleading conflict about parameter behavior.

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

Purpose4/5

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

The description explains that these are the user's structured, typed data tables and says it lists tables, with concrete examples like an outreach registry and CRM. It distinguishes data tables from note tables and spreadsheets, but it does not explicitly distinguish this listing tool from siblings such as get_data_table or query_rows.

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

Usage Guidelines4/5

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

It gives a clear usage rule: use data tables instead of a table inside a note or a spreadsheet whenever keeping records. It also explains that omitting workspace lists tables everywhere, but it does not state when to use this tool versus get_data_table, query_rows, or create_data_table.

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

list_eventsAInspect

Calendar events from the user's connected Google calendars between two dates (YYYY-MM-DD; default today and the next 7 days). Each has an id, calendar_id and account_id for update_event and delete_event.

NameRequiredDescriptionDefault
toNo
fromNo

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description bears the full behavioral burden. It usefully discloses the data source (connected Google calendars), the default date window, and key returned identifiers for downstream update/delete calls, but it does not clarify pagination, timezone handling, whether all connected calendars are included, or other read behavior details.

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?

The description is two tight sentences with no filler. Purpose, date format, default range, and returned identifier fields are all front-loaded and useful.

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

Completeness4/5

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

For a simple two-parameter read tool with no output schema or annotations, the description covers the essential invocation context and key return identifiers. It could be more complete about the full event payload and timezone behavior, but the core information needed to select and call the tool is present.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate for both parameters. It does so by explaining that the two dates are YYYY-MM-DD formatted and that the default range is today through the next 7 days, though it omits explicit inclusivity and timezone semantics.

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

Purpose5/5

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

The description states a specific resource and scope: calendar events from the user's connected Google calendars between two dates. It also implicitly distinguishes this listing tool from mutation siblings by noting that returned ids/calendar_id/account_id are used for update_event and delete_event.

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

Usage Guidelines4/5

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

The description gives clear usage context by defining the date range and its default window, so an agent knows when this tool applies. It does not explicitly name when to choose list_events over siblings like list_meetings or find_free_time, but the calendar-event scope is clear.

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

list_habitsBInspect

The user's habits and routines (always personal): days, times, and for habits whether they're done on a date (default today) and the streak.

NameRequiredDescriptionDefault
dateNoYYYY-MM-DD

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that results are "always personal" (no workspace scoping) and that the date defaults to today, but it never states that the call is read-only, whether there is pagination or a result limit, or how routines are represented relative to habits.

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

Conciseness3/5

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

It is a single sentence with no padding, and the resource is front-loaded. But the clause structure ("and for habits whether they're done on a date...") is grammatically tangled and forces re-reading to parse habits-versus-routines behavior.

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

Completeness3/5

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

With no output schema and no annotations, the description must explain the return shape, and it does partially (days, times, done-on-date, streak). It leaves ambiguous whether routines are returned alongside habits, whether done-status applies to routines, and any ordering or volume expectations.

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

Parameters4/5

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

Schema coverage is already 100%, but the description adds real meaning: the date controls which day's completion status is reported and defaults to today if omitted. That is semantics the schema's bare "YYYY-MM-DD" string does not convey.

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

Purpose3/5

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

The description names the resource ("the user's habits and routines") and enumerates the returned fields, so the agent knows what data comes back. However, it never states the operation as a verb (list/retrieve) and does not distinguish this tool from the sibling list_routines, which appears to overlap on the routines half of the same data.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of when to prefer list_routines, and no pointer to create_habit/log_habit for writes. The agent must infer usage entirely from the tool name and the described payload.

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

list_meetingsAInspect

The user's recorded calls (meeting notes), newest first: each one's id, title, date and time, minutes, people, a one-line summary from the note, how many transcript lines it has and its follow-ups (open, done, dismissed). from/to: days (YYYY-MM-DD); person: someone on the call (by name, in its people or a speaker); query: words in the title, people or note (all of them). Read one with get_note or get_transcript, its follow-ups with followups_list. Secret notes show their title only.

NameRequiredDescriptionDefault
toNoto, inclusive, YYYY-MM-DD (the user's day)
fromNofrom, YYYY-MM-DD (the user's day)
limitNodefault 20, max 50
queryNo
personNo
workspaceNoa team workspace's name or id (list_workspaces); default: the personal Caddie

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does a decent job: it discloses ordering (newest first), the full per-item payload, and a non-obvious access rule — 'Secret notes show their title only' — which is exactly the kind of behavioral caveat annotations would otherwise supply. It omits auth/scope expectations and doesn't mention that results are capped (the limit max of 50 lives only in the schema).

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

Conciseness4/5

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

Front-loaded with the resource and return shape, then filter semantics, then next-step routing — a sensible order. The telegraphic style ('minutes, people, a one-line summary...') is dense but readable. Slightly over-packed into two long clauses, but no sentence is filler.

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

Completeness5/5

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

There is no output schema, and the description compensates by enumerating every returned field, so an agent knows the shape of results without guessing. With 6 optional params, no required inputs, and no annotations, the only thing an agent still needs is pagination behavior, which the schema's limit description covers.

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 67%, and the description fills the biggest gaps: 'query' and 'person' have no schema descriptions at all, yet the text defines query as matching words in title, people or note (all required) and person as someone in the call's people or a speaker list. from/to are restated with the 'user's day' nuance already in the schema. 'limit' and 'workspace' are left to the schema, which documents them adequately.

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

Purpose4/5

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

The description states the resource precisely — the user's recorded calls (meeting notes) — and enumerates exactly what each row contains (id, title, date/time, minutes, people, summary, transcript line count, follow-up states). It distinguishes itself from get_note, get_transcript and followups_list by naming them as follow-ups. It lacks an explicit verb like 'list', but the 'newest first' collection framing makes the operation unambiguous.

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

Usage Guidelines4/5

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

It explicitly routes the agent onward: 'Read one with get_note or get_transcript, its follow-ups with followups_list,' which tells the caller this tool is an index, not a content fetch. The filter clauses (from/to, person, query) imply when each filter applies. It does not contrast with search_notes or search_transcripts, which are the closest siblings, so there is no explicit when-not guidance.

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

list_membersAInspect

A team workspace's members (name, email, role: owner, admin or member) and, for its owner and admins, the invites waiting. workspace: its name or id (list_workspaces).

NameRequiredDescriptionDefault
workspaceYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the burden, and it does disclose a meaningful behavioral trait: invites are only returned for workspace owners and admins. It does not state that the call is read-only, nor anything about pagination or result size, which is a gap for an annotation-free tool.

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?

A single telegraphic sentence delivers the resource, its fields, the conditional invite visibility, and the parameter source with no wasted words. The terse, fragment-like phrasing is efficient, though slightly harder to parse than a full sentence.

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

Completeness4/5

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

For a one-parameter read tool with no output schema, the description covers the returned fields, the permission-conditional invite data, and how to supply the workspace identifier. Only the lack of read-only/pagination context keeps it from being fully complete.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does: 'workspace: its name or id' clarifies the accepted value form and points to list_workspaces as the source. Only one parameter exists, so this is close to complete coverage.

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

Purpose4/5

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

The description names the exact resource and its returned fields (name, email, role: owner/admin/member) plus the guest invites, which lets an agent distinguish it from list_workspaces and invite_member. It is a noun phrase rather than a verb-led statement, so the 'list' action is only implied by the tool name.

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

Usage Guidelines3/5

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

The parenthetical '(list_workspaces)' points to the sibling used to obtain a workspace name or id, giving implicit routing guidance. However, there is no explicit statement of when to call this versus list_workspaces or invite_member, and no prerequisites beyond the workspace argument.

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

list_routinesAInspect

The user's routines, as { routines, partial } (partial: some agents weren't read): each one's id, name, the agent that runs it, its schedule (days as "mon"…), whether it's on (off when paused or its task is done), when it last ran, when it runs next and the start of its instructions. Read only; create_routine proposes a new one.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it declares 'Read only', explains the { routines, partial } envelope, and defines 'partial' as 'some agents weren't read' — a non-obvious degradation state an agent must handle. It also clarifies that 'on' is false when paused OR when the task is done, which prevents a misread of the state field. It does not cover ordering or empty results, 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.

Conciseness4/5

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

Everything is front-loaded into a single sentence with the resource first and the read-only/alternative note last. The parenthetical glosses are justified because there is no output schema, though the run-on density makes it harder to scan than it needs to be.

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

Completeness4/5

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

For a zero-param, no-output-schema, no-annotation tool, describing the return shape and the 'partial' flag is the essential missing piece, and it is supplied. Only minor gaps remain (ordering of results, behavior when the user has no routines).

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. The description instead spends its space documenting the response fields, which is the relevant semantic detail for a no-arg call.

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

Purpose5/5

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

The description states the resource ('The user's routines') and enumerates exactly what each entry contains (id, name, running agent, schedule, on/off state, last/next run, instruction start), so an agent knows precisely what this returns. It also draws a boundary against the create path ('create_routine proposes a new one'), separating read from write.

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

Usage Guidelines4/5

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

It gives a clear read-only framing and names an alternative (create_routine) for the creation case, which is the main confusion risk. It does not address when to prefer this over sibling listing tools like list_agents or search_runs, so the routing guidance is clear but incomplete.

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

list_tasksAInspect

List tasks. filter: today | inbox (unscheduled To-dos, not Someday or Later this week) | upcoming | overdue | open (all not done) | done. In a team workspace each task says whose it is; mine: true keeps only the user's own and unassigned ones.

NameRequiredDescriptionDefault
mineNo
filterNo
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the burden; 'List' implies read-only, and it usefully discloses that in a team workspace each task reports whose it is. It says nothing about pagination, result limits, ordering, or return shape for a potentially large task set.

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 dense sentences with pipe-delimited enumerations and zero filler; the core action leads and the qualifiers follow. The parenthetical definitions are slightly compressed but each phrase earns its place.

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

Completeness3/5

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

For a 3-parameter, no-output-schema read tool the filtering semantics are well covered, but nothing is said about result volume, ordering, or pagination, which an agent needs to know when listing 'open' or 'done' tasks.

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 only 33%, but the description compensates well: every filter enum value is defined and 'mine: true' is explained as keeping own plus unassigned tasks. The workspace parameter is already documented in the schema, so the description adds real meaning beyond it.

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

Purpose4/5

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

Opens with a specific verb+resource ('List tasks') and enumerates exactly what can be listed via the filter values, which separates it cleanly from write siblings like create_task and update_task. It does not, however, differentiate itself from other listing tools such as followups_list or agent_tasks.

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

Usage Guidelines3/5

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

The filter definitions effectively explain how to scope a query (inbox = unscheduled To-dos, not Someday/Later this week; open = all not done), which implies usage. But there is no explicit statement of when to reach for this tool versus the other task-related listing siblings, and no note on defaults.

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

list_workspacesAInspect

The user's workspaces: their personal Caddie and each team workspace they're in (name, id, their role). Notes, tasks and collections tools take a workspace (a team's name or id); without it they use the personal one. Pick a team when the user names it or the work is the team's.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it does disclose the access scope ('each team workspace they're in' — not all workspaces) and the returned fields. It never states it is a read-only, side-effect-free operation or whether result size is bounded, which is the main remaining gap for a zero-annotation tool.

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

Conciseness5/5

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

Three short sentences: what it returns, how siblings consume the result, and the selection rule. Front-loaded with the resource definition and no repeated or filler text.

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

Completeness4/5

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

For a parameterless read tool with no output schema, the description supplies return shape, access scope, and the tie-in to sibling tools' `workspace` argument. Absent an explicit read-only statement and any hint about ordering or a default personal entry, it is nearly complete but not airtight.

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

Parameters4/5

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

The tool takes no parameters, so baseline is 4; the schema is empty rather than misleading. The description usefully explains the `workspace` argument that sibling tools accept, which aids correct orchestration even though it is not a parameter of this tool.

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

Purpose4/5

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

The description names the resource ('the user's workspaces') and enumerates exactly what each entry contains (name, id, their role), which is effectively a listing verb plus scope. It distinguishes itself from siblings like list_members or list_collections by making clear these are workspaces the user belongs to, though it never uses an explicit verb like 'list'.

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

Usage Guidelines4/5

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

It explicitly frames the downstream use case: notes/tasks/collections tools take a `workspace`, and without one they fall back to the personal workspace, plus a decision rule ('Pick a team when the user names it or the work is the team's'). That is clear contextual guidance, but it stops short of an explicit 'call this tool when X, not Y' trigger for the tool itself.

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

log_habitAInspect

Mark a habit done (or not done) on a date, default today. done marks every session of a habit with several times a day, and done:false clears the day; to log some of them, pass sessions (how many were done that day).

NameRequiredDescriptionDefault
idYes
dateNo
doneNodefault true
sessionsNoHow many of the day's sessions were done (0 to the number of times); overrides done

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well: it discloses that done=true affects every session of a multi-session habit, that done=false clears the day (an overwrite/erase behavior an agent must know about), and that sessions overrides done. It omits return shape and any permission/error behavior, 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.

Conciseness4/5

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

One dense sentence that front-loads the primary action and then covers the edge cases in order of likely need. It is slightly run-on but no clause is wasted.

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

Completeness3/5

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

For a 4-parameter mutation tool with no annotations and no output schema, the description covers the tricky semantics well but leaves gaps: what 'id' identifies, the expected date format, and whether logging is idempotent or overwrites prior entries. Adequate but not complete.

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 only 50% (id and date have no schema descriptions), so the description must compensate, and it does for the ambiguous parts: it establishes that date defaults to today and clarifies the interaction between done and sessions beyond the schema's own wording. The id parameter and the accepted date format are still undocumented.

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

Purpose4/5

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

States a specific verb and resource ('Mark a habit done') plus the core scoping (a date, defaulting to today). An agent can tell this is a per-day habit log rather than a habit definition change, though it never names update_habit/create_habit as the alternative, so sibling differentiation is left implicit.

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

Usage Guidelines3/5

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

It does explain the three usage modes clearly: done=true marks all sessions, done=false clears the day, and sessions logs a partial count. That is useful implied guidance, but there is no explicit statement of when to reach for update_habit or create_habit instead, nor any prerequisite context.

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

memory_readAInspect

What Caddie knows about the user ("What Caddie knows about you", a note they can edit): lines under "About you", "People", "How you like things done", "Keep an eye on". Your instructions already have it as it was when this turn started; read it again only after changing it.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It usefully notes that the note is user-editable and that instructions hold a turn-start snapshot, but it never explicitly states that this operation is read-only and has no side effects.

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

Conciseness3/5

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

The description is a single dense sentence with a redundant parenthetical repetition of the note name. It is front-loaded with the resource, but the quotation-heavy structure makes it slightly harder to scan than necessary.

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

Completeness4/5

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

For a zero-parameter read with no output schema, the description sufficiently explains what data is returned and the key caveat about stale turn-start memory. It could explicitly confirm read-only behavior, but the essential context is present.

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

Parameters4/5

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

The tool takes zero parameters, which is the baseline for a 4 when no parameter meaning needs explanation. The description appropriately focuses on what is returned rather than parameter behavior.

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

Purpose4/5

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

The description clearly identifies the resource: a user-editable memory note with specific sections ('About you', 'People', etc.). It implies retrieval but does not use an explicit verb like 'read' or name the sibling memory_update, so it is clear but not maximally sharp.

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

Usage Guidelines4/5

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

It gives strong when/when-not guidance: the memory is already present at turn start, so re-read only after changing it. This routes usage effectively, though it does not explicitly name memory_update as the alternative.

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

memory_updateAInspect

Change what Caddie knows about the user, line by line, all or nothing. Save facts that will still matter in a month for any task: who they are, the people they work with and how each likes to hear from them, how they like things done, what to keep an eye on. Write facts, not orders ("Sainath wants Mixpanel numbers in Slack", not "Always send…"). Don't save task progress, one-off details, what you did today (that's in search_runs) or how to do a job (that's a skill). One fact a line, 300 characters at most; 4000 characters in all: when it's full, merge or remove lines in the same call. A line you change or remove is matched by a part of it.

NameRequiredDescriptionDefault
operationsYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full load and does well: it discloses atomicity ('all or nothing'), hard size limits (300 chars/line, 4000 total), the forced merge/remove behavior when full, and prefix-matching semantics for edits and removals. It stops short of stating what the response looks like or whether removed facts are recoverable.

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

Conciseness4/5

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

Front-loads the purpose and atomicity, then usage rules, then hard constraints, then examples — well ordered. It is wordy in places (the parenthetical 'Always send…' contrast is helpful, but the guidance portion is dense prose that could be tightened).

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?

No output schema and no annotations, so the description must define the whole contract for a single nested-array operation parameter, and it covers ops, limits, matching, and exclusions. The unmentioned `section` field and the absence of any statement about the return value are the remaining gaps.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate and largely does: it explains add/patch/remove intent, one-fact-per-line, line length limits, and that an edited/removed line is matched by a fragment ('A line you change or remove is matched by a part of it'), which is the key semantic for the `old` field. It never mentions the `section` property or what values it accepts, leaving one gap.

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 ('Change what Caddie knows about the user') plus the critical scope detail 'line by line, all or nothing' (atomic mutation). This clearly separates it from the read-side sibling memory_read without either schema being opened.

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

Usage Guidelines5/5

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

Explicitly defines when to use ('facts that will still matter in a month') and when not to ('Don't save task progress, one-off details, what you did today'), naming the alternatives for each: search_runs for activity, a skill for procedures. Routing guidance is unambiguous.

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

move_noteAInspect

Move a note into a collection (it becomes the note's main one; "Inbox" takes it out of all collections), and/or to another workspace with to_workspace (its tasks go with it; everyone in a team workspace sees it there, so from an agent's own turn inside Caddie that's refused).

NameRequiredDescriptionDefault
idYes
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.
collectionNo
to_workspaceNoa team workspace's name or id, or "personal"

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does substantial work: it discloses the side effect that the target collection becomes the note's main one, the special destructive-ish semantics of "Inbox", that tasks travel with the note, that team workspaces expose it to everyone, and a concrete refusal condition for agent-initiated cross-workspace moves. It does not cover failure modes (non-existent collection/workspace) or what happens when both collection and to_workspace are supplied.

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?

It is a single front-loaded sentence that leads with the primary action before qualifications. The nested parentheticals make it dense to parse, but nearly every clause conveys a non-obvious rule an agent needs, so there is little wasted text.

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

Completeness4/5

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

For a 4-parameter mutation tool with no annotations and no output schema, the definition covers the important behavioral consequences and one hard constraint. Missing are return/confirmation behavior and error conditions, which an agent would likely need before firing the call blindly.

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 50%: workspace and to_workspace are documented in the schema, while id and collection are not. The description compensates for the collection gap by defining the "Inbox" sentinel and the main-collection effect, but adds nothing about `id` and does not clarify interaction between collection and to_workspace when both are set. Adequate, with a clear residual gap.

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

Purpose4/5

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

The description names a specific verb and resource ("Move a note") and spells out the two independent dimensions it operates on: collection membership and workspace. It even characterizes the special "Inbox" value. It stops short of explicitly contrasting with siblings like update_note or create_collection, but the operation is unmistakable.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: there is no "use this when..." or explicit alternative tool named. It does provide useful in-context rules — use "Inbox" to clear collections, and pass the same workspace you found the item in — plus a disclosed refusal case, which lifts it above bare implication but leaves the agent to infer when to prefer this over update_note.

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

note_from_templateAInspect

Make a new note from one of the user's templates (notes marked "Use as a template"), on their Mac, as ⌘K › New from template does: a copy to fill in. Returns the new note's id.

NameRequiredDescriptionDefault
titleNoThe new note's title. Default: the template's.
templateYesThe template's name (its note's title, or a part only one template has).
workspaceNoWorkspace name or id (list_workspaces). Default: the personal one. It must be the one open in Caddie on the Mac, where the note is made.
collectionNoA collection to put it in (its name). Default: the template's own.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that the note is created as a local copy on the user's Mac, that the operation mirrors the native 'New from template' flow, and that it returns the new note's id. It stops short of covering failure modes such as an ambiguous template name or a workspace not open in Caddie, which matter for a dependent-on-local-client operation.

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?

A single tightly packed sentence with the action front-loaded, followed by the qualifying definition and the return value. Nothing is redundant and every clause adds information.

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

Completeness4/5

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

For a 4-parameter, no-annotation, no-output-schema tool, it covers the essentials: template semantics, the Mac/local-client dependency, and the return value. What's missing is guidance on cross-parameter constraints (workspace must match the open Caddie workspace) and error behavior, which the schema only partially implies.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning the schema lacks: it defines what constitutes a valid template ('notes marked "Use as a template"') and frames the output as a copy to fill in, which clarifies the relationship between the new note and its source.

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 ('Make a new note from one of the user's templates') and disambiguates from plain note creation by defining what a template is ('notes marked "Use as a template"') and what the result is ('a copy to fill in'). The UI analogue (⌘K › New from template) makes the behavior concrete and separates it from siblings like create_note or create_video_note.

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

Usage Guidelines4/5

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

The description makes the intended use case clear (instantiate a template rather than author a blank note) but never explicitly says when to prefer create_note instead, nor what happens if multiple templates match. Clear context, no stated exclusions.

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

notify_userAInspect

Show the user a short line in Caddie's notch on their Mac (and the Planner's thread), as you (your agent's name and face when you're one of their Caddie agents). For something they should see now, not for every update: at most 10 an hour across all callers. buttons: up to 2 short answers they can tap; when you're running in one of their Caddie agent tasks, the tapped label comes back to that task as their reply (a typed reply too). Otherwise the tap just shows. Needs Caddie open on the Mac.

NameRequiredDescriptionDefault
refNoOptional: a note or task id this is about (a note gets an Open button).
textYesWhat to say, at most 300 characters. Plain, specific, one thought.
buttonsNoUp to 2 answers to tap, each at most 30 characters ("Ship it", "Wait").

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the 10/hour rate limit, the macOS/Caddie-open requirement, and non-obvious callback behavior (a tapped button returns to the running agent task as the user's reply, otherwise the tap is inert). It doesn't say what happens when the rate limit is hit or what a call returns, so not a 5.

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

Conciseness4/5

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

It leads with the action, then constraints, then button semantics, so it is front-loaded and every clause carries information. The nested parentheticals ('as you (your agent's name and face when you're one of their Caddie agents)') make it denser than it needs to be, costing the top score.

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

Completeness4/5

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

For a three-parameter, no-output-schema notification tool with no annotations, the description covers purpose, rate limit, platform prerequisite, and button reply behavior — enough to call it correctly. The main omission is failure/return behavior (what happens when rate-limited or when Caddie is closed).

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents all three parameters and the baseline is 3. The description adds real semantic value for 'buttons' by explaining what tapping does downstream (label becomes the task reply) and what happens when not in an agent task, which is meaning the schema does not convey.

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

Purpose4/5

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

The description gives a specific verb and surface: 'Show the user a short line in Caddie's notch on their Mac (and the Planner's thread).' That's concrete and distinguishable from messaging siblings like slack_send or phone_ask. It doesn't explicitly name those alternatives, which keeps it from a 5, but the core action is unmistakable.

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

Usage Guidelines4/5

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

'For something they should see now, not for every update' is an explicit when-to-use and when-not-to-use rule, reinforced by a hard rate limit (at most 10 an hour across all callers) and the prerequisite 'Needs Caddie open on the Mac.' It stops short of routing the agent to specific alternatives (slack_send, agent_reply, phone_ask), so 4 rather than 5.

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

organize_agentsAInspect

Organise the user's agents on Caddie's Agents page: sections (groups like "Creators" or "Growth") and names. action: "list_sections" (each section with its agents, and No section); "create_section" (section: its name); "rename_section" (section, name: the new name); "delete_section" (section; its agents go to No section); "move" (agents: names or ids, section: where to, a new name makes it, "none" for No section); "rename_agent" (agent, name). Changes show on the user's Mac and phone at once. Use this instead of telling the user to drag agents around.

NameRequiredDescriptionDefault
nameNo
agentNo
actionYes
agentsNo
sectionNo

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose key side effects: deletion sends agents to "No section" rather than destroying them, moving to a non-existent section name creates it, and changes propagate to Mac and phone immediately. It omits permission requirements, reversibility/undo of delete_section, and idempotency of repeated moves.

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?

Purpose is front-loaded in the first clause, followed by a compact semicolon-delimited action table and a closing usage rule; almost no filler. The paragraph is dense and the action list could be broken into lines, but every clause carries information.

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

Completeness4/5

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

For a six-action, five-parameter tool with no annotations and no output schema, the description covers all six actions, their required inputs, and their main side effects, plus what list_sections returns. Remaining gaps are error behavior and the exact shape of returned section/agent objects beyond the brief list_sections note.

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 0%, so the description must compensate and largely does: it maps each parameter to its action (section = the group name, name = new name, agents = names or ids, section = where to, "none" for No section). The distinction between the singular `agent` and the plural `agents` parameters is never explained, and `name`/`section` are overloaded across actions, leaving some ambiguity.

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

Purpose4/5

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

States a specific verb and resource ("Organise the user's agents on Caddie's Agents page: sections ... and names") and immediately enumerates the six supported operations, so the agent knows exactly what domain it operates on. It does not, however, distinguish the embedded rename_agent action from the sibling update_agent, nor list_sections from list_agents, which leaves real ambiguity against the sibling set.

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

Usage Guidelines4/5

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

Explicitly instructs "Use this instead of telling the user to drag agents around," which is a concrete when-to-use rule, and the per-action breakdown tells the agent which action to pick for which intent. It stops short of stating when NOT to use it, e.g. when update_agent or archive_agent is the right sibling.

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

pause_routineAInspect

Pause one of the user's routines (paused: true) or turn it back on (paused: false), as its switch on the Agents page does. Turned on, it next runs at its next slot from now. routine: its id or name (list_routines).

NameRequiredDescriptionDefault
agentNo
pausedYes
routineYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does disclose real behavior: the toggle's meaning in each direction and the scheduling consequence of re-enabling ('it next runs at its next slot from now'). It omits permission requirements and what happens to an in-flight run, but the core state semantics are covered.

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

Conciseness5/5

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

Two tight sentences with the action front-loaded, the boolean semantics immediately after, and the identifier hint at the end. No filler; the Agents-page analogy does real work compactly.

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

Completeness3/5

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

No output schema and no annotations mean the description is the only behavioral source, and it covers the toggle well. However, the unexplained `agent` parameter leaves ambiguity about whether routines are scoped per agent and how name lookups resolve – a real gap for a 3-parameter mutating tool.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate. It adequately explains `routine` (id or name, pointing to list_routines) and `paused` (true/false meaning), but leaves the `agent` parameter entirely unaddressed, so the third parameter remains undocumented anywhere.

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

Purpose4/5

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

States a specific verb and resource ('Pause one of the user's routines') and clarifies it is a bidirectional toggle via the paused flag. It is clearly distinguishable from delete_routine/list_routines by implication, though no sibling is named explicitly as an alternative.

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

Usage Guidelines4/5

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

Gives clear context for either direction of use (paused: true vs false) and anchors the semantics to a familiar UI control ('as its switch on the Agents page does'). It does not state exclusions or contrast with update_routine, which would be the natural alternative for non-toggle edits.

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

phone_askAInspect

Ask the user a short question on their iPhone, with up to 4 answers to tap (default Yes / No). For when you need their OK or a choice and they may be away from the Mac. It waits up to 45 s by default (wait_seconds, up to 50); if they answer later, the answer comes back to this task as a message (give from; one of Caddie's own agents' turns is known without it), or phone_result has it.

NameRequiredDescriptionDefault
whyNooptional: the question usually says it
fromNoyour own agent:task:key from your instructions, so the answer comes back to this task
optionsNo
questionYes
wait_secondsNo

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the load and does well: it discloses the default 45 s wait (configurable up to 50), and what happens if the user answers late — the reply returns as a message to this task or via phone_result. It omits failure/timeout behavior and any permission assumptions, 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.

Conciseness4/5

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

Purpose and trigger are front-loaded, and every clause adds information (wait bounds, async fallback, routing). The heavy parenthetical nesting makes it slightly hard to parse but nothing is wasted.

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

Completeness4/5

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

For a 5-param tool with no output schema and no annotations, the definition covers invocation, timing, and answer retrieval well enough to call correctly. Only edge cases like timeout-with-no-answer handling are unaddressed.

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?

At 40% schema coverage the description must compensate, and it does for the key params: wait_seconds default and 50 s ceiling, the role of from for routing answers back to the task, and options as up-to-four tap answers with a Yes/No default. Only 'why' is left to the schema's own note.

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 ('Ask the user a short question on their iPhone') plus the answer mechanism (up to 4 tappable options, default Yes/No). It explicitly distinguishes itself from the sibling phone_result by naming it as where a late answer can be retrieved.

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 trigger: 'when you need their OK or a choice and they may be away from the Mac,' which tells the agent this is for remote user confirmation. It does not, however, contrast against neighbors like notify_user or ask_agent, leaving the agent to infer which channel to pick.

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

phone_locationAInspect

Ask the user's iPhone where they are (they tap Share on the phone; Caddie's iPhone app has to be open or opened). Only when where they are changes what you do (travel time, a nearby place, the right time zone). It waits up to 45 s by default (wait_seconds, up to 50); if they answer later, the answer comes back to this task as a message (give from), or phone_result has it.

NameRequiredDescriptionDefault
whyYesone line they see on the phone
fromNoyour own agent:task:key from your instructions, so the answer comes back to this task
wait_secondsNo

TDQS

A4.2/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so: it discloses the human-in-the-loop requirement (user must tap Share and the iPhone app must be open), the default 45 s wait with a 50 s cap, and the asynchronous fallback path via 'from' or phone_result. An agent knows exactly what the failure and latency profile looks like before calling.

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

Conciseness4/5

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

Front-loaded with the core action and the user-interaction caveat, then usage condition, then timing/fallback. Sentences are dense and slightly run-on but each carries distinct information with no filler.

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

Completeness4/5

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

Given no output schema and no annotations, the description covers invocation preconditions, timing behavior, and both sync and async return paths. It does not say what the location answer actually contains (coordinates, address, accuracy), a minor remaining gap.

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

Parameters4/5

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

Schema coverage is 67%, and the description adds real meaning beyond the schema: wait_seconds' default of 45 and maximum of 50, and the role of 'from' in routing a late answer back to the task. 'why' is left entirely to the schema, which is acceptable.

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

Purpose4/5

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

The description gives a specific verb and resource: 'Ask the user's iPhone where they are', and the parenthetical clarifies the user interaction required (tap Share, app open). It is clearly distinct from phone_ask and phone_photo by naming location as the payload, though it does not explicitly contrast itself with those siblings.

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

Usage Guidelines4/5

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

'Only when where they are changes what you do (travel time, a nearby place, the right time zone)' gives a clear use condition and even examples of qualifying situations. It lacks an explicit comparison to alternatives such as phone_ask, preventing a 5.

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

phone_photoAInspect

Ask the user to take a photo with their iPhone (a whiteboard, a receipt, a document). Returns a link to the picture once they've taken it. It waits up to 45 s by default (wait_seconds, up to 50); if they answer later, the answer comes back to this task as a message (give from), or phone_result has it.

NameRequiredDescriptionDefault
whyYes
fromNoyour own agent:task:key from your instructions, so the answer comes back to this task
wait_secondsNo

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose the key traits: it blocks, default 45 s, capped at 50 s, then degrades to a message back to the task. It does not mention permissions or failure behavior if the user declines, 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.

Conciseness4/5

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

Three sentences, front-loaded with the core action and capped by the async fallback. Dense but every clause carries information; no filler.

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

Completeness4/5

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

No output schema and no annotations, so the description must explain the return value, and it does ('Returns a link to the picture'). Combined with the timeout and fallback explanation, an agent has enough to call it correctly; only the 'why' parameter remains unexplained.

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 33%. The description adds real meaning for two of three params ('give from' ties the callback to the task; 'wait_seconds, up to 50' gives the cap and default). The required 'why' parameter is never explained, leaving a gap that neither schema nor description fills.

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 ('Ask the user to take a photo with their iPhone') plus the concrete use cases (whiteboard, receipt, document). It is clearly distinguishable from phone_ask and phone_result, which it names directly.

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?

Tells the agent when to reach for this tool and points at the async fallback path ('give from', or phone_result) when the user answers later. It stops short of explicit when-not conditions, but the scenario is unambiguous.

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

phone_resultCInspect

The answer to a phone_location, phone_ask or phone_photo that was still waiting.

NameRequiredDescriptionDefault
requestYes

TDQS

C2.2/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It hints that the tool returns an answer for a pending request, but says nothing about whether it blocks, errors if not ready, requires authentication, rate limits, or what the return value looks like. Only minimal behavioral context is provided.

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

Conciseness3/5

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

The description is a single concise sentence fragment, so it wastes no words. However, its structure is weak: it is not a complete sentence with a verb, and it front-loads a noun phrase rather than clearly stating the tool's action, making it less immediately parseable.

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

Completeness2/5

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

For a tool with a required 'request' parameter, no output schema, and no annotations, the description is far too sparse. It does not explain the request identifier, how to obtain it, what the answer format is, or how to handle pending versus completed states, leaving critical context missing for correct invocation.

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

Parameters1/5

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

The single parameter 'request' has 0% schema description coverage, and the description does not mention it at all. It gives no indication of what the request value should be, its expected format, or where to obtain it, so the description fails to compensate for the missing schema documentation.

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

Purpose3/5

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

The description identifies the tool as returning 'the answer' to specific sibling tools (phone_location, phone_ask, phone_photo) that were 'still waiting,' which gives a vague sense of purpose and some sibling differentiation. However, it lacks a clear action verb and does not explicitly state that this is a retrieval or polling tool for asynchronous phone requests.

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

Usage Guidelines2/5

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

The mention of 'still waiting' implies the tool is used after a phone_* call returns a pending state, but there is no explicit instruction like 'use this when X' or 'do not use this for Y.' No alternatives or exclusions are named, leaving usage entirely inferential.

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

pin_noteCInspect

Pin a note to Caddie's sidebar (it goes last among the pinned).

NameRequiredDescriptionDefault
idYes
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. It does add one useful trait — the pinned position is appended last — but says nothing about idempotency on re-pin, permission/workspace requirements, or the effect on other pinned notes.

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?

A single short sentence with the action front-loaded and the ordering behavior tucked into a parenthetical. No wasted words, though it is arguably too terse for a mutation tool.

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

Completeness2/5

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

With no annotations and no output schema, the description should cover success/failure semantics, already-pinned behavior, and workspace defaults. Only the sidebar placement is covered, leaving an agent unable to predict outcomes when calling it.

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

Parameters2/5

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

Schema coverage is 50%: the workspace parameter is well documented in the schema itself, but id has no description anywhere. The tool description adds nothing about which id is expected (e.g. from search_notes/get_note) or how workspace scoping affects resolution.

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

Purpose4/5

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

Specific verb + resource + destination: 'Pin a note to Caddie's sidebar'. It also discloses the resulting ordering ('goes last among the pinned'), which is a real behavioral detail. It doesn't explicitly distinguish itself from unpin_note, though the names make that pair self-evident.

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

Usage Guidelines2/5

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

There is no statement of when to pin versus other organizational actions (collections, move_note), no prerequisite that the note must exist, and no guidance on what happens if the note is already pinned. Usage is only implied by the verb.

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

plan_dayAInspect

Run Plan my day in Caddie on the user's Mac: the Planner agent proposes a plan for the day in its chat and asks before changing anything (without a Planner that can run there, today gets Caddie's quick plan in the Planner's thread). Says where the plan is.

NameRequiredDescriptionDefault
dateNoThe day, YYYY-MM-DD, today or later. Default: today.

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description carries the disclosure burden and does a fair job: it states the proposal-then-ask-before-changing-anything approval behavior and describes the degraded path when no Planner is available. It stops short of saying what the plan does once approved or whether it is reversible.

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

Conciseness3/5

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

Front-loaded with the action, but the sentence is long and the trailing 'Says where the plan is' is vague throat-clearing rather than a useful statement about the return.

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

Completeness3/5

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

A one-parameter tool with full schema coverage, so it is nearly complete, but with no output schema the 'Says where the plan is' phrase leaves the response shape undefined, and the Caddie/Planner/Mac terminology assumes product knowledge the agent may not have.

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% for the single 'date' parameter (format, today-or-later, default today), so the schema does the work. The description never mentions the date parameter, adding nothing beyond the structured field.

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

Purpose4/5

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

Names a specific action — running the 'Plan my day' Planner flow — and states the outcome (a proposed plan in the Planner's chat). It implicitly separates itself from generic agent tools like ask_agent by naming the Planner agent and the quick-plan fallback, though it never contrasts with a sibling explicitly.

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

Usage Guidelines3/5

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

Usage context is only implied ('proposes a plan for the day'), and the parenthetical describes a runtime fallback rather than when an agent should pick this tool over ask_agent or agent_tasks. No exclusions or prerequisites are given.

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

query_rowsAInspect

Rows of a data table as JSON objects keyed by column name, plus each row's id (for update_rows and delete_rows). where: { "": value } matches exactly (case-insensitive; select columns by option name; a multi-select contains it), or an operator: {"not": v}, {"in": [a, b]}, {"contains": "text"}, {"empty": true}, {"gt"|"gte"|"lt"|"lte": n or "YYYY-MM-DD"}. All conditions must match. sort: [{ column, desc }]. Pages: pass the cursor you got back for the next page (null: no more).

NameRequiredDescriptionDefault
sortNo
limitNodefault 50, max 500
tableYesthe data table's id or name (list_data_tables)
whereNo
cursorNo
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does substantial work: it discloses exact-match semantics (case-insensitive), multi-select containment, AND-joining of conditions, the operator vocabulary, and that a null cursor terminates pagination. What it omits is the safety/access profile — nothing states this is read-only, whether workspace permissions gate results, or how errors surface.

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?

Information-dense with essentially no filler: return shape first, then filtering, then sorting, then pagination — a sensible order for an agent building a call. The tradeoff is that it reads as telegraphic fragments ("or an operator: {...}"), which costs a little parseability, but no sentence is wasted.

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

Completeness4/5

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

For a 6-parameter tool with a nested `where` object and no output schema, the description covers return format, filter grammar, sort, and pagination — the things an agent most needs. Remaining gaps are default ordering when sort is omitted, whether limit applies per page, and permission/workspace failure behavior.

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

Parameters5/5

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

Schema coverage is only 50% and the `where` parameter has no schema description at all, so the description compensates by fully specifying the filter grammar: `{ "<column>": value }` plus the operator forms not/in/contains/empty/gt|gte|lt|lte with value types including "YYYY-MM-DD". It also documents sort's `[{ column, desc }]` shape and the cursor round-trip, leaving only limit and workspace to the schema (which already covers them).

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

Purpose4/5

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

The description leads with the return shape ("Rows of a data table as JSON objects keyed by column name"), which makes the read-and-return intent of query_rows unambiguous and names update_rows/delete_rows as the consumers of the returned id. It stops short of explicitly contrasting with get_data_table or list_data_tables (the latter only appears inside the schema), so sibling differentiation is partial rather than explicit.

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

Usage Guidelines3/5

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

Usage is implied through mechanics: "pass the cursor you got back for the next page (null: no more)" tells the agent how to paginate, and the id reference points at update_rows/delete_rows as follow-ups. There is no explicit statement of when to use this versus get_data_table or upsert_rows, and no prerequisites or exclusions are given.

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

rename_collectionCInspect

Rename a collection; its notes go with it.

NameRequiredDescriptionDefault
toYes
nameYes
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations exist, so the description carries the full behavioral burden. It usefully discloses that notes move with the collection (contents preserved), but says nothing about uniqueness requirements, what happens to references/shares, whether the operation is reversible, or what an error looks like.

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?

A single compact sentence with the core action front-loaded and no filler. It is efficient, though its brevity contributes to the documentation gaps noted elsewhere.

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

Completeness2/5

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

A mutation tool with no annotations, no output schema, and ambiguous required parameters ('name' vs 'to') at 33% schema coverage. The description does not do enough to make the call unambiguous or to describe the result.

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

Parameters2/5

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

Schema coverage is only 33% — only 'workspace' is documented in the schema. The two required parameters 'name' and 'to' are never explained; the agent must infer that 'name' is the current name and 'to' the new one. The description does not compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb and resource ('Rename a collection'), which cleanly separates it from create_collection, delete_collection, and list_collections. The trailing clause adds that contained notes are preserved, but no explicit sibling comparison is offered.

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

Usage Guidelines2/5

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

No guidance on when to use this versus create_collection (which could also 'change' a name by recreating) or when renaming is appropriate. No prerequisites, permissions, or failure conditions are mentioned.

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

report_errorAInspect

Send an error report to Harsha, who builds Caddie, when a Caddie tool or the Caddie app fails in a way that looks like a bug (not for wrong input you can fix yourself). message: the error text; where: which tool or screen; context: what you were doing (no note contents, keys or personal data); stack if you have one. Limited per day.

NameRequiredDescriptionDefault
stackNo
whereNo
contextNo
messageYes
app_versionNo

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does disclose meaningful traits: a rate limit ('Limited per day'), a privacy constraint ('no note contents, keys or personal data'), and the recipient. It does not say what happens after submission (confirmation, whether a human is notified), which keeps it from a 5.

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

Conciseness4/5

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

Purpose is front-loaded and the guidance is dense but earns its space. The semicolon-chained parameter gloss at the end is a bit packed, but nothing is redundant.

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?

No output schema and no annotations, so the description must stand alone; it covers purpose, exclusions, privacy, rate limiting, and most params. The gaps are the undocumented app_version parameter and the absence of any hint about what the call returns or whether it can fail.

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 0%, so the description must explain the parameters, and it does for four of five: message, where, context, and stack, including a privacy restriction on context. The fifth parameter, app_version, is never mentioned and the required marker on message is not restated.

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 ('Send an error report to Harsha, who builds Caddie') plus the triggering condition ('when a Caddie tool or the Caddie app fails'). No sibling tool does anything similar, so an agent can identify it immediately.

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

Usage Guidelines5/5

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

Gives an explicit when ('tool or app fails in a way that looks like a bug') and an explicit when-not ('not for wrong input you can fix yourself'). That exclusion is exactly the discrimination an agent needs to avoid filing fixable-input mistakes as bugs.

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

restore_noteAInspect

Bring back a deleted note (kept 30 days after it's deleted, in Caddie or by delete_note). Without id it lists the recently deleted notes (id, title, when). Its tasks aren't linked to it again.

NameRequiredDescriptionDefault
idNo
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well: it discloses the 30-day retention limit and the important side effect that the note's tasks are not re-linked after restore. It omits error behavior for expired ids and whether the note returns to its original collection, so it is strong but not exhaustive.

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

Conciseness4/5

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

Three short sentences with the core action front-loaded and no filler. The parenthetical about retention is slightly compressed but still readable; nothing can be cut without losing information.

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

Completeness4/5

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

For a two-parameter tool with no annotations and no output schema, the description covers the action, the retention window, the alternate list mode, and the task-relinking caveat. Remaining gaps (failure on expired notes, restore destination) are minor but real.

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 50% and the undocumented parameter is `id`; the description compensates by explaining its optionality and the entirely different behavior when it is absent, plus what the list mode returns (id, title, when). The `workspace` parameter is already richly documented in the schema.

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

Purpose5/5

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

States a specific verb+resource ('Bring back a deleted note') and goes further by naming the two modes: restore by id, or list recently deleted notes when no id is given. It also names delete_note as the counterpart, so an agent can place it in the lifecycle without inspecting siblings.

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

Usage Guidelines4/5

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

Gives a clear usage context (after a deletion, within the 30-day window, in the same Caddie) and implies the list-mode fallback when id is omitted. It does not explicitly say when to prefer get_note/search_notes instead of restore, but the trigger condition is unambiguous.

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

search_notesAInspect

Search Caddie notes by words in their title or text, imported notes included. Returns ids, titles and a snippet. An empty query lists the most recent notes.

NameRequiredDescriptionDefault
limitNodefault 10, max 50
queryNo
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose the return fields and the empty-query behavior, but says nothing about result ordering (relevance vs recency), snippet truncation, permission/workspace scoping, or that the operation is strictly read-only.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core purpose, then return shape, then the edge-case behavior. 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.

Completeness4/5

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 returned fields, and the three parameters are mostly covered between schema and description. Missing only ordering/limit interaction and how it relates to get_note for a fully self-sufficient definition.

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 67%, and the description compensates for the undocumented 'query' parameter by explaining that matching is on words in the title or text and that an empty query means 'recent notes'. The workspace and limit params already carry schema descriptions, so the description only needs to reinforce them.

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

Purpose4/5

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

The description names a specific verb and resource ('Search Caddie notes'), states the match surface (title or text, imported notes included), and the return shape (ids, titles, snippet). It is clearly distinguishable from get_note or create_note by resource and operation, though it never names a sibling explicitly.

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

Usage Guidelines3/5

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

The empty-query fallback ('lists the most recent notes') is genuine usage guidance for an edge case. However, there is no guidance on when to use this versus get_note for full content, or versus browsing via workspace, so the when-to-use is only implied.

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

search_runsAInspect

Search what the user's agents did and said before (every agent's chats in Caddie, routines included). Use it when the user mentions something from earlier, or before redoing a lookup another run may have done. query: words to look for (results: the tasks that match, best first, with the lines that matched); agent and task (from a result): read that chat; nothing: the latest tasks. days: only the last N days. A chat read back has why: the decisions each reply made. decisions: true searches the agents' Decisions logs instead (what each decided and why; query and agent narrow it). Findings agents saved in notes aren't here: search_notes has those.

NameRequiredDescriptionDefault
daysNo
taskNoa task id (from a result)
agentNoan agent's name or id
limitNodefault 5, max 10 (decisions: default 10, max 20)
queryNo
decisionsNosearch the Decisions logs, not the chats

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses result shape (matching tasks, best first, with matched lines), that a chat read back includes 'why' per reply, that agent/task ids come from a prior result, and that days/limit scope the output. It omits permission/ownership scoping details beyond 'the user's agents,' pagination, and any error behavior.

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

Conciseness4/5

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

Dense and front-loaded: the primary use case comes first, then parameter meanings, then the sibling exclusion. It is one long semicolon-chained paragraph, which makes the mode mapping harder to scan than a short mode list would, but there is very little wasted text.

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?

A six-parameter, multi-mode retrieval tool with no annotations and no output schema is fully described in terms of what is returned (tasks with matched lines, chats with 'why', decisions with rationale). Remaining gaps are minor: default/max limits live only in the schema and nothing is said about result volume or failure modes.

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?

At 67% schema coverage the description compensates well for the undocumented `query` and `days` fields, defining query as words to look for and days as a last-N-days window, and clarifies that agent/task must be drawn from a prior result. It also explains the semantic interaction between `decisions` and `query`/`agent`. Only `limit` is left entirely to the schema.

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

Purpose4/5

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

The description gives a specific verb+resource (search prior agent runs/chats in Caddie) and enumerates the distinct modes: text search, read a specific chat via agent+task, list latest tasks, and the decisions variant. It explicitly names search_notes as the sibling that holds saved findings. It does not, however, differentiate itself from the active `decision_log`/`decisions_read` siblings even though it exposes a `decisions: true` mode that overlaps with them.

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?

Explicit triggers are given ('when the user mentions something from earlier, or before redoing a lookup another run may have done'), along with an exclusion routing to search_notes for saved note findings. Mode selection is spelled out for each parameter combination (query vs agent+task vs nothing vs decisions).

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

search_transcriptsAInspect

Find what was said on the user's calls: transcript lines that have all the words in query (case-insensitive; a speaker's name counts), newest calls first, each with the note's id and title, the time into the call (m:ss), the speaker, the line and the line before and after. person, from, to narrow which calls (person: on the call). Searches the newest 150 calls at most and says partial when there were more. Secret notes are never searched.

NameRequiredDescriptionDefault
toNoto, inclusive, YYYY-MM-DD (the user's day)
fromNofrom, YYYY-MM-DD (the user's day)
limitNodefault 20, max 50
queryYes
personNo
workspaceNoa team workspace's name or id (list_workspaces); default: the personal Caddie

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses case-insensitive all-words matching (speaker names count), newest-first ordering, surrounding-line context, the 150-call cap with partial-result signaling, and that secret notes are excluded. It does not mention pagination interaction with limit or latency, but the behavioral picture is substantially complete.

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

Conciseness4/5

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

Front-loaded with the core purpose and the return shape, and nearly every clause adds information (matching rules, ordering, context lines, cap, secret-note exclusion). It is a dense run-on pair of sentences, but little could be cut without losing guidance.

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

Completeness4/5

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

With no output schema, the description steps in to describe the return shape (note id/title, m:ss offset, speaker, line plus neighbors) and the partial-result signal. Combined with the mutation-free read nature and scoping params, an agent has nearly everything needed; only workspace defaults and limit interaction are left to the schema.

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

Parameters4/5

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

Schema coverage is 67%, and the description usefully compensates for the two undocumented params: query is defined as all-words, case-insensitive, speaker-name-inclusive matching, and person is clarified as 'on the call'. from/to/limit/workspace are already explained by the schema; workspace is not mentioned in the description, a minor omission.

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 ('find what was said on the user's calls: transcript lines') and enumerates exactly what a hit returns (note id/title, time into call, speaker, line plus context). This is clearly distinguishable from the sibling get_transcript, which would fetch a whole transcript rather than search across calls.

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?

Explains how to scope results via person/from/to ('person: on the call') and discloses the 150-call ceiling with the 'partial' flag. It gives clear usage context but never explicitly contrasts itself with get_transcript or search_notes, so the alternative-selection guidance is implied rather than stated.

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

set_agent_accessAInspect

Change one of the user's agents' access: "supervised" (no commands or file edits; its connected tools still work), "edits" (edits files, asks before each command) or "full" (runs commands without asking). Lowering always works. More access only when the user asked for it, and never from an agent's own turn inside Caddie: there it's refused, so ask the user to set it on the Agents page instead.

NameRequiredDescriptionDefault
agentYes
accessYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it explains what each mode actually permits (supervised blocks commands/file edits but keeps connected tools working; edits prompts before each command; full runs without asking) and discloses an important failure mode — escalation is refused when called from inside Caddie's agent turn. It does not say whether the new level takes effect immediately for a running agent, nor what permissions the caller needs.

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

Conciseness4/5

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

The escalation policy is front-loaded and the mode definitions precede the constraints, which is the right order. The sentence is dense with nested parentheticals and quoted values, making it slightly hard to scan, but nearly every clause carries decision-relevant information.

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

Completeness4/5

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

For a two-parameter mutation with no annotations and no output schema, the description covers the core behavior, the policy constraint, and the refusal path — enough to call it correctly. It omits what the call returns and whether the change affects an already-running agent session.

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 0% and neither property has a description, so the description must compensate — and it does for 'access' by defining all three enum values in operational terms rather than just naming them. The 'agent' parameter is never explained (id vs. name, format, how to discover it), which is the remaining gap.

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 the specific verb and resource (change an agent's access level) and immediately enumerates the three access modes with their distinct semantics, so the agent knows exactly what the tool manipulates. It is clearly distinguishable from siblings like update_agent or organize_agents, which do not govern execution permissions.

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 explicit when-to-use and when-not-to-use rules: lowering access always works, raising requires an explicit user request, and escalation is refused from an agent's own turn — in which case the user must be directed to the Agents page. Nothing about the call/no-call decision 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.

share_noteAInspect

Make a public link to one of the user's Caddie notes, with the same options as Share in the app: include_tasks (the note's tasks and its call's follow-ups, folded under the page), include_transcript (a recorded call's transcript), description (the link preview's line), invite (email addresses to send the page to; each gets an email with it). A video note's page shows its video. Anyone with the link can read it, not edit; it stays current as the note changes. stop: true turns the link off. id: the note's id (search_notes finds it); workspace: as for get_note. Only when the user asked for the note to be shared or sent. From an agent's own turn inside Caddie it's refused: ask the user instead. Secret notes, and notes kept only on the user's Mac, can't be shared. The answer's tasks_shared says how many tasks the page shows (tasks show when create_task was given note: this note's id).

NameRequiredDescriptionDefault
idYes
stopNo
inviteNo
workspaceNo
descriptionNo
include_tasksNo
include_transcriptNo

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden and does so well: anyone with the link can read but not edit, the link stays current as the note changes, stop: true disables it, secret/Mac-only notes cannot be shared, and agent-initiated sharing is refused. This is unusually complete for a mutation tool with zero annotation coverage.

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

Conciseness4/5

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

The content is dense and front-loaded with the core purpose and options. It is long and somewhat run-on, but nearly every clause adds necessary information given seven undocumented parameters and no annotations. Slightly better paragraphing or bullet structure would improve scanability.

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?

Given no annotations, no output schema, and 0% schema description coverage, the description still covers purpose, usage, parameter meanings, behavioral constraints, refusal conditions, and even the relevant return field tasks_shared. An agent has what it needs to invoke the tool correctly.

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

Parameters5/5

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

Despite 0% schema description coverage, the description explains every parameter: include_tasks, include_transcript, description, invite, stop, id, and workspace. It adds meaningful semantics beyond the bare schema, including that id can be found via search_notes and workspace behaves as for get_note.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Make a public link to one of the user's Caddie notes.' It immediately frames the tool as sharing and lists the app-equivalent options, making the purpose distinguishable from siblings like update_note, pin_note, or search_notes.

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?

It explicitly states when to use the tool: 'Only when the user asked for the note to be shared or sent.' It also states an important exclusion: when invoked from an agent's own turn inside Caddie it is refused, and the agent should ask the user instead.

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

skill_saveAInspect

Save how to do a job so you (and the user's other agents) do it right next time: after work that took several tries or steps, when the user corrected how you did something, or when a skill you followed turned out wrong. From an agent's own turn only new skills can be saved: changing an existing one needs the user, so tell them what should change rather than saving a near-copy. Outside a turn, to change one, read it (skill_view), then give old (an exact piece of its text) and new. To make one or rewrite it: name (what the job is, 2 to 5 words, never a date or one person's case), use_when (one line: when it applies) and body (Markdown: ## Steps as numbered steps, ## Watch out for what went wrong). No keys or passwords.

NameRequiredDescriptionDefault
newNo
oldNo
bodyNo
nameYes
use_whenNo

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full load and does well: it discloses the turn-vs-outside-turn permission model, that modifying an existing skill requires the user, the discouragement of near-copies, and a secret-handling rule (no keys or passwords). It omits what happens on a name collision or what is returned on success, which keeps it below 5.

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

Conciseness4/5

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

Purpose and triggers are front-loaded and every sentence carries information, but it is delivered as one dense run-on block that mixes guidance, mode rules, and formatting specs, making it slower to parse than a lightly structured version would be.

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

Completeness4/5

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

For a 5-param mutation tool with no annotations and no output schema, the description covers when to use it, the permission model, all parameter meanings, and content requirements. The residual gaps (return confirmation, conflict handling on duplicate names) are modest but real.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must define all five params — and it does: name (2-5 words, no dates or one person's case), use_when (one line), body (Markdown with ## Steps and ## Watch out for), plus old (an exact piece of existing text) and new for edits. This is meaningfully more than the bare schema types.

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

Purpose4/5

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

The description opens with a specific verb+resource: saving "how to do a job" as a reusable skill for future agents. It distinguishes itself from skill_view (editing an existing skill) but only in passing, and never explicitly contrasts with skills_list, so sibling differentiation is partial rather than crisp.

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?

It names concrete trigger conditions (work that took several tries, a user correction, a skill that turned out wrong) and then splits behavior by context: within an agent turn only new skills can be saved, while outside a turn you must read via skill_view and supply old/new. Alternatives and the when-not path are both spelled out.

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

skills_listAInspect

The user's skills: how to do jobs that come up again (notes in Caddie's Skills collection, written by agents or by them). Your instructions already list them by name; this lists them again with links.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose provenance (written by agents or the user) and that results are links, but doesn't state that it's a read-only, side-effect-free operation or describe the shape of the returned entries beyond 'links'.

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 sentences with little waste, though the leading "The user's skills: how to do jobs..." construction is slightly awkward and the key point (a link-bearing list) arrives late.

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

Completeness4/5

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

For a zero-parameter list tool with no output schema, the description adequately covers what is returned (skills with links) and where they come from. Missing only a brief note on read-only behavior or return ordering.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate and it correctly implies no filtering is needed.

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

Purpose4/5

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

The description names the resource (the user's skills, stored in Caddie's Skills collection) and the action (list them with links), so an agent understands what it returns. It does not explicitly differentiate from siblings like skill_view or skill_save, but the 'list' framing is clear enough.

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

Usage Guidelines3/5

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

"Your instructions already list them by name; this lists them again with links" implies when it's useful (when you need links/URLs), but gives no explicit when-not guidance or reference to skill_view for reading a single skill. Usage is inferable rather than stated.

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

skill_viewAInspect

Read a skill in full before doing that job. Do this whenever a skill's "use when" fits what you're asked, even partly.

NameRequiredDescriptionDefault
nameYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and 'Read' plus 'in full' usefully signals a complete non-mutating retrieval. It does not disclose error behavior, permissions, or what the returned skill content includes, leaving some behavioral gaps.

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?

The definition is two tight sentences, front-loads the action, and immediately follows with the triggering condition. There is no wasted wording.

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

Completeness3/5

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

For a simple one-parameter read tool, the description covers the main action and trigger. However, it does not tell the agent how to identify the skill to pass or point to skills_list as the source, which is a meaningful invocation gap.

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

Parameters2/5

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

Schema description coverage is 0%, so the description should compensate for the single undocumented 'name' parameter. It implies a skill identifier but never states that the parameter is the skill name, its format, or where to obtain it.

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

Purpose4/5

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

The description states a specific verb and resource: read a skill in full. That clearly separates it from writing tools like skill_save and likely from listing tools like skills_list, but it does not explicitly name or contrast those siblings.

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

Usage Guidelines4/5

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

It gives an explicit usage condition: use this whenever a skill's 'use when' fits the request, even partly. It does not name alternatives or when-not situations, but the selection rule is clear enough to act on.

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

slack_sendAInspect

Send a Slack message as the user, in their DM with one person in their Slack workspace (to: the person's name; their full name, or a first name only one person has). Channels can't be sent to: the user's Slack connection can't look them up. Only a message the user approved, to the person they meant; it can't be unsent. From an agent's own turn inside Caddie it's refused: draft it for the user instead.

NameRequiredDescriptionDefault
toNo
textYes
channelNonot supported: people only

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the sending identity (as the user), irreversibility ('it can't be unsent'), an authorization constraint (refused from the agent's own turn), and a lookup limitation (the connection can't resolve channels). It stops short of describing what a successful call returns or how an ambiguous/unknown recipient surfaces as an error.

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

Conciseness4/5

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

Front-loaded with the verb and scope, and nearly every clause carries a constraint the agent needs. The semicolon-chained phrasing makes it denser than it needs to be, but there is no filler sentence to cut.

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

Completeness4/5

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

For a 3-parameter mutation tool with no annotations and no output schema, the description covers identity, scope, gate conditions, and irreversibility. It is only short of confirming what the agent sees on success (message ID/confirmation) or how a failed recipient lookup is reported.

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 only 33% — only `channel` is documented in the schema — but the description compensates: it defines `to` as a person's name, full name, or a first name unique in the workspace, and reinforces that `channel` is not supported. `text` is implicitly defined as the approved message body, which is thin but recoverable from context.

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 (send a Slack message) plus the exact scope: a DM with one person in the user's workspace, sent as the user. It explicitly carves out what this tool is NOT (channels can't be sent to), so an agent distinguishes it from any channel-posting expectation without opening the schema.

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

Usage Guidelines5/5

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

Gives a positive gating condition ('only a message the user approved, to the person they meant'), two explicit exclusions (channels are unsupported; calls from the agent's own turn are refused), and a named fallback action ('draft it for the user instead'). That is when-to-use, when-not, and the alternative in one compact block.

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

start_focusAInspect

Start a focus session on one of the user's tasks in Caddie on their Mac (the notch's timer and check-ins), as their Focus on this button does. If another session is running, the Mac asks them before switching; if they use the pre-focus ritual, it opens first. Only when they asked for it, or agreed.

NameRequiredDescriptionDefault
taskYesThe task's id (list_tasks), or its title (exact, or a part only one open task has).
minutesNoHow long, 5 to 240. Default: the task's own length, else 25.

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full load and does it well: it discloses the mid-flight interruption path ("if another session is running, the Mac asks them before switching") and that a pre-focus ritual may open first. It omits what the tool returns or how failure (e.g. task not found) surfaces, which keeps it off a 5.

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

Conciseness4/5

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

The core action is front-loaded in the first clause, and the remaining sentences carry real information (switching prompt, ritual, consent). The nested parentheticals and repeated "as their Focus on this button does" phrasing add slight density but no waste.

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

Completeness4/5

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

For a two-parameter, no-output-schema tool, the description covers the action, the interruption semantics, and the consent precondition — enough to call it correctly. Missing only outcome/error behavior, a minor gap given the schema already documents both parameters.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already explains that `task` accepts an id or a uniquely-matching title and that `minutes` ranges 5–240 with a task-length-then-25 default. The description adds no parameter detail beyond restating "one of the user's tasks," so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ("Start a focus session on one of the user's tasks in Caddie on their Mac") and clarifies the exact UI affordance it mirrors ("the notch's timer and check-ins"), which removes ambiguity about scope. No sibling does anything similar, so no differentiation is needed, but it also never explicitly says so.

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

Usage Guidelines4/5

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

"Only when they asked for it, or agreed" is an explicit gating condition that tells the agent when it may invoke this tool — unusually strong consent guidance for a mutation-style action. It does not name alternatives or when-not-to-use beyond the consent rule, which is acceptable given no sibling overlaps.

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

task_approveAInspect

For clients outside Caddie, as the user's explicit OK or no on what waits in a task (task_status › waiting_for_ok): a draft to send or post, a reply that asks to send, an agent or routine an agent proposed (Make it / Not now), work going somewhere with more access. Only when the user told you to decide this: never OK a send they haven't seen and agreed to. approve: true (send / make it / allow) or false (don't / not now). item: which one, its id from waiting_for_ok (required, so the answer goes on what the user saw; the same item twice is answered once). text: send this instead of the draft (the user's edit). note: a line for the agent. It shows in the chat as the user's OK, via this client.

NameRequiredDescriptionDefault
itemYesits id from task_status › waiting_for_ok
noteNo
taskYes
textNo
agentYes
approveYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does substantial work: approve:true means send/make it/allow, false means don't/not now, text substitutes the user's edit for the draft, note is surfaced to the agent, and the result appears in chat as the user's own OK. It also discloses the idempotency-like property that answering the same item twice only counts once. Missing: permission requirements and 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.

Conciseness3/5

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

The content is dense and front-loaded around the approval decision, and nearly every clause carries information. But the structure is a run-on of slash-separated fragments ('Make it / Not now', 'send / make it / allow'), which costs readability without saving much length.

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

Completeness4/5

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

Given no annotations and no output schema, the description supplies the decision semantics, the item-id requirement, the override text, and the visible effect in chat — enough to call it correctly in most cases. The unexplained required agent/task parameters and absent error/permission notes keep it from a 5.

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

Parameters3/5

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

Schema coverage is only 17%, so the description must compensate, and it explains approve, item, text and note meaningfully. However, two required parameters — agent and task — are never explained in either the description or the schema, leaving half the required surface undocumented.

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

Purpose4/5

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

The description states a specific action: recording the user's explicit OK or no for items queued in task_status › waiting_for_ok, and it enumerates the kinds of items (drafts, replies, proposed agents/routines, higher-access work). That is well beyond a tautology. It is slightly muddied by the 'For clients outside Caddie' framing and dense slash-separated phrasing, but an agent can tell this apart from task_reply or task_status.

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

Usage Guidelines4/5

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

It gives a strong exclusion — 'Only when the user told you to decide this: never OK a send they haven't seen and agreed to' — plus concrete scenarios for when approval applies. It does not name the closest alternative (task_reply) or explain how this differs from it, so it falls 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.

task_replyAInspect

For clients outside Caddie acting for the user: say something in an agent's existing task, with all of its context (an answer to its question, the next step). It's the user's message there, shown as sent via this client, and runs on the agent's Mac (queued if it's busy; a done task opens again). To OK a draft or a proposal, use task_approve. wait_seconds (up to 50) waits for its reply to this message. Up to 30 messages and OKs an hour (task_stop is never held back).

NameRequiredDescriptionDefault
taskYes
agentYes
messageYes
wait_secondsNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does so well: it discloses execution location ('runs on the agent's Mac'), queueing when busy, and a non-obvious side effect ('a done task opens again'). It also states the rate limit ('up to 30 messages and OKs an hour'). It stops short of saying what happens when the limit is exceeded or what errors look like, keeping it below a 5.

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

Conciseness4/5

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

Front-loaded with the purpose and audience before the behavioral detail, and every clause carries information. The heavy parenthetical nesting ('shown as sent via this client, and runs on the agent's Mac (queued if it's busy; a done task opens again)') makes it denser than it needs to be, but nothing is redundant.

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?

No output schema exists, and the description largely compensates by explaining the wait_seconds reply behavior, queueing, and the reopen-a-done-task side effect. The remaining gap is that it never says what is returned when wait_seconds is omitted or zero, leaving the agent unsure whether it gets a confirmation, an ID, or nothing.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must define all four parameters, but only wait_seconds gets real treatment ('up to 50', waits for its reply). For 'agent' and 'task' it never says whether they are IDs, names, or handles, which is the key ambiguity for locating the target. 'message' is clarified conceptually but not in format.

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 action on a specific resource: 'say something in an agent's existing task, with all of its context'. It also scopes the audience ('for clients outside Caddie acting for the user') and explicitly names the sibling it is not ('To OK a draft or a proposal, use task_approve'), so an agent can separate it from task_approve and task_stop 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 Guidelines5/5

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

Gives an explicit routing rule to an alternative (task_approve for drafts/proposals) and demonstrates the intended content with examples ('an answer to its question, the next step'). It also names the one sibling exempt from the rate limit (task_stop), which tells the agent when not to worry about throttling.

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

task_statusAInspect

For clients outside Caddie: one agent task's state (working, queued, waiting_for_mac, waiting_for_ok, needs_user, failed, stopped, idle, done), its last message and last reply, the steps of a turn running now, and waiting_for_ok: drafts and proposals that wait for the user's OK (each with an id for task_approve). wait_seconds (up to 50): while it's working or queued, wait here until it isn't. task: its id or title (agent_tasks, search_runs, ask_agent give them).

NameRequiredDescriptionDefault
taskYes
agentYes
wait_secondsNo

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does a good job: it enumerates task states, explains the waiting behavior with a 50-second cap, and clarifies what waiting_for_ok drafts/proposals are. It stops short of explicitly declaring read-only/no side effects or permission requirements, which keeps it below a 5.

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

Conciseness3/5

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

The description is dense and packs necessary details into a single run-on structure, making it harder to parse than it needs to be. It is not padded, but the colon-and-semicolon layout blurs the distinction between purpose, returns, and parameters.

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

Completeness3/5

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

For a three-parameter status tool with no annotations and no output schema, the description covers the return shape and wait semantics well. However, it omits the meaning of the required agent parameter and does not clarify read-only behavior or error/wait-timeout outcomes, so it is adequate but incomplete.

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?

The schema has 0% description coverage, so the description must explain the three parameters. It explains task as an id or title and wait_seconds as an up-to-50-second wait, but the required agent parameter is never described, leaving a clear gap.

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

Purpose4/5

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

The description clearly identifies the resource as one agent task and describes what is returned: state, last message/reply, current turn steps, and waiting_for_ok approval drafts. It is specific enough to distinguish a status lookup from mutation siblings, though it does not explicitly name alternatives such as task_wait or agent_tasks.

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

Usage Guidelines3/5

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

Usage is implied rather than explicitly routed: the description says wait_seconds can be used while a task is working or queued, and that waiting_for_ok ids are for task_approve. It does not say when to use this tool versus task_wait, agent_tasks, or other task-related siblings, nor does it state exclusions.

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

task_stopBInspect

For clients outside Caddie acting for the user: stop an agent's task, the turn running now and the messages waiting in it, as Stop on the Agents page does.

NameRequiredDescriptionDefault
taskYes
agentYes

TDQS

B3.1/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It does disclose the real consequence — the in-flight turn and all queued messages are discarded — which is the most important behavioral fact for a stop operation. It says nothing about reversibility, authorization scope, or what remains of the task record afterward.

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?

A single sentence with no padding, and the core action is front-loaded after a short qualification. The client-gating clause is the weakest part and slightly obscures the action, but nothing is redundant.

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

Completeness2/5

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

For a two-required-parameter mutation tool with no annotations and no output schema, the description leaves the critical unknown unanswered: how to identify the agent and task. It also omits whether the stop is idempotent or what is returned, gaps the structured fields cannot fill.

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

Parameters2/5

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

Both required parameters ('agent', 'task') are bare strings with 0% schema description coverage, and the description does not clarify whether they take IDs, slugs, or names. The phrase 'an agent's task' only restates the parameter names rather than adding semantics.

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

Purpose4/5

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

States a specific verb and resource ('stop an agent's task') and even scopes the effect ('the turn running now and the messages waiting in it'), which separates it from task_wait, task_status and task_reply. It never names a sibling explicitly, so differentiation is inferential rather than stated.

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

Usage Guidelines3/5

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

'For clients outside Caddie acting for the user' is a gating condition rather than guidance: an agent cannot tell whether it is such a client, or what to use instead if it is not. The 'as Stop on the Agents page does' analogy helps orient the reader but gives no when/when-not rule against task_wait or agent_reply.

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

task_waitAInspect

task_status that waits (50 s by default, 50 at most) while the task is working or queued, and returns as soon as it isn't (or at once when its Mac is off: waiting_for_mac). Call it again to keep waiting.

NameRequiredDescriptionDefault
taskYes
agentYes
wait_secondsNo

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well: it discloses default and maximum wait duration, early return semantics, and the notable edge case where a task whose Mac is off returns immediately with waiting_for_mac. It does not describe what a timeout returns or any auth/permission requirements.

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?

A single dense sentence that front-loads the core behavior before the timing details and the retry hint. Slightly overloaded with nested parentheticals, but every clause carries information.

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

Completeness3/5

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

No output schema and no annotations, so the description should do more to explain the returned shape (e.g., that a timeout yields the current status) and the meaning of the agent/task identifiers. The timing and edge-case coverage is good, but an agent could still be surprised by the return payload.

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

Parameters2/5

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

Schema coverage is 0%, so the description must compensate for all three parameters. It explains wait_seconds indirectly via the '50 s by default, 50 at most' note, but 'agent' and 'task' — both required — get no explanation of what identifiers they expect or where they come from, leaving most parameter meaning undocumented.

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

Purpose4/5

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

States a specific behavior: it polls task status and blocks until the task is no longer working or queued, and it self-identifies as the waiting variant of task_status. An agent can distinguish it from the plain task_status sibling from this sentence alone, though the phrasing 'returns as soon as it isn't' is slightly elliptical.

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?

'Call it again to keep waiting' gives concrete operational guidance on repeated invocation, and framing it as 'task_status that waits' implicitly routes non-blocking status checks to task_status. There is no explicit when-not or named alternative sentence, which keeps it below a 5.

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

unpin_noteCInspect

Unpin a note from Caddie's sidebar.

NameRequiredDescriptionDefault
idYes
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations at all, the description carries the full burden and discloses almost nothing: it doesn't say whether unpinning is idempotent, whether it errors when the note isn't pinned, whether the note content is untouched (important, since delete_note is a sibling and agents may conflate the two), or what permissions are needed.

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?

A single short sentence, front-loaded with the action and free of filler. It is efficient but borders on under-specification given the mutation semantics.

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

Completeness2/5

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

For a mutation tool with zero annotations, no output schema, and a required parameter undocumented in both schema and description, the definition leaves too much for the agent to infer about side effects and failure modes.

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

Parameters2/5

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

Schema coverage is only 50%: the required 'id' parameter has no description anywhere, and the description adds no clarification about what id refers to (note id vs. pin id) or its format. The one documented parameter, 'workspace', is explained entirely in the schema, so the description contributes nothing.

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

Purpose4/5

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

States a specific verb and resource ('Unpin a note') plus where the pin lives ('Caddie's sidebar'), which is clearer than the bare name. It doesn't explicitly contrast with the inverse sibling pin_note or with delete_note, but the verb itself is unambiguous.

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

Usage Guidelines2/5

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

No guidance on when to unpin versus pin_note, delete_note, or move_note, and no stated preconditions (e.g., that the note must currently be pinned). The only routing hint lives in the schema's workspace description, not the tool description.

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

update_agentAInspect

Change one of the user's Caddie agents: instructions (what it's for and how it works, written to it; replaces them), name, model (claude-code: "sonnet", "opus", "haiku"; codex: "gpt-5.5", "gpt-5.5-mini"; "default" for the default), provider ("claude-code" or "codex"; changing it resets the model) and folder (its working folder, "~/code/app"; "" for none). Only what you give changes. From an agent's own turn inside Caddie, instructions are never changed, nor the folder of an agent that (or one of whose tasks) has Full access or Edits, nor a Full-access agent's provider or model: ask the user. Access: set_agent_access. Sections: organize_agents.

NameRequiredDescriptionDefault
nameNo
agentYesits name or id (list_agents)
modelNo
folderNo
providerNo
instructionsNo

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does so well: it declares partial-update semantics ('Only what you give changes'), that instructions replacement is destructive ('replaces them'), and that changing provider resets the model. It stops short of describing error behavior or what the call returns, leaving a small gap for a mutation tool.

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?

Everything is packed into one front-loaded sentence that begins with the verb and resource, and each semicolon clause carries real information. The dense parenthetical style makes it slower to parse than it needs to be, but nothing is filler.

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

Completeness4/5

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

For a six-parameter mutation tool with no annotations and no output schema, the definition covers mutation semantics, field-specific behavior, and permission guardrails thoroughly. It omits return/error expectations and does not flag the tool as destructive or confirm whether the change is reversible, which would be the last missing piece.

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 only 17%, so the description must compensate and mostly does: it explains instructions semantics, enumerates valid model values per provider, defines the provider enum plus its reset side effect, gives a folder format example and the '' sentinel for none, and points the required 'agent' param to list_agents. The 'name' parameter is left implicit, though its meaning is self-evident.

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 ('Change one of the user's Caddie agents') and enumerates exactly the fields it mutates (instructions, name, model, provider, folder). It also names the adjacent tools it is not (set_agent_access, organize_agents), so an agent can route correctly 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 explicit when-not conditions: from an agent's own turn, instructions are never changed, nor the folder of an agent with Full access or Edits, nor a Full-access agent's provider/model — and directs the caller to 'ask the user' instead. It also routes by concern to set_agent_access for access and organize_agents for sections.

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

update_eventAInspect

Rename or move a Google Calendar event (id, calendar_id and account_id from list_events). start/end are ISO date-times with offset; with start alone it keeps its length (or give minutes). Guests are told about changes, so from an agent's own turn inside Caddie only an event without guests is changed.

NameRequiredDescriptionDefault
idYes
endNo
startNo
titleNo
minutesNo
account_idNo
calendar_idYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the burden well: it discloses the external side effect that guests are notified, a hard operational restriction for agent-initiated turns, and the length-preserving behavior when only start is supplied. It omits whether the guest restriction raises an error or is silently skipped, and says nothing about the response.

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 sentences, dense and front-loaded with the verb and resource; identifier provenance arrives before the behavioral constraints. The final clause about Caddie's own turn is convoluted and slightly opaque, costing a point on structure.

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 7-parameter mutation tool with zero annotation and zero schema-description coverage and no output schema, the description covers every parameter at least implicitly plus the key side effect and restriction. An agent could call this correctly from the description alone.

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 0%, so the description must compensate, and it largely does: id/calendar_id/account_id provenance, start/end as ISO date-times with offset, minutes as an alternative to end, and 'rename' implying title. Remaining gaps are format detail (offset requirement, timezone default) and the exact role of calendar_id in 'move'.

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 pair and resource: 'Rename or move a Google Calendar event'. This cleanly separates it from create_event, delete_event, and list_events among the siblings, and it even names list_events as the source of the identifiers.

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 concrete preconditions ('id, calendar_id and account_id from list_events') and an explicit usage restriction: from an agent's own turn only events without guests are changed. It does not explicitly contrast with create_event/delete_event, but those distinctions are self-evident from the verb.

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

update_habitBInspect

Change a habit or routine (id from list_habits): its name, kind, days, times or minutes. New days count from today on, so its streak isn't broken.

NameRequiredDescriptionDefault
idYes
daysNothe days it's on: Mon, Tue… or weekdays, weekends, daily
kindNodefault habit
nameNo
timesNotimes of day, HH:MM: more than one is that many sessions a day
minutesNohow long each session takes, 5 to 600

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses a valuable behavioral trait: 'New days count from today on, so its streak isn't broken.' However, it omits other mutation behaviors like partial update semantics, error conditions, or permission requirements.

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 sentences, front-loaded with purpose and fields, then a behavioral note. Efficient with little waste, though the parenthetical slightly interrupts flow.

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

Completeness3/5

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

For a mutation tool with no annotations and no output schema, the description is somewhat complete but lacks important details: partial update behavior, error handling, and differentiation from update_routine. It does provide the streak behavior, which is helpful.

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 67%, so the schema documents most parameters. The description lists the updatable fields but adds no meaning beyond what the schema provides (e.g., it doesn't explain the 'kind' enum or time format). Baseline 3 is appropriate given moderate coverage.

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

Purpose4/5

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

The description states a specific verb 'Change' and resource 'habit or routine', and enumerates the fields that can be modified. It does not differentiate from the sibling tool update_routine, which could cause ambiguity, but the core purpose is clear.

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

Usage Guidelines3/5

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

It provides a hint to get the id from list_habits, implying usage, but gives no explicit guidance on when to use this tool versus update_routine or other alternatives. The guidance is only implicit.

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

update_noteAInspect

Rename a note, or replace its whole text with new Markdown content (prefer append_to_note to add to it).

NameRequiredDescriptionDefault
idYes
titleNo
contentNo
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose the most important behavioral trait — that content overwrites the whole note rather than merging — but says nothing about partial-update semantics (does supplying only title preserve content?), permissions, or irreversibility of the overwrite.

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?

A single sentence that front-loads the primary action, then the secondary action, then the alternative. Every clause earns its place; nothing is padded.

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

Completeness3/5

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

With no annotations and no output schema, the description should be self-sufficient, but it omits what happens when optional fields are left out, whether the note must already exist, and what the call returns. Adequate for the happy path, incomplete for a mutation tool with a destructive overwrite.

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 only 25% (only workspace is documented), so the description must compensate. It implicitly maps 'rename' to title and 'new Markdown content' to content, and clarifies replace-not-merge semantics for content, but leaves the optionality/partial-update behavior of title and content undefined.

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 two specific operations on a specific resource — rename a note, or replace its full text with Markdown — and names the sibling (append_to_note) it is not. An agent can distinguish it from append_to_note, create_note, and move_note 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?

Explicitly routes the append case to append_to_note, which is the most likely misuse. It does not address other adjacent cases (creating with create_note, relocating with move_note, or when to prefer get_note first to preserve content), so guidance is clear 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_routineAInspect

Change one of the user's routines (list_routines): instructions (what each run does; replaces them), schedule, name. Only what you give changes. routine: its id, its whole name, or a part only it has; agent narrows it to one agent's. Changed from an agent's own turn inside Caddie, its runs ask before they send or post anything from then on.

NameRequiredDescriptionDefault
nameNo
agentNo
routineYes
scheduleNoas create_routine's: {kind: "daily" | "weekdays" | "weekly" | "hourly" | "every", at: "HH:MM" (24 h, the user's time), days: ["mon",…] for weekly, minutes for every (whole hours, 60 to 1440)}
instructionsNo

TDQS

A4/5.0
Behavior4/5

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

With no annotations the description carries the full burden, and it does substantial work: it discloses replace semantics for instructions, partial-update semantics for other fields, and an important safety consequence — runs initiated from an agent's own turn will ask before sending or posting. That last clause is genuine behavioral context an agent would otherwise miss.

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?

Roughly three dense sentences with the mutation contract and matching rules front-loaded, no filler. The final clause about agent-turn approval is a bit compressed and slightly awkward but earns its place as distinct behavioral information.

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?

No output schema, no annotations, five parameters including a nested schedule object, yet the description covers mutation semantics, identifier resolution, and a non-obvious side effect. The only omission is explicit clarification of the agent scoping parameter.

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

Parameters4/5

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

Schema description coverage is only 20%, so the description must compensate, and it does for the critical routine argument (id, full name, or unique partial name, with agent-scoped narrowing) and for instructions (replace, not merge). The agent parameter is only implicitly covered via 'agent narrows it,' which is a minor gap.

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

Purpose4/5

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

The description opens with a specific verb and resource: 'Change one of the user's routines,' and names the updatable fields (instructions, schedule, name). It also routes discovery through the sibling list_routines, so the agent can tell it apart from create/delete/pause variants.

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

Usage Guidelines4/5

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

It states the partial-update contract explicitly ('Only what you give changes') and gives matching rules for the required routine argument so the agent knows how to obtain a valid reference. It does not explicitly distinguish when to use this versus pause_routine or delete_routine, which holds it below a 5.

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

update_rowsAInspect

Change cells of existing rows by id (ids from query_rows): updates is [{ id, set: { "": value } }]. Only the cells in set change; the rest of the row stays as it is, so other people's and agents' edits to other cells are kept. null empties a cell. All or nothing, up to 500 a call.

NameRequiredDescriptionDefault
tableYesthe data table's id or name (list_data_tables)
updatesYes
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.

TDQS

A4.1/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does it well: it discloses partial-update semantics (only cells in `set` change, other cells' edits are preserved), null-clears-cell behavior, atomic all-or-nothing execution, and a 500-per-call rate limit. These are exactly the behavioral traits an agent needs before mutating data.

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?

Front-loaded with the core action and the input shape, then the important behavioral guarantees. Every sentence carries information—partial-update preservation, null handling, atomicity, and the cap—with no filler.

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

Completeness4/5

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

For a mutation tool with no annotations and no output schema, the description covers the critical semantics (atomicity, partial update, null, limit). The main gap is the absence of any statement about return values or error behavior on a failed batch, but the core calling knowledge is complete.

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 67%, and the description compensates well: it spells out the `updates` shape as `[{ id, set: { "<column name>": value } }]`, explains that `set` keys are column names, and defines null semantics. It adds meaning beyond the schema, though it says nothing extra about the `table`/`workspace` params beyond what the schema already documents.

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

Purpose4/5

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

States a specific verb and resource with scope: 'Change cells of existing rows by id'. It clarifies it operates on existing rows (distinguishing it from add_rows) and points to query_rows for ids, though it never names upsert_rows as the contrasting sibling.

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

Usage Guidelines3/5

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

Prerequisite guidance is present ('ids from query_rows'), which tells the agent where to source input, but there is no explicit when-to-use vs. when-not or comparison against alternatives like upsert_rows or delete_rows. Usage is implied rather than prescribed.

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

update_taskAInspect

Change a task: rename it, move it to a date/time, change its length, set its status (todo, progress = in progress, review = in review, done), or mark it done/undone. An agent working on a task handed to it sets progress when it starts and review (or done) when it's finished. Also its priority, due date, list, subtasks, note, Linear issue and (in a team) assignee; fields left out stay as they are.

NameRequiredDescriptionDefault
idYes
dueNoa deadline, YYYY-MM-DD (apart from date, the day it's planned); "" clears it
dateNo
doneNo
listNounplanned, where it waits: inbox (To-dos), someday (the backlog) or week (Later this week; next week on Saturday and Sunday). Takes it off its planned day; not with date
noteNoa note's id (search_notes) the task came from, shown with it in Caddie; "" unlinks it
timeNo
titleNo
linearNoa Linear issue key like ENG-123. Only an issue assigned to the user: Caddie's Linear sync keeps the task in step with it (title, status), and ticks it off once it's no longer theirs. "" unlinks it
statusNo
minutesNo
assigneeNoteam workspaces only: whose it is, a member's name, email or id ("me" for the user); "" or "none" leaves it unassigned
priorityNo
subtasksNothe subtasks' titles: replaces them all ([] removes them); one with the same title as before keeps its tick
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.
add_subtasksNosubtasks to add after the ones it has

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses important partial-update semantics ('fields left out stay as they are'), status label mapping, and an agent status workflow. However, for a 16-parameter mutation tool it omits permissions, failure behavior, workspace constraints, and return effects.

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

Conciseness4/5

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

Front-loads the main verb and editable fields, then adds workflow and partial-update behavior. It is dense but has little obvious filler; a clearer structure for 16 parameters would help, but it is reasonably concise.

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

Completeness3/5

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

Covers core mutation semantics and many fields well enough for common edits. Still, given 16 parameters, no output schema, and only 50% schema coverage, missing details around date/time/minutes and edge behavior leave notable gaps.

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 50%; the description adds meaning for status values, done/undone, and partial updates, and names many editable fields. But it does not explain date versus due, time, or minutes semantics, and several undocumented parameters remain unclarified in prose.

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

Purpose4/5

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

States a specific verb and resource ('Change a task') and enumerates editable aspects including status, priority, due date, list, subtasks, note, Linear issue, and assignee. It does not explicitly distinguish itself from siblings like create_task, delete_task, or task_status, so it falls short of a 5.

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

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit agent workflow guidance: set progress when starting a task and review or done when finished. It also notes omitted fields stay unchanged. It does not state when to use alternatives or when not to use this tool, so no 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upsert_rowsAInspect

Update-or-add by the table's unique column (key: that column's name, e.g. "Email"): a row whose key value is already in the table has the cells you give set (others stay); the rest are added. The safe way to keep a registry in step without making duplicates. All or nothing, up to 500 a call.

NameRequiredDescriptionDefault
keyYesthe unique column's name
rowsYes
tableYesthe data table's id or name (list_data_tables)
workspaceNoWhich Caddie: leave it out for the user's personal one, or give a team workspace's name or id (list_workspaces). Use the same one you found the item in.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does well: it discloses partial-update semantics ('others stay'), atomicity ('all or nothing'), and a hard batch limit ('up to 500 a call'). It omits what the call returns (counts of updated vs added), permission/auth requirements, and what happens if the key column contains duplicates.

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, no filler, and the core matching semantics are front-loaded before the safety framing and the batch limit. Every clause carries information an agent needs to call this correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description covers semantics, atomicity, and batch limits, which is the bulk of what matters. The remaining gap is return/error behavior and permission prerequisites, which nothing else in the structured fields supplies.

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 75%, so the schema already documents all four parameters; the description still adds value by giving a concrete key example ("Email") and implying the key column must be unique. It says nothing about the rows payload shape beyond the 500 cap, and table/workspace are left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a precise verb-and-resource with its exact semantics: 'update-or-add by the table's unique column', spelling out that matched rows get the given cells set while the rest are inserted. That distinguishes it in substance from add_rows/update_rows, though it never names those siblings, so an agent must infer the boundary rather than read it.

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 safe way to keep a registry in step without making duplicates' gives a clear usage context that selects this tool over a plain insert. It offers no explicit exclusions or named alternatives (e.g. 'use add_rows when you know every row is new'), leaving the negative case implicit.

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. 97 tool updates
    • First observedadd_column
    • First observedadd_dictation_words
    • First observedadd_rows
    • First observedagent_reply
    • First observedagent_tasks
    • First observedappend_to_note
    • First observedarchive_agent
    • First observedask_agent
    • First observedcreate_booking_link
    • First observedcreate_collection
    • First observedcreate_data_table
    • First observedcreate_event
    • First observedcreate_habit
    • First observedcreate_linear_issue
    • First observedcreate_note
    • First observedcreate_task
    • First observedcreate_video_note
    • First observeddecision_log
    • First observeddecisions_read
    • First observeddelete_booking_link
    • First observeddelete_collection
    • First observeddelete_event
    • First observeddelete_habit
    • First observeddelete_note
    • First observeddelete_routine
    • First observeddelete_rows
    • First observeddelete_task
    • First observeddisable_booking_link
    • First observedfind_free_time
    • First observedfollowup_act
    • First observedfollowups_list
    • First observedget_data_table
    • First observedget_note
    • First observedget_transcript
    • First observedgrowth_library
    • First observedinvite_member
    • First observedjournal_read
    • First observedjournal_write
    • First observedlinear_comment
    • First observedlinear_cycles
    • First observedlinear_issues
    • First observedlinear_query
    • First observedlinear_update_issue
    • First observedlist_agents
    • First observedlist_booking_links
    • First observedlist_collections
    • First observedlist_data_tables
    • First observedlist_events
    • First observedlist_habits
    • First observedlist_meetings
    • First observedlist_members
    • First observedlist_routines
    • First observedlist_tasks
    • First observedlist_workspaces
    • First observedlog_habit
    • First observedmemory_read
    • First observedmemory_update
    • First observedmove_note
    • First observednote_from_template
    • First observednotify_user
    • First observedorganize_agents
    • First observedpause_routine
    • First observedphone_ask
    • First observedphone_location
    • First observedphone_photo
    • First observedphone_result
    • First observedpin_note
    • First observedplan_day
    • First observedquery_rows
    • First observedrename_collection
    • First observedreport_error
    • First observedrestore_note
    • First observedsearch_notes
    • First observedsearch_runs
    • First observedsearch_transcripts
    • First observedset_agent_access
    • First observedshare_note
    • First observedskill_save
    • First observedskill_view
    • First observedskills_list
    • First observedslack_send
    • First observedstart_focus
    • First observedtask_approve
    • First observedtask_reply
    • First observedtask_status
    • First observedtask_stop
    • First observedtask_wait
    • First observedunpin_note
    • First observedupdate_agent
    • First observedupdate_booking_link
    • First observedupdate_event
    • First observedupdate_habit
    • First observedupdate_note
    • First observedupdate_routine
    • First observedupdate_rows
    • First observedupdate_task
    • First observedupsert_rows

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Remote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    18 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources