Skip to main content
Glama

Tommos

Server Details

A CRM with AI agents that take B2B inquiries to a signed contract. Contacts, deals, forms, bookings.

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

TDQS

B3.3/5.0

Scored across 111 tools

Disambiguation3/5

Tools are mostly distinguishable through highly detailed descriptions, but the 111-tool surface includes overlapping clusters such as playbook page add/write/propose/move, card read/list/approve/reject, and mailbox/calendar/Google connection links. An agent can often tell them apart, yet selection is error-prone due to volume and similar-sounding operations.

Naming Consistency3/5

Names use snake_case throughout, but verb conventions and article usage are inconsistent: add_a_mailbox, create_contact, get_contact, read_a_card, write_to_a_tommo_on_a_deal, leads_report, where_the_work_stands. The pattern is readable but not predictable, mixing action-first and sentence-like names.

Tool Count1/5

111 tools is an extreme mismatch for a coherent MCP toolset, far beyond the 3–15 well-scoped range and even the 25+ warning threshold. The surface is likely overwhelming for agents and exceeds what can be reliably selected in a single context.

Completeness4/5

Coverage is extensive across contacts, deals, forms, events, bookings, playbooks, tommos, cards, outreach, sending domains, mail exclusions, API keys, team and billing. Minor gaps exist, such as no delete/get for events or booking pages, but most lifecycle operations are present.

Available Tools

111 tools
add_a_mailboxAdd a mailboxA
Idempotent
Inspect

Add a mailbox of the company's Google Workspace to what this workspace reads, when the Workspace's admin has granted domain-wide delegation: its letters join the leads' timelines from the next sync, its last 30 days with them. A person can instead connect their own mailbox by signing in (link_to_connect_your_mailbox). Looking for new leads in it stays off until a person switches it on. A stopped mailbox added again resumes.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesThe mailbox, like sales@yourcompany.com

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly=false, idempotent=true, destructive=false), so the bar is lower. The description adds real context beyond them: sync timing ('from the next sync'), the 30-day backfill window, that new-lead discovery is off by default, and that re-adding a stopped mailbox resumes rather than errors.

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 action is front-loaded and each sentence adds a distinct fact (prerequisite, sync/backfill, alternative, default, resume). The prose is somewhat flowery and dense ('its letters join the leads' timelines'), but nothing is redundant.

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

Completeness5/5

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

For a one-parameter, non-destructive mutation with no output schema, the description covers prerequisites, side effects, defaults, the alternative tool, and re-add semantics. Nothing an agent needs to call it correctly is missing.

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

Parameters3/5

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

Schema coverage is 100% for the single 'address' parameter, so the schema already carries the meaning. The description adds no format or syntax detail beyond the schema's own example, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb (add) and resource (a mailbox of the company's Google Workspace) plus the scope it joins (what this workspace reads). It explicitly distinguishes itself from the sibling link_to_connect_your_mailbox, so an agent can route correctly 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 the prerequisite (Workspace admin has granted domain-wide delegation) and names the alternative path (a person connecting their own mailbox via sign-in with link_to_connect_your_mailbox). When-to-use and when-not are both explicit.

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

add_a_sending_domainAdd a sending domainA
Idempotent
Inspect

Add a domain the workspace will send from. Answers the DNS TXT record to publish at the domain's DNS host; then prove it with prove_a_sending_domain. No letter leaves from a domain until it is proven.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesThe domain, like yourcompany.com

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare non-destructive, idempotent, open-world behavior. The description adds meaningful non-annotated context: the tool returns a DNS TXT record to publish, and the domain is inactive until proven – behavior the agent could not infer from the structured fields alone.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the action, then the DNS outcome, then the constraint. Every sentence carries distinct information with no redundancy.

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

Completeness5/5

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

For a single-parameter tool with no output schema, the description covers what it does, what it returns (the TXT record), and the follow-up dependency, which is everything an agent needs to call it correctly.

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

Parameters3/5

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

Only one parameter with 100% schema coverage, so the schema already documents the 'domain' field. The description reinforces that the domain identifies where mail will be sent from but adds no format or validation detail beyond the schema. Baseline 3 applies.

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

Purpose5/5

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

Specific verb (add) plus resource (sending domain) with clear scope: 'Add a domain the workspace will send from.' It also distinguishes itself from the sibling prove_a_sending_domain by naming it as the follow-up step.

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?

Establishes the workflow context ('then prove it with prove_a_sending_domain') and the operational constraint ('No letter leaves from a domain until it is proven'), telling the agent this is the setup half of a pair. No explicit when-not-to-use, but the sequencing is clear.

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

add_playbook_pagesAdd Playbook pagesAInspect

Add pages to the Playbook, as the Import's Add pages does: each { title, body, parent, children } — body is plain text of facts; parent, on a top page, is the title of the existing page to place it under (none: the book's root); children nest up to three levels. Pass the pages propose_playbook_pages answered, as kept or changed. Each page is saved under whoever adds it.

ParametersJSON Schema
NameRequiredDescriptionDefault
pagesYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare this is a non-read-only, non-idempotent write (readOnlyHint=false, idempotentHint=false). The description adds genuinely new behavioral detail beyond the annotations: pages are attributed to "whoever adds it," and nesting is bounded to three levels. It stops short of stating append-vs-replace behavior 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?

Purpose is front-loaded in the first clause, followed by the object shape and the workflow hook; the whole thing is a tight, information-dense block. The "as the Import's Add pages does" analogy is mildly referential but still earns its place by anchoring the 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?

For a batch mutation with an opaque schema and no output schema, the description covers the essential object structure and attribution. It omits edge cases an agent might need: whether referenced parents must pre-exist, error/partial-failure behavior on a multi-page batch, and the return value.

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% and the single parameter is an untyped array of objects, so the schema gives almost nothing. The description compensates well by spelling out the per-page shape { title, body, parent, children } and the exact meaning of body and parent, which the schema cannot 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?

States a specific verb and resource ("Add pages to the Playbook") and ties it to a known flow ("as the Import's Add pages does"), so an agent grasps the operation immediately. It also implicitly distinguishes itself from propose_playbook_pages, though it never explicitly contrasts with the single-page sibling write_a_playbook_page.

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 instruction "Pass the pages propose_playbook_pages answered, as kept or changed" establishes a clear workflow precondition (this tool consumes the proposal output). However, there is no explicit when-not-to-use guidance, and no contrast against write_a_playbook_page, so an agent must infer which page-writing tool to pick.

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

add_to_the_mail_tommo_wont_readAdd to the mail Tommo won't readA
DestructiveIdempotent
Inspect

Add an address (jane@investor.com) or a domain (investor.com, its subdomains too) Tommo never reads mail from. From then on no letter where it is among the people is fetched, read or kept, and what was already kept of it — its letters, their timeline rows, its mail marks, a conversation left empty — is erased now; the answer says how much. Refused for an entry that covers a connected mailbox itself. For a signed-in admin or owner.

ParametersJSON Schema
NameRequiredDescriptionDefault
entryYesAn address or a domain

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already flag destructive=true and idempotent=true, but the description goes well beyond them: it enumerates exactly what is erased (letters, their timeline rows, mail marks, an emptied conversation), notes the response reports the amount erased, and states the connected-mailbox refusal case and authorization requirement. This is the substantive behavioral context annotations cannot carry.

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

Conciseness4/5

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

Front-loaded with the core action, and every clause carries information. The em-dash enumeration of erased artifacts makes the second sentence long and slightly dense, but nothing is redundant filler.

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

Completeness5/5

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

For a single-parameter destructive mutation with no output schema, the description covers the action, side effects, refusal case, permission requirement, and even the return value ('the answer says how much'). Nothing an agent needs to call it correctly is missing.

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

Parameters4/5

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

With one parameter at 100% schema coverage the baseline is 3, but the description adds semantics the schema lacks: it accepts an address (jane@investor.com) or a domain (investor.com), and explicitly notes that a domain entry also covers its subdomains. That subdomain scoping is real added meaning.

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

Purpose5/5

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

Names a specific verb (add an address/domain) and a specific resource (the mail Tommo won't read), and clearly delineates scope: address entries and domain entries including subdomains. An agent can distinguish this from remove_from_the_mail_tommo_wont_read and read_the_mail_tommo_wont_read at a glance.

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 the operative context ('From then on no letter... is fetched, read or kept'), a prerequisite ('For a signed-in admin or owner'), and an explicit refusal condition ('Refused for an entry that covers a connected mailbox itself'). It does not name sibling alternatives such as block_a_sender or remove_from_the_mail_tommo_wont_read, so it stops short of full when-not guidance.

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

approve_a_cardApprove a cardAInspect

Approve a card as the signed-in person: what it carries is done — a letter leaves (on the wire's own rules: nothing leaves before the owner confirms, a test record acts on nothing outward, a paused lead is not written to), a change lands on the record. The record says who approved it and that it was through MCP. Only a signed-in person approves; a key cannot. As Flow's Approve with edits: edits change a step's letter first (by its place on the card, 0 the first; subject and body as the person wants them); answer is the person's words answering the card's errand (the fact a letter's slot asks for, or any answer); picked is one of the options the errand names; file is a file the person answers with, kept in the customer's folder of the company's Drive; in_the_leads_hours dates the letter for the lead's working hours, read from the record (an open window sends now); struck names the departures struck on an errand. An errand approved with none of them is done with nothing to say.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNo
editsNo
answerNoThe person's words answering the card's errand
pickedNoOne of the options the errand names
struckNoThe errand's departures struck, by place
card_idYesThe card's id (from list_open_cards)
in_the_leads_hoursNoSend in the lead's working hours rather than now

TDQS

A3.7/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true), yet the description adds material context beyond them: the auth requirement, the audit trail ('The record says who approved it and that it was through MCP'), and the conditional suppression rules for test records, paused leads, and unconfirmed owners. It stops short of naming error or failure behavior for the mutation itself.

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

Conciseness3/5

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

The core action is front-loaded in the first clause, which is good, but the remainder is a dense run-on paragraph whose archaic metaphors ('what it carries is done', 'struck names the departures struck on an errand') cost more comprehension than they earn. Substantive content is present but padded with stylistic phrasing.

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 7-parameter, nested-object mutation tool with no output schema, the description covers the auth precondition, the resulting side effects, the audit record, and the per-parameter meaning of the optional edit/answer/file fields. It omits failure handling and does not revisit idempotency beyond the annotation, so it is nearly but not 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?

With 71% schema description coverage the baseline is 3, but the description genuinely adds semantics the schema lacks, notably that edits target a step 'by its place on the card, 0 the first' (zero-based index) and where a submitted file is stored ('the customer's folder of the company's Drive'). It explains answer/picked/struck in narrative form, though parts duplicate the schema and the archaic phrasing reduces precision.

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 ('Approve a card as the signed-in person') and spells out the two concrete effects: a letter goes out and a change lands on the record. It implicitly differentiates itself from siblings like reject_a_card or set_a_card_aside by centering on the approval action, but never names those alternatives, and the heavy metaphor ('a letter leaves', 'on the wire's own rules') makes the purpose clear only after parsing.

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 gives a real precondition ('Only a signed-in person approves; a key cannot') and conditional behavior for when the action has no outward effect (test record, paused lead, unconfirmed owner). However, it never says when to choose approval over the sibling refusal/rejection tools, so the routing guidance is only implied.

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

ask_the_owners_to_choose_a_planAsk the owners to choose a planAInspect

Ask for the workspace to be put on a plan — book (Tommo SDR: the discovery call booked), close (book and Tommo Closer: the deal decided) or sign (close and Tommo Legal: the paper signed) — paid by the month or the year: answers the payment page's link and sends it to the workspace's owners in a letter. Nothing is charged by this call; the owner pays on that page. Refused while the owner has not confirmed their address, and for a workspace already paying for a plan (it moves between plans in the billing portal, which only the owner opens).

ParametersJSON Schema
NameRequiredDescriptionDefault
planYes
intervalNo

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only declare the generic mutation profile (readOnlyHint=false, idempotent=false, openWorld=true). The description adds real behavioral context beyond them: nothing is charged by the call, the owner pays on that page, a letter is sent to owners, and two specific refusal preconditions. This is exactly the value-add the annotations cannot supply.

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 side effect are front-loaded in the first clause, followed by refusals. The em-dash-heavy single-sentence construction is dense but every clause carries information; it could be split for readability without losing content.

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 output schema, the description covers side effects, preconditions, and the billing alternative. What it doesn't say is what the caller receives (the link itself? a confirmation?) or any permission requirements beyond owner confirmation, which leaves a minor 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 description coverage is 0% and both params are bare enums, so the description must compensate. It defines each plan tier ('book' = discovery call booked, 'close', 'sign') and covers interval ('paid by the month or the year'), though the interval wording is looser than the enum values and doesn't map 'month'/'year' explicitly.

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 (ask owners to choose a plan) with a concrete side effect: generating the payment-page link and sending it to the workspace's owners in a letter. The plan tiers and intervals are enumerated, so an agent can distinguish this from every sibling, none of which sends owner billing correspondence.

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

Usage Guidelines4/5

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

Gives clear when-not conditions (refused while the owner has not confirmed their address; refused for a workspace already paying) and names the alternative path (move between plans in the billing portal, which only the owner opens). It stops short of an explicit positive trigger statement, but the conditions are unambiguous.

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

block_a_senderBlock a senderA
DestructiveIdempotent
Inspect

Block a lead's sender, as Flow's Block does: every address the contact holds joins the blocked list, the lead is disqualified and deleted (it can be restored within 30 days), and the card named in card_id, if any, is refused with the block as its reason.

ParametersJSON Schema
NameRequiredDescriptionDefault
card_idNoThe card it is blocked from, to refuse it
contact_idYesThe contact whose addresses are blocked

TDQS

A4.2/5.0
Behavior5/5

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

Annotations declare the safety profile (destructiveHint=true, idempotentHint=true), and the description adds real substance beyond them: all of the contact's addresses are blocked, the lead is disqualified and deleted, deletion is recoverable within 30 days, and the card is refused with the block as the reason. This is exactly the destructive-scope context an agent needs.

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

Conciseness5/5

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

A single front-loaded sentence that states the action first, then enumerates its effects via a colon-delimited list. No filler, no restatement of the name, and every clause carries distinct information.

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

Completeness5/5

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

For a destructive mutation with no output schema, the definition covers the action, the full side-effect chain, reversibility window, and the optional parameter's effect, while annotations carry the idempotency and safety signals. An agent has enough to invoke it correctly without further context.

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 alone justifies a baseline 3. The description goes further by explaining card_id's role (the card is refused, using the block as the refusal reason) and confirming that both contact addresses and the optional card are affected, adding meaning beyond the schema's terse field descriptions.

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 ("Block a lead's sender") and pins the semantics to a known product behavior ("as Flow's Block does"). The action is unambiguous and clearly distinct from unblock_a_sender, but the description never explicitly contrasts itself with that sibling, so it stops 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 Guidelines3/5

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

There is no explicit when-to-use or when-not-to-use statement and no named alternative such as unblock_a_sender. Usage is only implied through the described consequences (disqualification, deletion, card refusal), which the agent must reason about itself.

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

bring_a_card_backBring a card backB
Idempotent
Inspect

Bring a card that was set aside back among the open cards now.

ParametersJSON Schema
NameRequiredDescriptionDefault
card_idYesThe card's id (from list_open_cards)

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare idempotentHint=true and destructiveHint=false, so the agent knows repeated calls are safe and nothing is destroyed. The description adds the state transition (set-aside -> open) but omits return shape, permission needs, or error conditions; with annotations carrying the safety profile, a 3 is fitting.

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 compact sentence with the object front-loaded; there is no filler beyond the somewhat redundant 'now', which technically adds nothing.

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 single-parameter state-toggle with no output schema and non-trivial annotations, the description is adequate but does not say how to locate set-aside cards or what a successful call returns, leaving minor 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 100% and the single card_id is documented in-schema as coming from list_open_cards, so the description adds nothing beyond the schema. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose4/5

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

States a clear verb+resource ('bring a card back') and pins the source state ('that was set aside'), which implicitly distinguishes it from the inverse sibling set_a_card_aside. It stops short of naming that sibling or the resulting state explicitly, so an agent must infer the pairing.

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 precondition ('that was set aside') hints at when the tool applies, and the destination ('among the open cards') clarifies the intended end state. However, there is no explicit when-to-use/when-not guidance and no named alternative, so usage is only implied.

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

cancel_a_scheduled_sendCancel a scheduled sendAInspect

Take back an approved letter that has not left yet — one waiting for the lead's hours, or the sweep: the card goes back to review, where it can be changed and approved again. A letter that has already left is answered as such.

ParametersJSON Schema
NameRequiredDescriptionDefault
card_idYesThe card's id (from list_open_cards)

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare not-read-only, not-destructive, not-idempotent; the description adds genuine behavioral context by explaining the outcome — the card returns to review where it can be changed and re-approved — and how the invalid-state case is handled. It doesn't discuss permissions or error text, but it goes beyond the annotations without contradicting them.

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 the core action before the edge case. The em-dash and colon construction is dense but every clause (the two waiting states, the already-left case) 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?

No output schema exists, so the description carries return semantics — it explains that the card goes back to review and that an already-left letter is reported as such. That covers the key outcome an agent needs for a single-parameter state-change 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?

With one parameter and 100% schema coverage, the schema already documents card_id and points to list_open_cards as its source. The description adds no further syntax or format meaning, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb+resource (take back an approved letter not yet sent) and sharpens the scope with two qualifying states: waiting for the lead's hours or the sweep. An agent can distinguish it from state changes like reject_a_card or stop_a_card by the condition attached, though no sibling is named explicitly.

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

Usage Guidelines4/5

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

Gives a clear when ('has not left yet' — waiting on lead hours or sweep) and a when-not ('a letter that has already left is answered as such'), so the agent knows the boundary. It stops short of naming an alternative tool for the already-sent case.

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

change_a_members_roleChange a member's roleA
Idempotent
Inspect

Change a member's role to admin, member or viewer. An admin never changes an owner; the only Owner is never demoted; ownership is not transferred here.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYes
user_idYesThe member's user id (from list_the_team)

TDQS

A3.7/5.0
Behavior4/5

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

With annotations already declaring the mutation as idempotent and non-destructive, the description adds real behavioral constraints: role changes apply only to non-owner members and ownership transfer is explicitly excluded. It still omits whether a permission level is required or whether the member is notified.

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 tightly packed sentences with the core action and valid targets front-loaded. The second sentence is dense but every clause carries a real constraint, so little 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 two-parameter mutation with annotations covering safety and idempotency and no output schema, the description supplies the key scope boundaries an agent needs. Remaining gaps (invoker permissions, side effects like notifications) are minor.

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%; user_id is documented in the schema, and the role enum is self-explanatory, but the description lists only admin/member/viewer while the enum also allows owner, so it neither explains the owner case cleanly nor adds syntax beyond the schema. Roughly baseline for partial 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?

States a specific verb (change) and resource (a member's role) with the target values, so an agent knows exactly what operation is performed. It does not explicitly distinguish itself from siblings like remove_a_member or invite_a_person, which keeps it 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 Guidelines3/5

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

The description gives genuine when-not guidance through scope limits (admins can't touch an owner, the sole Owner is never demoted, ownership transfer is out of scope), but it never routes the agent to an alternative tool or states prerequisites such as who may invoke it.

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

close_the_job_after_the_projectClose the job after the projectAInspect

End Tommo Closer's job «After the project» on a deal, as the signed-in person, with the reason: Tommo proposes no more letters, review requests or dates to contact this customer again on it. The deal's timeline says who closed it and why. Refused for a deal on which that job is not open.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonYesWhy the job is closed, in a few words
deal_idYesThe deal's id

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations, the description discloses that the action is taken as the signed-in person, that the deal's timeline records who closed the job and why, and that the call is refused when the job is not open. These are meaningful behavioral and audit details not available from the annotations alone.

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 front-loaded and each sentence contributes needed information. The first sentence is somewhat long and clause-heavy, which slightly reduces readability.

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

Completeness5/5

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

For a mutation tool with no output schema, the description covers the important behavioral context: authentication identity, required rationale, audit trail, and refusal condition. The annotations already cover read/write, idempotency, openness, and destructiveness, so nothing critical 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 description coverage is 100%, so the baseline is 3, but the description adds useful meaning by specifying what the required 'reason' should convey: that Tommo proposes no more letters, review requests, or dates to contact the customer again. It does not add any syntax or format detail for deal_id 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?

The description states a specific verb ('End') and a precise named job ('After the project') on a deal, which lets an agent distinguish it from sibling tools such as close_the_job_that_gets_a_deal_paid. The scope is narrow and 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 gives a clear precondition — the tool is refused when that job is not open — and describes the required rationale. However, it does not explicitly name an alternative tool or state when a different close-job tool should be preferred.

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

close_the_job_that_gets_a_deal_paidClose the job that gets a deal paidAInspect

End Tommo Closer's job «Get the deal paid» on a deal, as the signed-in person, with the reason: Tommo proposes no more invoices and reminders on it. The deal's timeline says who closed it and why. Refused for a deal on which that job is not open. With the_work_is_finished, the job is closed because the work is over: refused while an invoice of the deal is not paid, and otherwise Tommo Closer's job «After the project» opens on the deal.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonYesWhy the job is closed, in a few words
deal_idYesThe deal's id
the_work_is_finishedNoTrue when the job is closed because the work is finished and every invoice is paid: «After the project» then opens on the deal.

TDQS

A3.8/5.0
Behavior4/5

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

With annotations already declaring non-read-only, non-destructive, non-idempotent behavior, the description adds meaningful context beyond them: who performs the action (the signed-in person), the refusal conditions, that the reason is recorded on the deal's timeline, and the side effect that another job opens. This is strong disclosure 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 purpose is front-loaded in the first clause and every subsequent sentence carries actionable information (recording, refusals, branching effect). The phrasing is dense and slightly convoluted with the guillemet-quoted job names, but nothing is padding.

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

Completeness4/5

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

For a mutation tool with no output schema and full parameter coverage, the description covers actor, preconditions, refusal cases, side effects and the flag-dependent branch. It stops just short of stating whether the call can be retried or reversed, which is minor given the annotations.

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 beyond the schema: it explains that reason is recorded on the deal's timeline and that the_work_is_finished alters both the refusal rule and the resulting job that opens. That goes past restating the parameter descriptions.

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 (End) and a named resource (Tommo Closer's job «Get the deal paid» on a deal), so the agent knows exactly what is being terminated. It also clarifies the branch where the job «After the project» is opened instead, which distinguishes this action from its outcome-sibling, though it never explicitly names close_the_job_after_the_project as the alternative tool.

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?

Preconditions are stated ('Refused for a deal on which that job is not open') and the semantics of the_work_is_finished are given ('refused while an invoice of the deal is not paid'). However, there is no explicit guidance telling the agent when to choose this tool over close_the_job_after_the_project, leaving the caller to infer the relationship.

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

create_a_formCreate a Smart FormAInspect

Make a Smart Form as a draft (nothing is public until publish_a_form). Blank, or from a template: lead (Simple lead capture — name, work email, company, message); demo (Qualify, then show the booking calendar to pick a time); quote (Sales request with service + details; opens a deal and auto-replies); newsletter (Email-only subscribe with a welcome auto-reply). A template's words speak in this workspace's own name. Change its fields and words with update_form.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoThe form's name, as the forms list shows it
templateNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so safety and repeat-behavior are covered structurally. The description adds meaningful context the annotations cannot: the result is a non-public draft until publish, and template copy is rendered in the workspace's own name.

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?

Draft status and the publish/update routing are front-loaded, and the template definitions are packed into one dense sentence. It is long but nearly every clause adds distinguishing information, with only mild redundancy between the template list and the enum.

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 implies but never states what is returned (e.g. a form id needed to later publish or update). Otherwise it covers creation semantics, template behavior, and the lifecycle handoff adequately for a 2-parameter tool.

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% (the template enum has no description), so the description carries the burden and does so well, explaining exactly what each of lead/demo/quote/newsletter produces. This meaningfully exceeds what the raw enum conveys.

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 ('Make a Smart Form') and immediately scopes it as a draft, which cleanly distinguishes it from publish_a_form and update_form. It also enumerates the template variants by name, so an agent can match intent without opening the schema.

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

Usage Guidelines4/5

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

Explicitly says nothing is public until publish_a_form and routes field/word edits to update_form, giving clear context and two named alternatives. It does not spell out a 'when not to use' case (e.g. use duplicate_a_form to copy an existing form), so it falls just 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.

create_an_eventCreate an eventBInspect

Make an event type — a meeting a lead may book — with our default hours and booking window, published at once. Set its duration in minutes.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
duration_minutesNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare non-read-only, non-destructive, non-idempotent, open-world behavior. The description usefully adds that the event is created with default hours and booking window and is published immediately, which is real behavioral context, but it omits any warning that repeated calls (idempotentHint=false) create duplicates, and says nothing about permissions.

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, front-loaded sentences that get to the resource definition and creation behavior quickly. The second sentence about duration is slightly redundant with the parameter name, so it is not perfectly lean.

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 create tool with annotations covering the safety profile and no output schema, the description covers purpose, defaults, and immediate publication adequately. It still leaves gaps around the name parameter and duplicate-creation risk, so it is only minimally sufficient.

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 carry both parameters. It addresses duration ('in minutes') only, which is largely redundant with the parameter name duration_minutes, and never explains the name parameter or that neither is required per the schema. One of two params is left entirely 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+resource ('make an event type') and even defines what the resource is ('a meeting a lead may book'), which is more than the title gives. However, it does not distinguish itself from the many event siblings (save_an_event, publish_an_event, list_events, switch_tommo_work_on_an_event), so an agent must still infer which of these 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?

The phrase 'published at once' implicitly contrasts with publish_an_event, suggesting this tool skips a separate publish step, but that alternative is never named and no explicit when-to-use/when-not guidance is given. Usage is only implied.

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

create_a_pipelineCreate a pipelineAInspect

Make a pipeline, usable at once: it starts with the default pipeline's stages (else New, Won and Lost). Change them with save_a_pipeline.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false), so the description's job is to add state-change detail — and it does: the pipeline is usable at once and is seeded with the default pipeline's stages (New, Won, Lost). It does not mention permissions, return payload, or duplicate-name handling.

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 with the key behavioral fact (usable immediately, default stages) front-loaded and a routing pointer appended. No filler, no restatement of the title.

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 create tool with no output schema, the essentials are present: what is created, that it is immediately usable, and its initial stages. The only real gap is the semantics of the 'name' parameter, which neither the schema nor the description documents.

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% for the single required 'name' parameter, and the description never mentions it at all — no naming rules, uniqueness constraints, or format. The description compensates with behavioral context (default stages) but adds nothing about the parameter it takes.

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 pipeline') and immediately describes what the created object looks like. It also names the pipeline sibling it is not (save_a_pipeline) for stage edits, so an agent can distinguish create vs. modify 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 Guidelines3/5

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

The description implies when this is used (you need a new pipeline, usable immediately) and points to save_a_pipeline for changing stages. It does not state prerequisites, exclusivity, or when-not to use it versus other creation siblings, so guidance is implied rather than explicit.

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

create_contactCreate a contactBInspect

Create a contact, as the contact page does: primary_email is required, a valid address no other contact holds. The database opens the lead's Work a new lead job at birth. The change is signed by whoever calls.

ParametersJSON Schema
NameRequiredDescriptionDefault
phoneNo
companyNo
full_nameNo
primary_emailYes

TDQS

B3.4/5.0
Behavior4/5

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

Annotations cover safety (readOnly false, destructive false, idempotent false), so the description adds behavioral context: primary_email must be valid and unique across contacts, creation triggers a lead job, and the change is attributed to the caller. However, the lead-job phrasing ('opens the lead's Work a new lead job at birth') is cryptic and may confuse rather than clarify.

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, with purpose and key constraint front-loaded. The second sentence is awkward and unclear, but overall the definition is compact and avoids repetition. Some phrasing ('at birth', 'as the contact page does') adds noise.

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?

Given a 4-parameter create tool with zero schema descriptions and no output schema, the definition is incomplete. It omits optional fields entirely and does not describe return values or permissions. The side-effect disclosure is helpful but insufficient to fill the gaps.

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 carries full burden. It clarifies primary_email as required, valid, and unique, but says nothing about phone, company, or full_name. Three of four parameters remain undocumented, leaving a significant 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: 'Create a contact.' It also references parity with the contact page UI, which reinforces the purpose. The resource 'contact' clearly distinguishes it from sibling create tools like create_deal or create_a_form.

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 explicit when-to-use guidance or alternatives are provided. It implies the tool is for creating contacts, but doesn't say when to choose it over restore_contact, update_contact, or other contact-related siblings. The phrase 'as the contact page does' hints at UI parity but is not a usage rule.

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

create_dealOpen a dealAInspect

Open a deal for a contact, as the deals board does: on an open stage (resolve stage_id with list_stages — a won or lost stage is refused). The deal lands in that stage's pipeline; pipeline_id, when given, must be it. title defaults to «New deal», currency to USD.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
amountNo
currencyNo
stage_idYes
contact_idYes
pipeline_idNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare non-readOnly, non-destructive, non-idempotent. The description adds real behavioral facts beyond them: won/lost stages are rejected, the deal is placed in the resolved stage's pipeline, pipeline_id must match that pipeline, and title/currency defaults. It stops short of describing the returned handle or side effects like stage counters.

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?

Extremely dense but front-loaded: the create action and its stage constraint come first, defaults last. No filler sentences, every clause carries a constraint or a default.

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-param write tool with no output schema and no schema descriptions, the definition covers defaults, eligibility rules, and cross-parameter consistency. Missing only the return value (deal id?) and any rate/permission notes, which are minor for this shape.

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% across 6 params, so the description carries the load and largely does: it explains stage_id resolution, the pipeline_id consistency constraint, and defaults for title ('New deal') and currency (USD). amount is never characterized (units, sign, optionality), which is the one 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+resource ('Open a deal for a contact') and immediately scopes it to open stages, which distinguishes it from create_pipeline, create_contact, and the update_deal/move_deal siblings. An agent knows exactly what object is created without opening the schema.

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

Usage Guidelines4/5

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

Gives a concrete prerequisite ('resolve stage_id with list_stages') and an explicit refusal condition ('a won or lost stage is refused'), which routes the agent correctly. It does not compare against close siblings like update_deal or move_deal, but the create-vs-update distinction is 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.

create_workspaceOpen a Tommos workspaceAInspect

Open a Tommos workspace for a company, with a human owner. Needs no credential. Nothing leaves the workspace and nothing is charged until the owner confirms the address from the letter sent to it. The owner then signs in: connect this server and sign in in the browser as the owner, and the agent works as them. The API key answered here, once, is for an agent with no person behind it. One workspace per company domain; a public or throwaway mail domain is refused.

ParametersJSON Schema
NameRequiredDescriptionDefault
tommoNoThe tommo the owner came for: its trial is offered on the first screen after they confirm, never started for them.
companyYesThe company's name.
agent_nameNoYour name, as the key and the owner's letter will say it.
owner_nameNoThe owner's name.
owner_emailYesThe owner's work address, on the company's own domain.

TDQS

A3.9/5.0
Behavior5/5

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

Beyond the annotations, the description discloses substantial behavior: no credential required, data stays in the workspace, no charge until the owner confirms the letter, one workspace per domain, throwaway mail domains refused, and what the returned API key represents. The two-phase lifecycle (owner confirms then signs in, agent acts as them) is exactly the kind of context annotations cannot express, and nothing contradicts readOnlyHint=false or idempotentHint=false.

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

Conciseness4/5

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

The action is front-loaded in the first sentence and most subsequent sentences carry real constraints. A few sentences are dense and awkwardly constructed ('The API key answered here, once, is for an agent with no person behind it'), which slightly slows parsing, but there is little pure 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 five-parameter creation tool with annotations but no output schema, the description covers prerequisites, refusal conditions, billing, and the post-creation handoff to the owner. It leaves the response payload unstated, which is a modest gap given no output schema exists to carry that information.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all five parameters, including the 'tommo' enum and its trial semantics. The description adds contextual meaning (owner must be human, on the company's own domain; agent_name becomes the key's name) but no syntax or format detail beyond the schema, so the baseline of 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 opening sentence gives a specific verb and resource ('Open a Tommos workspace for a company, with a human owner'), so an agent immediately knows what is produced and for whom. It implicitly separates the human-owner path from the credentialless/agent-only path, but never names a sibling tool for contrast, so it stops short of full differentiation.

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: the prerequisites ('One workspace per company domain; a public or throwaway mail domain is refused') and 'Needs no credential' tell the agent when the call will succeed or be rejected. There is no explicit 'use this instead of X' routing against any of the many sibling tools, so guidance remains inferential.

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

delete_a_formDelete a Smart FormA
Destructive
Inspect

Delete a form for good, as the forms list's Delete does: its embed shows nothing from then on. The leads it brought stay on their records. Pass the form's id or slug.

ParametersJSON Schema
NameRequiredDescriptionDefault
formYesForm id or slug

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so safety is partly covered, but the description adds real behavioral detail the annotations cannot: the embed renders nothing afterward and existing leads remain attached to their records. It stops short of stating whether the deletion is reversible or what happens to form submission history, so it is 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?

Two tight sentences, with the permanence and the lead-retention reassurance front-loaded before the parameter note. The final 'Pass the form's id or slug' sentence duplicates the schema and is the only wasted line, keeping this just under 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?

For a single-parameter destructive tool with no output schema and annotations already covering the safety profile, the description supplies the two things an agent most needs: permanence and the effect on the embed and on leads. Reversibility and any post-delete response are unaddressed, so it is complete enough but not exhaustive.

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 parameter is already documented as 'Form id or slug'. The description's 'Pass the form's id or slug' restates the schema rather than adding accepted formats, lookup behavior, or error conditions, so it meets the baseline without exceeding it.

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 form') and immediately scopes it as permanent ('for good'), which separates it from siblings like update_form, duplicate_a_form, and get_a_form. It also pins the semantics to the familiar forms-list Delete, so an agent knows exactly which operation this mirrors.

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 conveys what this delete does versus the UI action and rules out the fear that deleting a form loses leads, which is genuine usage context. However, it never names alternatives or states when to prefer this over update_form, duplicate_a_form, or leaving the form published, so the guidance is implied rather than explicit.

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

delete_a_pipelineDelete a pipelineA
Destructive
Inspect

Delete a pipeline and its stages. Never the only pipeline, nor the default one, nor one that still holds open deals.

ParametersJSON Schema
NameRequiredDescriptionDefault
pipeline_idYesThe pipeline's id (from list_pipelines)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and non-idempotency, so the safety profile is covered. The description adds genuinely new behavior beyond them: the deletion cascades to child stages and is gated by three invariants. It stops short of saying whether deletion is hard or soft, or what error surfaces when a guard trips.

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 with zero filler; the action and its cascade come first, then the refusal conditions. Every clause carries information an agent needs.

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, single-parameter tool with no output schema, the description covers the essential facts: what is destroyed, what is destroyed alongside it, and when the call is illegal. Remaining gaps (failure behavior, required permissions, reversibility) are minor for a tool of this size.

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

Parameters3/5

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

There is only one parameter and schema description coverage is 100% ('The pipeline's id (from list_pipelines)'), so the schema already carries the semantics. The description adds no format or sourcing detail beyond it, making the baseline 3 appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Delete a pipeline') and adds non-obvious scope: the cascade to 'its stages'. This clearly separates it from create_a_pipeline and save_a_pipeline in the sibling list, and an agent knows exactly what entity is affected.

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 enumerates three situations where the call must not be made ('Never the only pipeline, nor the default one, nor one that still holds open deals'), which is strong when-not guidance. It does not, however, point to an alternative workflow (e.g. reassigning deals or changing the default first), so the agent is told what blocks it but not how to proceed.

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

delete_a_playbook_pageDelete a Playbook pageA
Destructive
Inspect

Delete a page and every page under it from the book, as the contents' Delete does; the tommos stop reading them. Answers how many pages left the book.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description still adds real behavioral value beyond them: the deletion cascades to all child pages, and it discloses the response ('how many pages left the book') for a tool with no output schema. Authorization requirements for the delete are not mentioned.

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

Conciseness4/5

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

Two tight sentences, front-loaded with the cascade behavior and followed by the result. The 'as the contents' Delete does' clause is a useful UI analogy; 'the tommos stop reading them' is quirky brand jargon but short and does convey the effect.

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, disclosing the return value is the right call, and the cascade warning covers the main hazard. What an agent still cannot learn here is whether the `id` is a page id vs. a book id, or what permissions the delete requires.

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

Parameters3/5

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

There is one parameter (`id`) at 0% schema description coverage, so the description should compensate but never mentions it. The meaning of `id` as the page identifier is trivially inferable from the tool name, which keeps this at minimum-viable rather than lower.

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 (delete a playbook page) and adds crucial scope: the cascade removes every descendant page. That scope distinguishes it from move_a_playbook_page, read_a_playbook_page, and write_a_playbook_page, though the siblings' names already carry most of the differentiation.

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 verb, and the cascade warning tells the agent the consequence of invoking it. However, there is no explicit when-to-use / when-not guidance and no pointer to alternatives (e.g. move or write) if the intent is to preserve the subtree.

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

delete_contactDelete a contactA
Destructive
Inspect

Delete a contact by id (soft delete: its history, bookings and deals stay until it is erased for good, 30 days later).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRow id (uuid)

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, so safety is covered, and the description adds genuinely new context: this is a soft delete, related history/bookings/deals survive, and permanent erasure happens after 30 days. It does not say whether a repeat call on an already-deleted id errors, which matters given idempotentHint=false.

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?

One front-loaded sentence with the destructive action first and the retention nuance in a tight parenthetical. Every clause earns its place and nothing is padded.

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

Completeness4/5

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

There is no output schema, and for a one-parameter delete the description supplies the key lifecycle facts (soft delete, 30-day retention, what survives). It omits auth requirements and the repeat-call/idempotency behavior, minor gaps given the annotations cover destructiveness.

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

Parameters3/5

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

Schema coverage is 100% and the single 'id' parameter is documented as a row uuid, so the schema does the heavy lifting. The description only restates 'by id' and adds no syntax or format detail beyond it — 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+resource ('Delete a contact by id') and even narrows the scope with the soft-delete parenthetical. It is clearly distinguishable from create_contact, get_contact and update_contact by verb alone, though it never acknowledges the restore_contact sibling that an agent may actually need.

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 the deletion is recoverable ('until it is erased for good, 30 days later'), which hints an undo path exists, but it never names restore_contact or states when deletion is the right action versus that alternative. 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.

delete_dealDelete a dealA
Destructive
Inspect

Delete a deal by id (soft delete: its history stays until it is erased for good, 30 days later; the deals screen can bring it back until then).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRow id (uuid)

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true, but the description adds genuinely new behavior: the delete is soft, history persists, erasure is final at 30 days, and recovery is possible via the deals screen. This is exactly the extra context an agent needs and cannot infer from the annotation.

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 front-loaded sentence with the action first and the retention nuance in parentheses; no wasted words.

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

Completeness5/5

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

For a one-parameter mutation with no output schema and annotations already declaring the destructive profile, the description supplies the one missing piece (soft-delete semantics and 30-day recovery window). Nothing needed to call it correctly is absent.

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

Parameters3/5

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

Only one parameter ('id') with 100% schema coverage, so the schema already documents its type and format (uuid). The description adds no syntax or format detail beyond 'by id'. Baseline 3 applies when the schema carries the load.

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 ('Delete a deal by id') and parenthetically clarifies the scope of deletion (soft, recoverable within 30 days). This distinguishes it from a hard-delete reading and gestures at restore_a_deal, though it does not name the 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?

It conveys when the action is reversible ('the deals screen can bring it back until then'), which is useful context, but gives no explicit when-to-use vs alternatives guidance, e.g. that restore_a_deal is the counterpart to undo it.

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

duplicate_a_formDuplicate a Smart FormAInspect

Copy a form as a new draft under a new link, as the forms list's Duplicate does: its fields, words and settings, named «(copy)», unpublished. Pass the form's id or slug.

ParametersJSON Schema
NameRequiredDescriptionDefault
formYesForm id or slug

TDQS

A3.9/5.0
Behavior4/5

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

Annotations declare a non-read, non-destructive, non-idempotent write with no open-world access, and the description adds real context beyond that: the original is not altered, the copy lands as an unpublished draft under a new link, and it is auto-named «(copy)». It stops short of saying what is returned (e.g. the new form's id/link) or any 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?

One dense sentence with the verb and resulting artifact front-loaded, plus a short imperative for the input. Every clause (what is copied, naming, unpublished state) earns its place, though the run-on list is slightly hard to parse.

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

Completeness4/5

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

For a one-parameter mutation with no output schema and full annotation coverage, the description covers what is created and its state, which is enough for an agent to call it correctly. The only real gap is whether the response exposes the new form's id/link, which the agent would need for follow-up calls like publish_a_form.

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

Parameters3/5

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

Schema coverage is 100% and the single parameter already documents 'Form id or slug'. The sentence 'Pass the form's id or slug' merely restates the schema, adding no format, validation, or lookup behavior. Baseline 3 is appropriate when the schema carries the full load.

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 ('Copy a form as a new draft') and enumerates exactly what is copied (fields, words and settings) and the resulting state (new link, named «(copy)», unpublished). This cleanly separates it from siblings like create_a_form, update_form, and get_form without needing schema inspection.

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 anchors usage by referencing 'as the forms list's Duplicate does', which implies it is for replicating an existing form rather than authoring a new one, and it names the required input. However, it never states when-not to use it (e.g. use create_a_form to start from scratch) or any prerequisite such as the target form needing to exist or be accessible.

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

export_the_workspaceExport the workspaceA
Read-onlyIdempotent
Inspect

The whole workspace as one zip archive: one JSON file per table and a README naming each file and what was left out and why. No secret is in it, and the files of the library are named, not copied. For the owner only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds real content-level disclosure: no secrets are included, and library files are referenced by name rather than copied, plus the README documents what was omitted and why. It stops short of stating cost, size, or whether the archive is delivered synchronously.

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 dense sentences, front-loaded with what the tool produces, followed by the security and access constraints. Every clause carries a distinct fact; nothing is padding.

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

Completeness5/5

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

With no parameters and no output schema, the description carries the load by describing the return artifact in detail (zip, per-table JSON, README of exclusions) and the ownership restriction. An agent has enough to call it correctly and set 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?

Zero parameters, so the baseline of 4 applies; there is nothing for the description to disambiguate at the argument 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?

States a specific verb (export) and resource (the whole workspace), then details the artifact: one zip with one JSON file per table plus a README. No sibling offers exporting, so there is no confusion with any other tool in the list.

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 only guidance is the eligibility gate 'For the owner only.' There is no alternative export/snapshot tool to route against, so no when-not-to-use statement is needed, but the description never says when exporting is appropriate versus reading the workspace state through read_the_workspace_state.

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

get_a_forms_embed_codeGet a Smart Form's embed codeA
Read-onlyIdempotent
Inspect

The code to paste into a page of the company's site where the form should appear — the one the form's Embed tab shows. Visitors see what was last published. keeps_its_room says whether the code holds the form's height on the page, so the page does not move when the form arrives; a form is measured in its editor, and measured_at says when.

ParametersJSON Schema
NameRequiredDescriptionDefault
formYesForm id or slug

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuine behavioral context beyond that: visitors see what was last published (not the draft), and that the code can hold the form's height via keeps_its_room, with the form measured in its editor.

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 output-focused information is front-loaded, and the two clauses about keeps_its_room and measured_at are relevant because no output schema exists. It is dense with em-dashes but each clause carries meaning; only mild trimming is possible.

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 explains return semantics (published-vs-draft visibility, height retention, measurement timing) that the agent could not otherwise know. It is nearly complete for a single-param read tool, though it never states the code's format (script tag vs iframe).

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?

Only one parameter (form, id or slug) with 100% schema description coverage, so the schema already documents it. The description adds no syntax or format detail for the identifier, matching the baseline 3 for high-coverage schemas.

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 identifies a specific resource — the embed code shown on a form's Embed tab — which distinguishes it from sibling get_form (form data) and list_forms. However, it is phrased as a noun phrase describing the output ('The code to paste into a page...') rather than stating a retrieval action, so the verb 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 Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance, and no sibling is named as an alternative. The description is entirely output-oriented, so an agent must infer that it should be called when the embed code is needed rather than get_form.

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

get_contactRead a contactA
Read-onlyIdempotent
Inspect

Fetch a single contact by id. Pass include_deleted:true to resolve an archived contact (e.g. one a booking still references).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRow id (uuid)
include_deletedNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds a real behavioral fact beyond them: archived contacts are excluded by default and require include_deleted:true to be returned. It stops short of saying what happens on a missing id.

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, zero filler, with the core action front-loaded before the parameter tip. Every clause 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 two-parameter read with no output schema, the definition covers purpose and the non-obvious parameter. Minor omission: no note on error/empty behavior when the id does not resolve.

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 is documented but include_deleted is bare. The description compensates by explaining exactly what include_deleted:true does and why an agent would set it, adding meaning the schema lacks.

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 ('Fetch') and a singular resource ('a single contact by id'), which cleanly separates it from the list_contacts, search_contacts and get_contact_activity siblings. An agent can pick it without opening the schema.

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

Usage Guidelines3/5

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

It supplies a genuine when-to-use condition for include_deleted ('to resolve an archived contact, e.g. one a booking still references'), but offers no guidance on choosing this over list_contacts, search_contacts or get_contact_activity. Usage is implied rather than routed.

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

get_contact_activityRead a contact's timelineA
Read-onlyIdempotent
Inspect

Timeline activities for a contact — an index of what happened, newest first. Each row carries source_table and source_id, naming the document it indexes (a letter, a meeting, a form submission). Long metadata values are excerpts.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows (default 50, max 500)
contact_idYesRow id (uuid)

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower; the description nonetheless adds real context by disclosing ordering (newest first), row composition (source_table/source_id), and that long metadata values are truncated excerpts.

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 no waste: the resource and ordering constraint are front-loaded, and the second sentence earns its place by defining the row shape and the truncation behavior.

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 takes on the return-shape burden and does so (rows indexing a document, newest-first, excerpt truncation). Annotations cover safety, so the only omission is pagination behavior beyond the limit parameter.

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

Parameters3/5

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

Schema description coverage is 100% for both parameters (contact_id uuid, limit default 50 max 500), so the schema does the heavy lifting. The description adds no meaning about contact_id or limit beyond that, making the baseline 3 appropriate.

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: the activity timeline for a contact, with ordering ('newest first'). It is distinguishable from get_contact (the record itself) and list_contacts by the 'what happened' framing, but it never explicitly names a sibling as the alternative.

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?

'An index of what happened' implies the browsing/history use case, so intent is inferrable, but there is no explicit when-to-use guidance and no mention of when to prefer get_contact or search_contacts instead. Adequate but with a clear gap.

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

get_dealRead a dealC
Read-onlyIdempotent
Inspect

Fetch a single deal by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRow id (uuid)

TDQS

C2.9/5.0
Behavior2/5

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

The annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is fully covered by structured data. The description adds nothing beyond that — no note on auth requirements, behavior for an unknown id, or what the fetched deal includes.

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 verb and resource, with no filler. It is arguably under-specified rather than verbose, but there is no 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?

With one fully documented parameter and annotations covering the safety profile, the core call contract is complete. However, there is no output schema and the description says nothing about the returned deal shape or failure behavior, leaving an agent unable to predict the response.

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

Parameters3/5

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

Schema description coverage is 100% with a single required 'id' parameter whose uuid format is documented in the schema. The description's 'by id' reiterates rather than extends that, 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 (Fetch) and resource (a single deal) and constrains scope to one record by id, so it reads clearly. It does not, however, explicitly distinguish itself from the many sibling read tools such as read_the_money_of_a_deal, get_contact, or list_deals, so an agent must infer the boundary.

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 statement, no mention of prerequisites, and no named alternative. 'By id' weakly implies you must already hold a deal id, but nothing tells the agent when to prefer this over list_deals or the other deal-related reads.

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

get_formRead a Smart FormA
Read-onlyIdempotent
Inspect

Read one Smart Form's full configuration by id or slug: fields, copy (title, subtitle, submit label, consent), what happens after submit (message / redirect / booking + event_type_id), notification and confirmation emails, captcha, deal creation, is_active.

ParametersJSON Schema
NameRequiredDescriptionDefault
formYesForm id or slug

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds real value by disclosing the depth and scope of what is returned (post-submit config, notification/confirmation emails, captcha, deal creation), which the annotations cannot convey.

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

Conciseness5/5

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

A single front-loaded sentence with the operation first and the enumerated payload after the colon; no filler sentences and nothing repeated from the annotations.

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 compensates by naming the returned configuration areas, and annotations cover the safety profile. It stops short of noting whether field identifiers needed for a follow-up update_form are included, 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 description coverage is 100% with a single documented parameter ('Form id or slug'), so the schema already carries the semantics. The description echoes 'by id or slug' without adding format, casing, or error behavior beyond the schema — baseline 3.

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

Purpose5/5

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

States a specific verb and resource ('Read one Smart Form's full configuration by id or slug') and then enumerates the exact contents returned (fields, copy, post-submit behavior, emails, captcha, deal creation, is_active). An agent can separate it from list_forms (plural listing) and update_form (mutation) 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 Guidelines3/5

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

Usage is implied by 'Read one ... by id or slug', which signals the single-record lookup case, but there is no explicit when-to-use versus list_forms, nor any stated prerequisite (e.g. needing a form id from list_forms first). Adequate but with a clear gap.

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

invite_a_personInvite a personAInspect

Invite a person to this workspace by their address, at a role: admin, member or viewer. The invitation letter comes from the workspace, naming who invited. Owner is never granted by an invitation, and an admin grants no more than admin.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYes
emailYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations cover the safety profile (not read-only, open-world, non-idempotent, non-destructive), and the description adds genuinely new behavior: the invitation email originates from the workspace, names the inviter, owner can never be granted, and an admin cannot grant beyond admin. It omits what happens on a duplicate invite or 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?

Two tight sentences with the action front-loaded and the privilege constraints compactly stated. Slightly awkward phrasing around "at a role" but no wasted content.

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 2-param mutation with no output schema, the description covers purpose and privilege limits adequately, but leaves gaps on caller authorization, duplicate-invite behavior, and whether an invitation identifier is returned.

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% and there are 2 required params, so the description must carry the load. It clarifies that email is the person's address and constrains the role semantics (owner excluded, admin ceiling), but the role values themselves are already in the enum and no format/validation detail for email is given.

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 ("Invite a person to this workspace") plus the mechanism (email address) and the role enumeration. It is clearly distinguishable from siblings like change_a_members_role or remove_a_member, though it never names them 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 tool's purpose implies when to use it, and the role-cap rules hint at its boundaries, but there is no explicit guidance on when this is preferred over change_a_members_role, nor any stated prerequisites (who may invite whom). Usage has to be inferred.

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

leads_reportReport the leads of a periodA
Read-onlyIdempotent
Inspect

One-call period report: contacts, bookings, and deals created in [from, to). Returns { window, contacts, bookings, deals, counts }. Bookings/deals are included only if the caller may also read bookings / deals. Bookings inline their contact.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoISO timestamp, e.g. 2026-07-01 or 2026-07-01T00:00:00Z
fromYesISO timestamp, e.g. 2026-07-01 or 2026-07-01T00:00:00Z
limitNoMax rows (default 50, max 500)

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive, and closed-world traits, so the bar is lower. The description adds real value beyond them: the exact return object shape and the auth-conditional rule that bookings/deals appear only if the caller may read those resources, plus the fact that bookings inline their contact.

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?

Extremely dense and front-loaded: purpose first, then return shape, then permission and nesting caveats. No sentence is wasted.

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 enumerating the returned fields; it also flags the permission-dependent inclusion of bookings/deals and the inlined contact. An agent has everything needed to call and interpret it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds genuine meaning the schema does not: the half-open interval notation [from, to) clarifies that 'from' is inclusive and 'to' is exclusive, which affects how the window is queried.

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 set: a period report covering contacts, bookings, and deals created in [from, to), with the 'one-call' framing distinguishing it from the list_contacts/list_bookings/list_deals siblings. It does not name those siblings explicitly, so it stops short of a full 5.

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

Usage Guidelines3/5

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

The 'one-call period report' phrasing implies this replaces multiple list calls, but there is no explicit when-to-use/when-not statement against list_contacts, list_bookings, or list_deals. Usage must be inferred from the scope description.

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

list_api_keysList the API keysA
Read-onlyIdempotent
Inspect

List this workspace's API keys: name, the first characters it is shown by, scopes, state (active, revoked, expired), last use and expiry. Never a secret.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuine value beyond them: it enumerates the returned fields including the enumerated state values (active, revoked, expired) and gives a security guarantee ("Never a secret"). It stops short of describing ordering or pagination.

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?

One tight sentence, front-loaded with the verb and resource, followed by the field list and the security caveat. No filler and nothing important buried.

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, so the description must carry the return-value burden, and it does by listing every meaningful field plus the secret-omission guarantee. An agent needs nothing further to call this correctly.

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

Parameters4/5

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

Zero parameters, so the schema imposes no semantic burden and baseline is 4. The description correctly does not pad with parameter talk.

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) and resource (this workspace's API keys) and enumerates the returned properties: name, shown prefix, scopes, state with the three possible values, last use and expiry. An agent can immediately distinguish it from siblings make_an_api_key and revoke_an_api_key.

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?

No explicit when-to-use or when-not-to-use statement, and no alternatives named. Usage is only implied by the workspace scoping and read-only framing, which an agent can infer but the description does not spell out.

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

list_blocked_sendersList the blocked sendersA
Read-onlyIdempotent
Inspect

The addresses this workspace has blocked: a form sent from one creates nothing, and a letter from one is not read as a lead. Each with why, when, and how many times it knocked since.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/non-destructive, so the safety profile is covered. The description adds genuinely non-obvious behavioral meaning: a form from a blocked sender creates nothing and an inbound letter is not treated as a lead, which is information the agent cannot get from the schema or annotations.

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 tightly packed sentence that front-loads the resource ('the addresses this workspace has blocked'). The metaphorical diction ('knocked', 'letter') costs a little precision but the sentence wastes no space.

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

Completeness4/5

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

With no parameters and no output schema, the description carries the burden of conveying the return contents, and it does name the per-entry fields (why, when, how many times). The remaining gap is that the figurative phrasing leaves return-field naming informal, but an agent has enough to call and interpret it.

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 schema is a closed empty object and nothing in the description contradicts that.

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 (listing the addresses the workspace has blocked) and even sketches what each entry contains. It does not explicitly distinguish itself from siblings like block_a_sender or unblock_a_sender, but the read-of-current-blocklist purpose 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?

Nothing says when to call this rather than block_a_sender or unblock_a_sender, and no prerequisites or exclusions are given. The description explains what a blocked sender means, which hints at context, but it offers no actual usage routing.

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

list_bookingsList the bookingsA
Read-onlyIdempotent
Inspect

List bookings, newest first, each with the invitee contact inlined (contacts: {primary_email, full_name}). Filter by created_after/created_before (ISO). Paginate with limit (default 50, max 500) + offset.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows (default 50, max 500)
offsetNoRows to skip, for pagination (default 0)
created_afterNoISO timestamp, e.g. 2026-07-01 or 2026-07-01T00:00:00Z
created_beforeNoISO timestamp, e.g. 2026-07-01 or 2026-07-01T00:00:00Z

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive behavior, so the description's job is to add context — and it does: default sort order (newest first), the inlined contacts shape, and pagination defaults (limit 50, max 500, offset). It does not say whether a total count is returned, but against a full annotation set this is solid added context.

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

Conciseness5/5

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

A single dense sentence that front-loads the resource and ordering, then covers the inlined shape, filtering, and pagination with no wasted words.

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 four-parameter list tool with no output schema, the description covers ordering, result shape (inlined contact), filtering, and pagination adequately. Only minor gaps remain, such as whether a total count or next-page indicator accompanies results.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all four parameters including the ISO timestamp examples and defaults. The description largely restates those defaults and the ISO format, adding little beyond the schema, which matches the baseline 3 for a well-documented 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 ('List bookings') plus meaningful qualifiers: sort order ('newest first') and the inlined invitee contact shape. The resource is distinct from siblings like list_contacts and list_events, though it never explicitly contrasts itself 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 Guidelines3/5

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

Usage is implied through the filtering and pagination instructions, which tell an agent how to narrow and page results, but there is no explicit statement of when to reach for this tool versus alternates, nor any prerequisites or exclusions.

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

list_contact_fieldsList the contact fieldsA
Read-onlyIdempotent
Inspect

List the workspace's own fields on its contacts — each field's id, name, type and choices — the ids update_contact's fields take and get_contact's fields are keyed by.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare the safe read-only, idempotent, closed-world profile, so the safety bar is met structurally. The description goes further by disclosing the returned shape ('each field's id, name, type and choices'), which is genuine added value given there is no output schema. It stops short of noting pagination or ordering guarantees.

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, front-loaded with the action and resource, with the trailing clause earning its place by linking the output to the two consumer tools. No filler.

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

Completeness4/5

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

With no output schema, the description carries the burden of describing returns and does so adequately (id, name, type, choices). For a zero-parameter read of workspace configuration it is essentially complete; only minor omissions like ordering or permission requirements remain.

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 with nothing for the description to clarify. The schema's additionalProperties: false is consistent with the description's claim of an unfiltered workspace-wide listing.

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

Purpose5/5

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

States a specific verb and resource (list the workspace's contact fields) and immediately scopes it ('the workspace's own fields'), then ties the output to the sibling tools that consume those ids (update_contact, get_contact). An agent can distinguish this from list_contacts or get_contact 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?

Usage is clearly implied: call this to discover the field ids that update_contact accepts and that get_contact results are keyed by. There is no competing sibling tool offering the same listing, so explicit when-not guidance is less critical, but no exclusions or prerequisites (e.g., auth level) are stated.

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

list_contactsList contactsA
Read-onlyIdempotent
Inspect

List contacts, newest first. Filter with created_after/created_before (ISO) for 'leads in a period'; include_deleted to also return archived ones. Paginate with limit (default 50, max 500) + offset. Rows carry lead_status, paused_at (outreach paused), is_test (a test record acts on nothing outward), timezone, is_finder, utm_* and attributes (the submitted form fields).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows (default 50, max 500)
offsetNoRows to skip, for pagination (default 0)
created_afterNoISO timestamp, e.g. 2026-07-01 or 2026-07-01T00:00:00Z
created_beforeNoISO timestamp, e.g. 2026-07-01 or 2026-07-01T00:00:00Z
include_deletedNoAlso return soft-deleted (archived) contacts

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower, and the description still adds real behavior: ordering, pagination bounds, and the meaning of returned fields like is_test ('acts on nothing outward') and paused_at ('outreach paused'). That is substantive context beyond the structured fields.

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, then filtering, pagination, and return fields follow in a logical order with no filler. The pagination sentence duplicates the schema's default/max wording almost verbatim, a minor redundancy that keeps it from 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?

With no output schema, the description correctly takes on the burden of describing returned rows (lead_status, utm_*, attributes, etc.), which is exactly what an agent needs. It stops short of telling the agent how to detect the end of pagination (no total count mentioned), a small gap for a list endpoint.

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 genuine meaning over the schema: it frames created_after/created_before as the way to answer 'leads in a period' and groups the params by task (filter / paginate). The limit/offset and include_deleted wording largely restates the schema, keeping this below a 5.

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

Purpose4/5

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

States a specific verb and resource (list contacts) plus the default ordering (newest first), which immediately tells the agent what it gets back. It is clear but never differentiates itself from the prominent sibling search_contacts, so an agent still has to infer which one 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?

It offers usage context for the filters ('for leads in a period') and explains include_deleted, but that is parameter-level guidance rather than tool-selection guidance. It never states when to use this tool instead of search_contacts or get_contact, leaving the actual routing decision implicit.

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

list_dealsList dealsA
Read-onlyIdempotent
Inspect

List deals, newest first. Filter by stage_id, pipeline_id, created_after/created_before (ISO). Paginate with limit (default 50, max 500) + offset. Rows carry client_name (the end client, when the contact is a finder) and lost_reason.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows (default 50, max 500)
offsetNoRows to skip, for pagination (default 0)
stage_idNo
pipeline_idNo
created_afterNoISO timestamp, e.g. 2026-07-01 or 2026-07-01T00:00:00Z
created_beforeNoISO timestamp, e.g. 2026-07-01 or 2026-07-01T00:00:00Z

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior, so the description isn't carrying the safety burden. It still adds real value: the default sort order, pagination defaults and hard max, and the semantics of returned fields (client_name is the end client when the contact is a finder, plus lost_reason) — behavioral context the annotations cannot express.

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

Conciseness5/5

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

Four tight clauses, front-loaded with what the tool returns and the sort order, then filtering, then pagination, then row semantics. 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?

With no output schema, the description usefully characterizes the returned rows (client_name, lost_reason), and it covers filtering, sorting, and pagination constraints. Only the meaning of the two untyped ID filters is left unresolved, 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 67% and the schema already documents limit, offset, and the ISO format for created_after/before; the description largely restates these. stage_id and pipeline_id are listed but neither the schema nor the description explains what values they accept, so the description doesn't compensate for the 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 concrete verb+resource ('List deals') and adds the ordering ('newest first'), so an agent knows exactly what it gets back. It does not differentiate itself from siblings like get_deal or list_pipelines, but as the canonical deal-listing tool the intent is unambiguous.

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

Usage Guidelines3/5

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

Usage is implied through the filter and pagination clauses, which tell the agent how to narrow and page results, but there is no explicit when-to-use vs. when-to-use-an-alternative guidance and no mention of get_deal/search_contacts as differing options.

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

list_eventsList the eventsB
Read-onlyIdempotent
Inspect

List event types (the meetings a lead may book) in this organization.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows (default 50, max 500)

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered structurally. The description adds domain context (what an event type represents) but says nothing about pagination behavior, defaults, or organizational scoping beyond 'in this organization', which the schema's limit field does not cover.

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 front-loaded sentence with the resource named first and the clarifying parenthetical immediately after. Zero wasted words.

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

Completeness4/5

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

For a read-only, single-optional-parameter list tool with no output schema, the description covers scope adequately. Only minor gaps remain, such as return shape expectations or whether results are paginated.

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

Parameters3/5

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

Schema description coverage is 100% with a single optional 'limit' parameter fully documented (default 50, max 500). The description adds no parameter meaning, so the baseline 3 for schema-documented params is appropriate.

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 clear verb ('List') and resource ('event types'), and the parenthetical 'the meetings a lead may book' disambiguates the domain term. It does not explicitly contrast with nearby siblings such as list_bookings or create_an_event, 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 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 use this tool versus alternatives like list_bookings, read_a_meeting, or create_an_event, and no prerequisites or exclusions. Usage is only inferable from the read-only listing verb.

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

list_formsList the Smart FormsB
Read-onlyIdempotent
Inspect

List Smart Forms in this organization, with whether each is published and whether its «Tommo work» switch opens a tommo's job on the leads it brings (agent_enabled, agent_job).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows (default 50, max 500)

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds useful context about which fields each form record carries, but says nothing about pagination 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?

A single sentence that front-loads the scope ('in this organization') and the returned attributes. The phrasing around the «Tommo work» switch and agent_enabled/agent_job is slightly convoluted 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?

For a simple read-only list tool with no output schema and only one well-documented parameter, the description is largely adequate, but it omits return ordering/pagination behavior and any hint about how many forms to expect, leaving minor 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?

There is one optional parameter (limit) with 100% schema description coverage, so the schema already explains the default of 50 and max of 500. The description adds no syntax or semantics beyond what the schema provides; baseline 3 is appropriate.

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 ('List') and resource ('Smart Forms') scoped to 'this organization', and names the attributes returned (published, agent_enabled, agent_job). It is clearly distinguishable from get_form/create_a_form by verb, though it never explicitly contrasts 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?

Usage is only implied by the verb 'List'; there is no statement of when to prefer this over get_form, get_a_forms_embed_code, or the other list_* siblings, 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.

list_open_cardsList the open cardsA
Read-onlyIdempotent
Inspect

The cards waiting for a person's decision, newest first: each with its id, the lead or deal it is on, what kind it is, its title and why the tommo filed it. Open one with read_a_card.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
contact_idNoOnly this lead's cards

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent and non-destructive, so safety is covered; the description adds ordering (newest first) and the shape of each returned record, which the annotations do not. It does not mention pagination or default limits.

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 dense sentence with the resource description front-loaded, followed immediately by the routing hint. No wasted words.

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 describes the return fields and ordering, which is the main gap it must fill. The only shortfall is the unexplained limit parameter, minor for a 2-parameter list tool.

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% — limit is undocumented in both schema and description — and the description never mentions either parameter or how filtering by contact_id interacts with the pending-decision scope. It 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.

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 — cards waiting for a person's decision — and enumerates the returned fields (id, lead/deal, kind, title, filing reason). It is clearly distinguishable from siblings like read_a_card or approve_a_card.

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 tells the agent this is the queue of pending-decision cards and routes to read_a_card to open one, giving clear context for when to call it. It stops short of exclusions, e.g. whether done/closed cards are retrieved elsewhere.

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

list_pipelinesList the pipelinesA
Read-onlyIdempotent
Inspect

List deal pipelines in this organization (id, name). Pair with list_stages to resolve a stage_id.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered structurally. The description adds the returned fields (id, name) but says nothing about pagination, ordering, or permissions, appropriate but not rich.

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 front-loaded sentence that names the resource, scope, and output fields, followed by a useful chaining hint. No wasted words.

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 input parameters and no output schema, the description usefully discloses the returned shape (id, name) and the natural follow-up call, which is what an agent needs. Slight gap: no indication of ordering or whether the list can be empty.

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 schema carries no semantics to compensate for; baseline 4 applies. The description's mention of id/name refers to output, not input, so nothing is misleading.

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 (List) and resource (deal pipelines) scoped to the organization, and specifies the returned fields (id, name). It is distinguishable from write-oriented siblings like create_a_pipeline/delete_a_pipeline, though it stops short of explicitly naming what it is not.

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

Usage Guidelines4/5

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

Gives a concrete usage context: pair with list_stages to resolve a stage_id, which tells the agent this is a chaining/lookup step. No explicit exclusions or when-not-to-use conditions are given.

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

list_sending_domainsList the sending domainsA
Read-onlyIdempotent
Inspect

The domains this workspace sends from, each with whether it is proven and the DNS TXT record that proves it.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and a closed world, so the safety profile is covered structurally. The description adds genuine behavioral value by disclosing the shape of each returned item — every domain carries a proof flag and the DNS TXT record — which matters because there is no output schema.

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

Conciseness4/5

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

A single tight sentence with no filler, and the two most decision-relevant details (proven status, TXT record) are placed at the end where they are easily scanned. It reads as a fragment rather than an actionable instruction, which costs it 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?

With no output schema, the description steps in to describe the return values, which is the most important gap to fill for a zero-parameter list tool, and annotations handle the safety profile. It is slightly thin on whether unproven or merely pending domains are included, but an agent can call it correctly with what is here.

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 of 4 applies; there is no parameter syntax for the description to explain. The description correctly implies no input is required to list the domains.

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 identifies the exact resource (the domains this workspace sends from) and the fields returned per item (proven status and the proving DNS TXT record), so an agent knows precisely what it gets. It never distinguishes itself from siblings like add_a_sending_domain, remove_a_sending_domain, or prove_a_sending_domain, and it is written as a noun phrase rather than a verb+resource statement.

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 prerequisites, and no pointer to the closely related prove_a_sending_domain, add_a_sending_domain, or remove_a_sending_domain tools. The only hint that this is a read-only inventory view comes from the name and annotations, not the description text.

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

list_stagesList the stages of the pipelinesA
Read-onlyIdempotent
Inspect

List pipeline stages in order (id, name, position, kind: open/won/lost). Resolve a stage_id HERE before create_deal / move_deal — never guess it.

ParametersJSON Schema
NameRequiredDescriptionDefault
pipeline_idNoOptional — limit to one pipeline

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so safety is covered. The description adds value beyond that by disclosing the ordering guarantee and the full field set (position, kind taxonomy), though it doesn't cover pagination or behavior with no pipeline_id beyond what the schema says.

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, zero filler. The return-shape information is front-loaded and the action guidance follows immediately, each earning its place.

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

Completeness5/5

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

There is no output schema, so the description correctly supplies the returned field list and ordering, and it flags the tool's role as a prerequisite for stage-dependent writes. 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?

With a single optional parameter and 100% schema description coverage, the schema already documents pipeline_id as an optional narrowing filter. The description adds no syntax or semantics beyond that, so the baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('List pipeline stages in order') and enumerates the returned fields (id, name, position, kind: open/won/lost), which clearly distinguishes it from the nearby list_pipelines and get_deal siblings. An agent knows exactly what it gets back.

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 to call this tool to resolve a stage_id before create_deal / move_deal and warns 'never guess it'. It names the dependent alternatives and the condition that triggers this call, leaving nothing to inference.

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

list_text_changes_offeredList the changes of a tommo's texts offeredB
Read-onlyIdempotent
Inspect

The changes Tommo offered this workspace's texts — «How it writes» or an act's page — where a reason people gave on its cards repeated in a week: each with the text it is for, before (the text as it stood), after (the whole new text), why, and the reasons it rests on with the cards behind them. The open ones by default; all: true lists the decided ones too. A person takes, edits or refuses one.

ParametersJSON Schema
NameRequiredDescriptionDefault
allNoAlso the offers already taken, refused, or with nothing to offer
limitNo

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description goes beyond that by enumerating what each returned offer contains (text it applies to, before, after, why, supporting reasons with cards) — meaningful content context for a tool with no output schema.

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

Conciseness2/5

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

The whole definition is a single sprawling run-on sentence stuffed with quoted fragments and neologisms, making it hard to parse and not front-loaded. The one operationally important clause ('The open ones by default; all: true...') is buried mid-stream rather than leading.

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, zero-required read tool with no output schema, the description adequately conveys what a returned offer looks like and the default filtering behavior. It is incomplete on the `limit` parameter and on pagination/ordering, which an agent would need to call it precisely.

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%: `all` is documented in the schema and the description merely restates it, while `limit` is undefined in both the schema and the description. The agent is given no semantics at all for the limit parameter, so the description 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?

The description names a specific resource — the text changes Tommo offered for this workspace's texts, with the underlying repeated-reason filter called out. It is distinguishable from the decision siblings (take/refuse) it alludes to. The idiosyncratic vocabulary («How it writes», 'Tommo', 'cards') makes the resource harder to pin down than it needs to be, 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 states the default scope ('the open ones by default') and the flag that widens it ('all: true lists the decided ones too'), which is genuine routing guidance for the `all` param. However, it never names the sibling tools (take_a_text_change, refuse_a_text_change) an agent should use once it has identified an offer, so the when-to-use-vs-alternatives guidance is only implied.

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

list_the_teamList the teamA
Read-onlyIdempotent
Inspect

The people of this workspace, as Settings → Team lists them: each one's user id, name, address and role (owner, admin, member, viewer).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds real value beyond that by disclosing the shape and authority scope of the result set (id, name, address, role, with the four role values), which tells the agent what it can do with the output.

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 front-loaded sentence identifies the collection first and the payload second, with no filler. The 'as Settings → Team lists them' clause is slightly wordy but it does anchor the resource to a UI the agent may already know.

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 parameters, the description carries the return-value burden and discharges it (fields plus the role enum). The only thin area is the absence of any dependency note on who may view the team, but as a safe read-only listing 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?

The tool takes no parameters, so per the rubric the baseline is 4. The schema coverage is 100% and there are no arguments whose meaning could be ambiguous.

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 (list) and resource (the workspace team), and enumerates what each entry contains: user id, name, address and role. It implicitly distinguishes itself from the adjacent list_contacts/search_contacts tools by scoping to 'people of this workspace', though it never names 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 Guidelines3/5

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

Usage is only implied by the resource it returns; there is no statement of when to prefer this over list_contacts or change_a_members_role, and no prerequisites or exclusions. For a zero-parameter read tool the implied usage is adequate, but the description does no routing work.

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

list_tommosList the tommos and their jobsA
Read-onlyIdempotent
Inspect

The tommos of this workspace: each with whether it is switched on, its jobs (what starts each, what it delivers) and each job's own acts — the only acts a run on that job may take.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so safety is covered. The description earns credit by disclosing the shape of the returned payload (switched-on state, jobs, triggers, deliverables, permitted acts), which matters because no output schema exists; it does not, however, mention result size, pagination, or whether inactive tommos are included.

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, front-loaded on the resource being listed. The nested parentheticals ("what starts each, what it delivers") and the trailing em-dash clause make it dense to parse, but every phrase 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 zero-parameter read with no output schema, the description does the necessary work of outlining the return structure and the scope (this workspace, consistent with openWorldHint=false). It is slightly short of complete in that it never says how many tommos to expect or how to interpret a job's "acts" relative to read_an_act.

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 there is nothing for the description to disambiguate; baseline 4 applies. The description correctly conveys that the result is workspace-scoped and unfiltered.

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 resource (the tommos of this workspace) and enumerates exactly what each entry contains: on/off state, jobs with their triggers and deliverables, and each job's permitted acts. It is clearly a bulk read rather than a single-item read, which implicitly separates it from read_a_job and read_an_act, but it never names 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 Guidelines2/5

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

There is no guidance on when to reach for this tool versus read_a_job, read_an_act, or the switch_* tools that also touch tommos. No prerequisites, no scoping advice, no indication of cost or size of the result set. The agent must infer the use case entirely from the resource name.

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

make_an_api_keyMake an API keyAInspect

Make an API key for an agent with no person behind it, with only the scopes it needs. The secret is answered once and kept nowhere. A scope whose write only an admin grants (activities:write, settings:write, tommos:write) needs an admin or the owner.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesWhat the key is for, as the owner will read it in Settings
scopesYesThe scopes; a write scope includes its read
expires_in_daysNoDays until it stops working; leave out for a key that does not expire

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare non-readOnly, non-destructive, non-idempotent, so safety is covered. The description adds genuinely useful behaviour the annotations cannot carry: the secret is returned once and never stored, and writes on activities/settings/tommos scopes require an admin or owner. It stops short of describing what the response contains or whether the key can be re-fetched later.

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, front-loaded with the purpose before the caveats. The phrasing ('answered once and kept nowhere') is slightly informal but carries meaning economically; nothing is redundant with the schema.

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

Completeness4/5

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

For a mutation tool with no output schema, the description covers the essential behaviour an agent needs: the one-time secret delivery and the permission gate on certain scopes. Missing only return-shape and expiry interaction detail, which is minor given the schema documents expires_in_days.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond it: it flags a subset of write scopes (activities:write, settings:write, tommos:write) as admin-granted, information present nowhere in the enum or the individual property descriptions. This materially helps scope selection.

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 an API key') and narrows scope to the agent-with-no-person case, which cleanly separates it from list_api_keys and revoke_an_api_key in the sibling set. An agent can identify the operation without opening the schema.

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

Usage Guidelines4/5

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

Gives a clear condition for use ('for an agent with no person behind it, with only the scopes it needs') and a prerequisite for privileged write scopes (admin or owner). It does not explicitly name list_api_keys/revoke_an_api_key as the alternatives, so it stops short of full routing guidance.

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

mark_an_invoice_as_paidMark an invoice as paidA
Idempotent
Inspect

Mark an invoice of a deal as paid, as the signed-in person: a payment that reached the company outside its invoice system. The mark stands whatever the invoice system says later, the deal's timeline names the person, and the job that gets the deal paid looks at it now. Refused for an invoice that was cancelled or never made.

ParametersJSON Schema
NameRequiredDescriptionDefault
invoice_idYesThe invoice's id (from read_the_money_of_a_deal)

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare non-read-only, idempotent, non-destructive, closed-world. The description adds genuine behavioral context beyond them: the mark persists regardless of later invoice-system state, the deal timeline records the signed-in person as the actor, and downstream automation ("the job that gets the deal paid") acts on it immediately. It is consistent with idempotentHint=true, though the phrasing is somewhat impressionistic.

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 opening clause, and each subsequent sentence carries information (durability, attribution, side effect, refusal). The phrasing is somewhat stylized and indirect ("the job that gets the deal paid looks at it now"), which slightly obscures the payload but wastes little.

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

Completeness5/5

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

For a one-parameter mutation tool with no output schema, the definition supplies purpose, semantic nuance, side effects, attribution, and refusal conditions, while annotations cover the safety profile. Nothing an agent needs to call it correctly is missing.

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

Parameters3/5

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

Schema coverage is 100% and the sole parameter's origin is documented ("from read_the_money_of_a_deal"). The description adds no syntax or format detail beyond the schema, so the baseline of 3 applies when the schema does the heavy lifting.

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

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 an invoice of a deal as paid") and disambiguates the write from the read sibling by describing the underlying scenario (a payment that reached the company outside its invoice system). It never explicitly contrasts itself with siblings like read_the_money_of_a_deal or close_the_job_that_gets_a_deal_paid, so full sibling differentiation is absent.

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 (an out-of-band payment) and an explicit exclusion ("Refused for an invoice that was cancelled or never made"). It stops short of naming alternative tools for those excluded cases, so it is a clear context rather than a full when/when-not/alternatives routing.

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

move_a_playbook_pageMove a Playbook pageA
Idempotent
Inspect

Move a page, with the pages under it, to another place in the book: under parent_id (none: the book's root), at index among its siblings (0 the first). A page never moves inside itself.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
indexNo
parent_idNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare it is non-destructive, idempotent, and closed-world; the description adds genuinely new behavioral facts beyond those, namely that the entire subtree moves with the page and that a page can never be moved inside itself. It does not address permissions or failure modes, so it stops short of a 5.

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

Conciseness4/5

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

A single dense sentence that front-loads the action and then defines the two optional parameters in order. Every clause carries information, though the nested parentheticals make it slightly harder to parse than it could 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 3-parameter mutation tool with full annotation coverage and no output schema, the description supplies the key behavior an agent needs (subtree movement, root default, self-nesting prohibition). Only the id parameter's meaning is left implicit.

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 carry the parameter burden and largely does: parent_id 'none' means the book root, quote index '0 the first' defines ordering among siblings, and id is understandably the page to move. The id parameter is only implicitly explained, keeping it from a 5.

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

Purpose5/5

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

States a specific verb (move) and resource (a Playbook page), scoped to relocation within the book, which cleanly distinguishes it from siblings like delete_a_playbook_page, add_playbook_pages, and write_a_playbook_page.

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 (reorganizing where a page sits in the book) and no sibling performs the same move, but it never explicitly states when to use this versus alternatives such as delete/re-add.

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

move_dealMove a deal to a stageA
Idempotent
Inspect

Move a deal to a stage (resolve stage_id with list_stages; the pipeline follows the stage). A move to a lost stage needs lost_reason, one of the organization's lost reasons — it is refused otherwise, naming them. A move to won or lost withdraws the deal's open cards.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRow id (uuid)
stage_idYes
lost_reasonNoWhy, when the stage is lost — one of the organization's lost reasons

TDQS

A4.1/5.0
Behavior4/5

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

Goes beyond annotations by disclosing a real side effect (a move to won/lost withdraws the deal's open cards) and a failure mode (a lost move without a valid lost_reason is refused, naming the valid reasons). Annotations already cover safety/idempotency, so this added behavioral context is the description's real contribution.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the core action, then the prerequisite (list_stages), then conditional requirements and side effects. No wasted wording.

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 covers the mutation, its prerequisites, its refusal behavior, and its side effect, which is sufficient for correct invocation. A note on auth/permissions or the response shape would make it complete, but nothing critical 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 67%, and the description meaningfully extends the schema: lost_reason must be one of the organization's lost reasons, and stage_id is resolved via list_stages. This adds constraint semantics beyond the bare field definitions.

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 (move a deal to a stage) and adds the key relationship that the pipeline follows the stage, which helps disambiguate it from update_deal. It's clear on its own, though it doesn't explicitly contrast itself with the sibling update_deal or create_deal.

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?

Routes the agent to list_stages to resolve stage_id and implies read_the_lost_reasons for valid lost reasons. It states the condition (move to lost stage) under which lost_reason is mandatory, but doesn't spell out when to prefer this over update_deal.

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

pause_outreachPause outreach to a leadA
Idempotent
Inspect

Pause outreach to a lead: the one stop Tommo obeys. Nothing more is written to them — an approved letter included — until outreach is resumed. The lead's status does not change. note says until when or why.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
contact_idYesThe contact's id

TDQS

A4.1/5.0
Behavior4/5

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

Annotations only cover the safety profile (idempotent, non-destructive, not read-only). The description adds real behavioral substance beyond them: it explains exactly what stops ('Nothing more is written to them — an approved letter included') and what does NOT change (lead status). This is meaningful effect disclosure, though it omits auth/rate-limit context.

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

Conciseness4/5

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

Three tight sentences, front-loaded with the core action. The 'one stop Tommo obeys' phrasing is slightly idiosyncratic but compactly conveys that this is a hard block; every sentence contributes.

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

Completeness4/5

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

For a 2-param mutation with an annotation set and no output schema, the description is nearly complete: it covers the purpose, the effect, the status invariant, and the one undocumented parameter. Missing only explicit routing to resume_outreach and any return/confirmation detail.

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% — contact_id is documented in-schema but note is not. The description compensates by explaining the note param ('note says until when or why'), which is the only gap in the schema, so it adds genuine meaning over what the schema provides.

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

Purpose5/5

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

States a specific verb (pause) and resource (outreach to a lead) in the first clause, clearly distinct from the sibling resume_outreach. An agent can immediately tell this is a suppression action on a contact's outreach.

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 the use case (stop outreach until resumed) and gives guidance for the note param ('until when or why'), but never states explicit when-to-use/when-not or names resume_outreach as the counterpart for the reverse condition. Usage is inferable 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.

propose_playbook_pagesPropose Playbook pages from a documentAInspect

Read one company document into proposed Playbook pages, as the Playbook's Import does: the model reads it and proposes pages of facts, placed among the book's pages. Nothing is written: add the pages you keep with add_playbook_pages. text is the document's text (up to 150,000 characters are read); hint says what the document is; place_under is a page id, or root, or empty to let the reading place them. The workspace's model spend counts it.

ParametersJSON Schema
NameRequiredDescriptionDefault
hintNo
textYes
place_underNo

TDQS

A4.3/5.0
Behavior4/5

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

Beyond the annotations, the description discloses the 150,000-character read limit, that the workspace's model spend is consumed, and that nothing is persisted ('Nothing is written'). These are meaningful behavioral facts (cost, limits, no side effects on data) that the annotations alone don't convey.

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

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 rest strings supporting details in one dense paragraph with minimal waste. It is a bit packed, but every sentence 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?

With no output schema, the description still explains what is produced (proposed pages of facts placed among the book's pages) and the cost/limits of the call. It is complete enough for an agent to invoke correctly, though the shape of the proposal result could be clearer.

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 carries the burden and covers all three params: text is the document body with a char cap, hint describes what the document is, and place_under accepts a page id, 'root', or empty to auto-place. This compensates well for the absent schema descriptions, though it doesn't specify formats like how page ids look.

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 gives a specific verb+resource - reading one company document and proposing Playbook pages - and explicitly contrasts with add_playbook_pages ('Nothing is written: add the pages you keep with add_playbook_pages'). An agent can distinguish this from the sibling write tool 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?

It states the operating context clearly ('as the Playbook's Import does') and routes the agent to add_playbook_pages for the follow-up write step. What's missing is guidance on when NOT to use this versus other document-reading tools, but the key propose-vs-write decision is explicit.

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

prove_a_sending_domainProve a sending domainA
Idempotent
Inspect

Look up the domain's DNS TXT record now. Found, the domain is proven for this workspace (unless another proved it first); not found, it says what was looked for. DNS can take up to an hour to show a new record.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe sending domain's id (from list_sending_domains)

TDQS

A3.7/5.0
Behavior4/5

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

Adds genuine behavioral context beyond the annotations: the up-to-one-hour DNS propagation latency and the race-condition note that another actor may have already proven the domain. Consistent with readOnlyHint=false (it does mutate proof state) and idempotentHint=true (re-running is safe). No contradiction.

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, then the two outcome branches, then the latency caveat. Compact and every sentence carries information, no padding.

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

Completeness4/5

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

With no output schema, the description usefully explains both result branches (proven, or reports what was searched) and the propagation timing. Complete enough for a one-parameter verification tool, lacking only explicit routing versus sibling domain tools.

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

Parameters3/5

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

Schema coverage is 100% and the single id parameter is already documented as coming from list_sending_domains. The description adds no format or sourcing detail beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource: it looks up the domain's DNS TXT record to verify/prove the sending domain. Clear what the tool does, though it never names or contrasts with sibling tools like add_a_sending_domain or list_sending_domains that share the domain workflow.

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 "now" and the found/not-found framing (run after adding a domain), but there is no explicit when-to-use statement, no prerequisites, and no named alternative. The agent must infer placement in the workflow.

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

publish_a_formPublish or unpublish a Smart FormA
Idempotent
Inspect

Publish a form (published: true): what it holds now becomes what visitors see, until the next publish. Unpublish (published: false): the embed shows nothing. Pass the form's id or slug.

ParametersJSON Schema
NameRequiredDescriptionDefault
formYesForm id or slug
publishedYes

TDQS

A4.2/5.0
Behavior4/5

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

With annotations already covering mutation safety, idempotency, and open-world scope, the description adds useful behavioral detail: publishing makes current form content visible until the next publish, and unpublishing hides the embed. It does not cover permissions or failure behavior, but the core state effect 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.

Conciseness5/5

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

Three tight sentences front-load the action and outcome, pair the boolean branches symmetrically, and end with the required argument. Every sentence carries weight 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 simple two-parameter mutation tool with annotations and no output schema, the description explains the state change and visitor-visible effect well enough for correct invocation. Minor missing elements such as permission requirements or error behavior are not critical here.

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% because form is documented while published lacks a schema description, so the description compensates by defining the semantics of both true and false for the published flag. It also repeats the accepted form identifier, though it adds no format detail beyond id or slug.

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 (publish/unpublish a form) and explains the visitor-facing effect, clearly distinguishing it from generic form siblings like create_a_form, update_form, and delete_a_form. An agent can identify it as the visibility-state tool 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 Guidelines3/5

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

The description explains what published: true and published: false do, but it does not explicitly say when to choose this tool over update_form or other form siblings, nor does it list prerequisites or exclusions. Usage is inferable from the operation, but no alternative routing is provided.

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

publish_an_eventPublish or unpublish an eventA
Idempotent
Inspect

Publish an event (published: true) or take it down (false): unpublished, its public booking page answers nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault
eventYesThe event's id (from list_events)
publishedYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context beyond that: it discloses the observable effect of unpublishing (the public booking page stops responding), which the annotations cannot convey. It stops short of saying whether the change is instantly live or requires a separate save.

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 zero filler, and the value mapping is front-loaded so an agent gets the operating instruction immediately. The trailing clause about the booking page is appended efficiently rather than padding. Minor awkwardness in the phrasing of the false branch, but nothing 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 2-parameter, required-only, no-output-schema mutation tool with annotations already covering idempotency and safety, the description is close to sufficient: it names both polarities and the user-visible effect. Remaining gaps (whether an event must pre-exist, whether a save is required) are modest given the tool's simplicity.

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%: 'event' is documented in the schema (id from list_events) but 'published' has no schema description. The description compensates directly by defining true=publish and false=take down, which is exactly the missing semantics. Slightly below 5 because it doesn't restate or reinforce the event-id lookup path.

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+resource and, unusually, encodes both polarities of the operation: 'Publish an event (published: true) or take it down (false)'. This lets an agent understand the toggle without opening the schema. It does not, however, differentiate from close siblings like save_an_event or create_an_event, which is the only thing keeping it from 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 Guidelines3/5

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

The description supplies the consequence of the false state ('its public booking page answers nothing'), which implicitly motivates when to use each polarity. But it never states prerequisites, when to prefer this over save_an_event/create_an_event, or whether the change must be saved afterward. Usage is implied rather than guided.

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

read_a_cardRead a cardB
Read-onlyIdempotent
Inspect

One card in full: its kind, its status and what that means now, who decided it and when where the record holds that, why it was filed, and each step — a letter's exact subject and body, an invitation, a change on the record.

ParametersJSON Schema
NameRequiredDescriptionDefault
card_idYesThe card's id (from list_open_cards)

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds an inventory of returned content but no additional behavioral traits such as pagination, auth requirements, or performance characteristics, so it sits at the annotated baseline.

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 front-loaded sentence, which is good, but it is a rambling run-on with awkward phrasing ('who decided it and when where the record holds that') and poetic filler ('a letter's exact subject and body, an invitation'). Some content earns its place, some is padding.

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, the description does carry the burden of describing returns and makes an attempt by listing field groups, which is useful. However, the grammatical clutter makes it ambiguous what is actually returned, and it never grounds what a 'card' is in this domain, leaving the definition only minimally adequate for a read tool.

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

Parameters3/5

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

Schema description coverage is 100% and the single card_id parameter is fully documented in the schema (with a pointer to list_open_cards). The description adds no further meaning to the parameter, so the baseline of 3 for high-coverage schemas 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 description states a clear verb+resource combination (read one card in full) and enumerates the card's contents: kind, status, decider, reason, and steps. It is much more specific than a bare 'read' but stops short of explicitly differentiating itself from siblings like list_open_cards or approve_a_card, leaving the single-vs-list distinction to be inferred.

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 prerequisite, and no named alternative. The only routing hint ('from list_open_cards') lives in the schema, not the description, so an agent gets no help here about when to pick this over list_open_cards or read_an_act.

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

read_a_jobRead a jobA
Read-onlyIdempotent
Inspect

One job of a tommo: its goal (the workspace's own words, or ours when it wrote none — own_goal says which), the cards it files before sending on its own (autonomy_threshold), and each of its acts with its words and settings.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobYesThe job's slug (from list_tommos)
tommoYesThe tommo's slug (from list_tommos)

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive/closed-world, so the bar is lowered. The description adds real behavioral value beyond them, notably the own_goal flag distinguishing workspace-authored versus system-authored goal text, and the meaning of autonomy_threshold as cards filed before autonomous sending.

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 front-loaded sentence opening with the core resource, with no filler. It is dense with nested parentheticals ('the workspace's own words, or ours when it wrote none — own_goal says which'), which slightly burdens reading 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?

With no output schema, the description must convey the return shape, and it does: goal plus own_goal flag, autonomy_threshold, and acts with their words and settings. For a two-param read tool with full annotations, nothing essential 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% – both slugs are documented and told to come from list_tommos. The description adds no syntax or constraint detail beyond that, so the schema carries the load and 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 resource ('one job of a tommo') and enumerates exactly what it returns: the goal, the autonomy_threshold cards, and each act with words and settings. This separates it from list-oriented siblings, though it never names which sibling to use instead.

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 explicit when-to-use or when-not-to-use guidance. The only routing hint is implicit: the schema's 'from list_tommos' tells the agent where the slugs come from, and calling out 'each of its acts' faintly implies reading a whole job rather than one act. That is not stated guidance.

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

read_a_meetingRead a meetingA
Read-onlyIdempotent
Inspect

One meeting as its page shows it: its title and when, its summary, the transcript as stored, who was invited, and whether the lead joined (with the sentence that was read from). Name it by its id (a meeting row's source_id from get_contact_activity).

ParametersJSON Schema
NameRequiredDescriptionDefault
meeting_idYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and non-open-world. The description adds value beyond that by disclosing the content shape of the returned record, including that the transcript is 'as stored' and the join detail includes the source sentence. No pagination or edge-case notes, 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?

A single, front-loaded sentence with no filler, packing the return contents and the id guidance efficiently. Slightly dense with a parenthetical, but every clause 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?

There is no output schema, but the description compensates by enumerating the returned fields, and the read-only annotations cover the safety profile. Adequate for an agent to call correctly, though it could note behavior when the id is unknown or not found.

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?

With 0% schema description coverage, the description must carry parameter meaning. It does define what the single id represents (a meeting's source_id from get_contact_activity), which is essential context a bare 'meeting_id' string does not convey. It omits format examples, keeping it from a 5.

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

Purpose5/5

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

States a specific verb (read) and resource (one meeting), then enumerates exactly what is returned: title/time, summary, stored transcript, invitees, and lead-join status. This clearly distinguishes it from siblings like read_a_paper, read_an_act, or read_a_card.

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 directs the agent to identify the meeting by id and specifies the id's origin ('a meeting row's source_id from get_contact_activity'), which is actionable routing guidance. It stops short of explicit when-not-to-use or alternative-tool comparisons, so not a 5.

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

read_an_actRead an act's pageC
Read-onlyIdempotent
Inspect

One act's page on a job: the words a run reads for it (the workspace's own, or ours), the words we ship, and its settings.

ParametersJSON Schema
NameRequiredDescriptionDefault
actYesThe act (from read_a_job)
jobYesThe job's slug (from list_tommos)
tommoYesThe tommo's slug (from list_tommos)

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds modest value by disclosing what the returned page contains (the run-facing wording, shipped wording, settings), though it says nothing about permissions, scoping, or failure modes.

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 no filler. Its nested parenthetical is slightly tangled but the content is front-loaded and there is no repetition.

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, the description reasonably sketches what is returned, which is the main gap it should cover. However, it omits the read/save pairing with save_an_act and the prerequisite of resolving act/job/tommo ids, leaving the agent to assemble the workflow itself.

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 each parameter's description already states where its value comes from, so the schema does the work. The phrase 'the workspace's own, or ours' hints that act wording may be scoped, but no additional parameter meaning is supplied.

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 conveys that this reads a single act's page and enumerates its contents (workspace or shipped wording, plus settings), but the phrasing is prose-like and never states a clean verb+resource. An agent can infer 'read one act' mainly from the title rather than the description itself.

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 use this versus siblings such as save_an_act, read_a_job, or read_a_playbook_page, nor any prerequisite context. The only routing hint (ids come from read_a_job/list_tommos) lives in the schema, not the description.

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

read_an_emailRead a letterA
Read-onlyIdempotent
Inspect

One letter whole, as the contact page's Read more opens it: who sent it, to whom and in copy, its subject, when, and the whole body as the record keeps it. Name its timeline row (an email row's id from get_contact_activity).

ParametersJSON Schema
NameRequiredDescriptionDefault
activity_idYesThe letter's timeline row

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds that the whole body is returned 'as the record keeps it', but does not disclose any additional constraints such as truncation, permissions, or access 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 what is returned and then the id requirement. The metaphorical 'letter' phrasing is slightly ornate but does not waste space or bury the key instruction.

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 single-parameter, read-only tool with no output schema, the description usefully describes the returned fields and the id's source, which compensates for the missing output schema. Only minor gaps (no access/permission notes) remain.

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 would be 3, but the description genuinely adds meaning by telling the agent the activity_id must be an email row id obtained from get_contact_activity, which the schema's 'The letter's timeline row' 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 names a specific verb (read) and resource (one email), and enumerates the fields returned: sender, recipients/copy, subject, date, and full body. The 'letter' framing matches the tool's title, so an agent can tell this reads a single email rather than a list. It stops short of explicitly contrasting with siblings like read_the_mail_tommo_wont_read.

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 tells the agent where the required id comes from ('an email row's id from get_contact_activity'), which is useful routing, but gives no explicit when-to-use vs when-not-to-use or alternatives for reading mail. Usage 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.

read_a_paperRead a paper of the workA
Read-onlyIdempotent
Inspect

A paper of the work — Legal's redline, a draft, the document a letter carries — by its Drive id, as the record names it. It is fetched through Tommo Legal's Google connection now, from this workspace's folders only, and answered as the file itself with its name and its Drive link; nothing is copied.

ParametersJSON Schema
NameRequiredDescriptionDefault
drive_idYesThe paper's Drive id, as the record names it

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description adds real behavioral context beyond them: the fetch goes through Tommo Legal's Google connection, is limited to this workspace's folders, returns the file with name and Drive link, and explicitly states 'nothing is copied'.

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 opens with the resource and then states connection, scope, and return. The em-dash exemplar list ('Legal's redline, a draft, the document a letter carries') is a touch flowery but earns its place by disambiguating the resource.

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

Completeness4/5

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

With no output schema, the description correctly compensates by explaining the return shape (the file itself, its name, its Drive link) and the auth path (Tommo Legal's Google connection) plus workspace scope. Little 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 description coverage is 100% and the single parameter is already documented as 'The paper's Drive id, as the record names it'. The description repeats that phrasing without adding format, syntax, or provenance detail, so the schema carries the load.

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 concretely (Legal's redline, a draft, the document a letter carries) and what is returned (the file itself with its name and Drive link), so an agent can identify it as a Drive-file read. It does not, however, explicitly distinguish itself from the many other read_* siblings (read_a_card, read_a_job, read_an_act, read_an_email).

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 the scoping statement ('by its Drive id, as the record names it', 'from this workspace's folders only') but there is no explicit when-to-use, when-not-to-use, or named alternative among the sizable read_* sibling set.

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

read_a_playbook_pageRead a Playbook pageB
Read-onlyIdempotent
Inspect

One Playbook page whole, as text: its title, its words, and when it was last changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds that the result is text-form and includes the last-changed timestamp, which is modest but non-redundant context, since no output schema exists.

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 compact sentence with no wasted words, front-loading the resource and result contents. The fragmentary phrasing ('One Playbook page whole') is slightly awkward but does not obscure meaning.

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, the description usefully lists the returned fields, which is the right call for a read tool. However, for a single-parameter lookup tool it should also clarify the id's nature and its relationship to search_the_playbook, leaving a meaningful 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?

There is one required parameter (id) with 0% schema description coverage, and the description never explains what the id is — a page id, slug, or title — nor how to obtain it. With the schema providing no help, the description 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 and resource ('Read a Playbook page') and enumerates what the returned page contains — title, body text, last-modified time. It is distinguishable from write_a_playbook_page, delete_a_playbook_page, and move_a_playbook_page, though it never names or contrasts with search_the_playbook, which also surfaces playbook content.

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 indication of when to use this versus search_the_playbook (finding a page) or read_the_companys_site_into_the_playbook. There are no prerequisites or exclusions stated; the agent must infer the retrieval-by-id scenario entirely.

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

read_how_tommo_learnsRead how Tommo learnsB
Read-onlyIdempotent
Inspect

Week by week, the share of cards people refused or edited before approving, by act and letter purpose: each week (the Monday it starts on), decided, refused, edited and share. weeks: how many weeks back, 12 by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
weeksNo

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare the full safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description does add useful behavioral context beyond that: the output is a weekly aggregation keyed on the Monday each week starts, with decided/refused/edited/share columns. It stops short of explaining what 'share' is a share of or how refusal/edit are counted.

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 front-loaded sentence that moves from what the report measures to its columns to the parameter default, with no wasted filler. It is dense and jargon-heavy, but 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?

With no output schema, the description must explain return values, and it does outline the columns and time granularity. However, key terms ('act and letter purpose', the denominator behind 'share') are left undefined, so an agent still can't fully interpret the result.

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 carry the parameter. It does: 'weeks: how many weeks back, 12 by default' explains both the meaning and the default value for the sole parameter, fully compensating for the bare schema.

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 tells you what data comes back (refusal/edit share of cards per week) rather than stating a clean verb+resource purpose, and it leans on unexplained internal jargon like 'by act and letter purpose.' It doesn't distinguish this report from siblings such as read_the_lost_reasons or where_the_work_stands, so an agent must infer the tool's role from the name alone.

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, when-not-to-use, or alternative routing guidance. The only usage-shaped content is the parameter default ('12 by default'), which is a schema detail, not selection guidance.

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

read_the_companys_site_into_the_playbookRead the company's site into the PlaybookInspect

Read the company's public site (its home page and a few pages of its own, robots.txt respected) and write what it finds about the company into the Playbook, each section under a section the book already has and marked as from the site with the moment. No person accepts it first. A section a person wrote or changed is never changed, and one a person deleted is not brought back: playbook.written lists what was added or updated, playbook.left what was left and why. Only a site that is the workspace's own is read: one it named as its site, a sending domain it proved, or its owner's mail domain; any other is refused. playbook.warnings is what the read said it left out. The answer also reports the site's brand (the font its text is set in; the accent, the dark colour and the logo read from its home page and its own styles, with brand.found_by naming the rule that found each) and its domain, which joins the workspace's site domains (the list a form's «live» check reads). The accent, the dark colour, the logo and the font are saved as the workspace's brand, which its form and booking page wear, only where the workspace has none yet: brand.saved is what was saved, brand.kept is what the workspace already had and keeps. If the model cannot read it, the domain and the brand still come back, with the reason in words.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe company's site, like acme.com
read_the_first_lookRead the first lookB
Read-onlyIdempotent
Inspect

The first look reads the last 30 days of mail and meetings and files cards on the conversations still open. Before it starts: whether it may start (reasons, each with a key, the words and the page where it is put right; why_not is the same words), and what it will read (records, threads, meetings). reads.mail says how far the last 30 days of mail have arrived (not_begun, arriving, arrived) and reads.meetings_arrival says the same for the meetings of the workspace's source; it cannot start while either is arriving. meetings says whether the owner answered about the source of meetings (set, skipped or not_asked): it cannot start while not_asked, and when skipped it reads mail only (reads.mail_only). reads.leads_waiting_for_the_yes is how many leads Tommo made from the 30 days of a mailbox connected at the start: no run is made for one of them before the first look starts. It may start once a mailbox is connected and the workspace is in its first 14 days or on a plan. Once started: its progress, with the runs done, waiting, failed and stopped, each run that did not end done with the reason it recorded (runs_not_done), and the cards filed. The runs count a record whose run was already going when the first look started. ended says that no run of it waits (queued is how many runs it queued at its start). cards_waiting_for_a_person is what waits for a person's decision in Flow now, and what_waits_in_flow is the same count by kind.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds domain context (it does not start a run; it cannot start while mail/meetings are 'arriving'), but says nothing about the tool call itself such as auth, rate limits, or caching, hence a baseline 3.

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

Conciseness2/5

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

The description is a single sprawling, jargon-dense paragraph full of undefined internal terms (Tommo, Flow, leads, cards, why_not, reads.mail_only) that an agent must parse to find anything actionable. It is far larger than needed for a zero-parameter read tool and buries the purpose in domain state enumeration.

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

Completeness4/5

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

With no output schema, the description carries the burden of describing what is returned and it does enumerate the response fields (why_not, reads.mail, reads.meetings_arrival, runs_not_done, ended, cards_waiting_for_a_person, what_waits_in_flow). That is genuinely useful compensation for the missing output schema, even if the field names are opaque.

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 and the schema is empty with 100% coverage, so there is nothing for the description to disambiguate. Baseline 4 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 opening sentence gives a concrete verb+resource: it 'reads the last 30 days of mail and meetings and files cards on the conversations still open,' and the rest clarifies it returns readiness and progress state. It is clear what the tool does, but it never names its obvious sibling start_the_first_look, so the agent must infer the read/write split from names alone.

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 is saturated with domain conditions (when the first look may start) but never says when an agent should call this tool versus start_the_first_look or read_the_workspace_state. There are no exclusions, prerequisites for invocation, or alternative routing.

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

read_the_lost_reasonsRead the lost reasonsB
Read-onlyIdempotent
Inspect

The organization's lost reasons: the list a deal moved to Lost names its reason from.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, covering the safety profile. The description adds no operational detail such as return granularity, pagination, or whether the list is org-wide, so it contributes almost nothing beyond the annotations.

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

Conciseness4/5

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

It is a single front-loaded sentence with no wasted words. The second clause is somewhat compressed and could be more direct, but the structure is efficient overall.

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-parameter read tool whose annotations already cover the safety profile and with no output schema, the description states what data is returned: the organization's lost reasons. It is complete enough to invoke correctly, though it could still specify return granularity or 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?

With zero parameters and a 100% schema description coverage (the schema is empty), the baseline is 4. There are no parameters for the description to clarify.

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 identifies the resource as the organization's lost reasons and ties it to the deal-lost reason selection flow, which is a specific enough noun phrase to distinguish it from write-oriented siblings like save_the_lost_reasons. The verb is only implied through the tool name and title, but the resource 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?

The phrase 'the list a deal moved to Lost names its reason from' implies the context in which this list is needed, but there is no explicit when-to-use guidance, no exclusions, and no mention of the sibling save_the_lost_reasons for the opposite operation.

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

read_the_mail_tommo_wont_readRead the mail Tommo won't readA
Read-onlyIdempotent
Inspect

The addresses and domains Tommo never reads mail from — an investor, a lawyer, HR: a letter where any of them is among its people (From, To, Cc, Bcc, Reply-To, Sender) is passed by in the first look and in every later read, and nothing of it is kept. Each entry with whether it is an address or a domain (a domain covers its subdomains), who added it and when. Not the blocked senders (list_blocked_senders), which are spam.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, the description discloses real behavioral consequences: matching mail is 'passed by in the first look and in every later read, and nothing of it is kept', and a domain entry covers its subdomains. That is exactly the kind of operational impact an agent cannot infer from annotations or 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 core definition, then behavior, then the sibling distinction — every sentence earns its place. The first clause is dense (em-dash examples, nested relative clause) and would benefit from one fewer aside, but nothing is wasted.

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

Completeness5/5

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

With zero parameters, no output schema, and read-only annotations, the remaining burden is explaining what the entries are and what the list does — both covered. Nothing an agent needs to call or interpret this tool is missing.

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

Parameters4/5

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

The tool takes no parameters, so the baseline is 4 and the description has no parameter ground to cover. Nothing here misrepresents the (empty) input contract.

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

Purpose5/5

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

Names the exact resource (the list of addresses/domains Tommo won't read mail from) and states what it is not by naming the sibling list_blocked_senders. It also specifies entry contents (address vs domain, who added, when), so an agent knows precisely what this returns without opening anything else.

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

Usage Guidelines4/5

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

The closing contrast ('Not the blocked senders (list_blocked_senders), which are spam') gives a clear condition for choosing this tool over its nearest sibling, and the ignore-list semantics imply when to inspect it. It stops short of explicitly routing to add_to_the_mail_tommo_wont_read / remove_from_the_mail_tommo_wont_read for mutation, which is the only gap.

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

read_the_money_of_a_dealRead the money of a dealA
Read-onlyIdempotent
Inspect

The money of a won deal, as the deal shows it: whether the workspace's invoice system is working, the payment schedule a person accepted (each amount, when it falls due, its payment term), each invoice with the invoice system's number and link and its status as last read, how many reminders went for it, and whether every amount is paid.

ParametersJSON Schema
NameRequiredDescriptionDefault
deal_idYesThe deal's id

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, and non-destructive traits, so the bar is lower; the description goes further by disclosing the snapshot nature of the data ('as the deal shows it', 'status as last read') and the exact facets returned. It stops short of noting freshness limits or auth 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?

One front-loaded sentence that spends every clause on return content rather than restating the title. It is dense and reads as a run-on list, 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?

With no output schema, the description carries the burden of describing the response and does so thoroughly, covering invoice-system health, payment schedule terms, invoice status, reminder counts, and paid state. Missing auth/pagination details and usage context 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?

Single parameter with 100% schema description coverage, so the schema already documents deal_id. The description adds no format or sourcing detail for the id, making the baseline 3 appropriate.

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 specific resource (the money of a won deal) and enumerates what that resource comprises, so an agent can distinguish it from get_deal or read_a_job. It never states the verb outright, but 'read' is implicit in the name and the content 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?

There is no guidance on when to call this versus get_deal, read_a_job, or mark_an_invoice_as_paid. The only inferred precondition is 'won deal', which is embedded in the prose rather than stated as a usage rule.

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

read_the_workspace_stateRead where the workspace standsA
Read-onlyIdempotent
Inspect

Where this workspace stands before anything can happen: whether its owner has confirmed their address (until then nothing leaves the workspace and nothing is charged — nothing_leaves_because says why), whether the tommos are switched on, the plan (standing: internal, first_days, on_a_plan or no_plan; which plan; when the first 14 days or the paid period end; each tommo with whether it works and why not), this month's new leads against the plan's volume, and the sending domains with whether each is proven and, if not, the DNS record to publish.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent, non-destructive behavior, but the description adds substantial behavioral context: owner confirmation gates all sending and charging, the meaning of nothing_leaves_because, plan and trial timing, tommo activation status, lead-volume tracking, and domain proof/DNS state. This is rich disclosure beyond structured fields.

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 purpose is front-loaded, and most of the listed state is relevant for a tool with no output schema. However, the entire description is one dense, run-on sentence with nested parentheticals and semicolon-separated clauses, making it harder to parse than it needs to be.

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

Completeness5/5

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

With no output schema and no parameters, the description carries the burden of explaining what the tool returns. It comprehensively describes the workspace readiness dimensions: owner confirmation, billing/plan state, tommo status, lead volume, and sending-domain proof with DNS records.

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 parameter semantics are not applicable. Per the rubric, a zero-parameter tool has a baseline of 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 and scope: it reads the workspace's readiness state and then enumerates the specific pieces of state returned. It is specific enough to distinguish this from general workspace actions, but it does not explicitly contrast itself with the sibling 'where_the_work_stands'.

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 phrase 'before anything can happen' gives a clear usage context: this is a preflight/readiness check to be consulted before acting. It does not list exclusions or name alternative tools, but the intended moment of use is explicit.

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

refuse_a_text_changeRefuse a change of a tommo's textBInspect

Refuse a change Tommo offered, as the signed-in person, with their words when they give any. No text changes, and the reasons stay unabsorbed. Only a signed-in person refuses one.

ParametersJSON Schema
NameRequiredDescriptionDefault
wordsNo
offer_idYesThe offer's id (from list_text_changes_offered)

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false, establishing this as a safe, non-destructive, workspace-local action. The description adds a useful auth precondition and a behavioral note that reasons 'stay unabsorbed' (not learned), but that phrase is vague and the idempotency implication is not elaborated.

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?

Three short sentences with low waste, but phrasing like 'the reasons stay unabsorbed' is cryptic and the key precondition is buried at the end rather than front-loaded.

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, a mutation with sparse annotations, and only one of two parameters documented. The description covers the signed-in requirement and the non-effect on text, but omits who can see the refusal and what happens to the offer afterwards, leaving gaps for an agent to infer.

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%: offer_id is documented in-schema (pointing to list_text_changes_offered) while words is not. The phrase 'with their words when they give any' clarifies that words is optional/accompanying, adding marginal meaning beyond the schema, but no format or length guidance is given.

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 (refuse) and resource (a change Tommo offered / text change), and the title reinforces it. It does not explicitly name the counterpart sibling take_a_text_change, but the verb scope is clear enough to distinguish the action from listing or accepting offers.

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

Usage Guidelines3/5

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

Gives one precondition ('Only a signed-in person refuses one') but never states when to refuse versus accepting (take_a_text_change) or when to inspect offers first (list_text_changes_offered). Usage is implied by the verb 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.

reject_a_cardRefuse a cardAInspect

Refuse a card, and say why: reason_code is one of already_handled, record_pending, wrote_myself, they_replied, too_soon, wrong_moment, wrong_person, wrong_time, text_off, wrote_again, taken_back, deal_closed, keep_open, no_reply, not_needed, not_yet, duplicate, already_done, cant, details_wrong, record_right, keep_asking, other; words are read too — a date or an event they name is waited for, and words that say stop pause the lead. The refusal lands on the lead's timeline, where the next run reads it.

ParametersJSON Schema
NameRequiredDescriptionDefault
wordsNo
card_idYesThe card's id (from list_open_cards)
reason_codeNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the safety profile is partially covered. The description adds genuinely useful behavior: 'words' is interpreted (a named date/event defers the lead, stop-words pause it) and the refusal lands on the lead's timeline where the next run reads it — side effects an agent could not infer from the annotations.

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

Conciseness3/5

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

Well front-loaded with the core action and purpose, but a large share of the text is the 23-value reason_code dump, which duplicates the schema enum rather than adding meaning. The genuinely informative clause about 'words' is buried after the list.

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 annotations and no output schema, the description covers the key downstream effect (the refusal appears on the lead's timeline for the next run) and the dual meaning of card_id/reason_code/words. What is missing is any guidance on ordering against sibling card tools and any error/permission behavior.

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?

With only 33% schema description coverage, the description must compensate. It does so well for 'words' by explaining that free text is parsed for dates/events and stop commands, and it clarifies that reason_code is a fixed choice. The reason_code list merely restates the schema enum, and 'words' format is still not fully specified, so it stops short of 5.

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

Purpose4/5

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

The description opens with a specific verb+resource ('Refuse a card, and say why') and enumerates the required reason_code, so the operation is unambiguous. However, it never differentiates itself from close siblings like stop_a_card, set_a_card_aside, or bring_a_card_back, which an agent must choose between.

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: an agent can infer you call this to decline a card, but there is no explicit when-to-use, no prerequisites, and no routing to alternatives such as stop_a_card or set_a_card_aside. The reason_code enumeration hints at intent but does not state when each situation applies.

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

remove_a_memberRemove a memberA
Destructive
Inspect

Take a person off this workspace: they can no longer sign in to it. An admin never removes an owner; the only Owner is never removed.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesThe member's user id (from list_the_team)

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true, non-idempotent and non-read-only, so the safety profile is covered. The description adds real context beyond that: the concrete consequence (loss of sign-in access) and the role-based precondition that blocks removing owners. It does not mention reversibility or re-invitation, but the key behavioral constraint is disclosed.

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

Conciseness4/5

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

Two short sentences, effect stated first and the precondition second, with no filler. The second sentence is slightly redundant in phrasing ('never removes an owner; the only Owner is never removed'), costing a point.

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 destructive tool with annotations covering the safety profile and no output schema, the description supplies the two things an agent most needs: the effect on the member and the rule that owners cannot be removed. Return-value or error-shape details are not needed here.

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

Parameters3/5

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

With a single parameter at 100% schema coverage, the schema already documents user_id and points to list_the_team as its source. The description adds no format or sourcing detail beyond what the schema provides, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('take a person off this workspace') and immediately scopes the effect ('they can no longer sign in to it'). This clearly separates it from neighboring tools like change_a_members_role and invite_a_person without needing 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?

Provides a concrete when-not rule: owners are never removed by an admin, and the sole Owner can never be removed. It stops short of naming the alternative (change_a_members_role) for role adjustments, but the exclusion is explicit and actionable.

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

remove_a_sending_domainRemove a sending domainA
Destructive
Inspect

Remove a sending domain. Refused while the workspace's sender address is on it.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.5/5.0
Behavior4/5

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

The annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds a non-obvious behavioral constraint — the call is refused while a sender address depends on the domain — which is genuine context beyond the structured fields.

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, no filler, and the core action is front-loaded before the refusal constraint. 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?

For a destructive single-parameter deletion the description covers the key precondition, and annotations carry irreversibility and safety. However, it says nothing about permission requirements, what removal actually does to the domain's verification state, or the result of the call (no output schema exists), leaving moderate gaps.

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%, and the single required parameter 'id' is undocumented in both the schema and the description. The agent cannot tell whether this expects a domain ID, a domain name, or a workspace-scoped identifier, so the description 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?

The description names a specific verb and resource ('Remove a sending domain'), which cleanly distinguishes it from siblings like add_a_sending_domain, prove_a_sending_domain, and list_sending_domains by verb. It does not explicitly call out those siblings, but the operation is unambiguous.

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

Usage Guidelines3/5

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

'Refused while the workspace's sender address is on it' gives a real precondition that tells the agent when the call will fail, which is useful guidance. It stops short of routing to alternatives (e.g., remove a member or change sender address first), so usage context is only implied.

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

remove_from_the_mail_tommo_wont_readRemove from the mail Tommo won't readA
DestructiveIdempotent
Inspect

Take an address or a domain off the mail Tommo won't read, by its id (from read_the_mail_tommo_wont_read) or the entry itself: Tommo reads mail with it from the next read on. What was erased when it was added does not come back. For a signed-in admin or owner.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
entryNo

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and idempotentHint=true, but the description adds real context on top: the removed entry is honored 'from the next read on', previously erased content 'does not come back' (irreversibility of the side effect), and the caller must be a signed-in admin or owner. This is exactly the behavioral depth beyond structured fields that earns credit.

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 with the action front-loaded and no filler. The colon-chained clauses ('...or the entry itself: Tommo reads...') are slightly dense 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 2-param, no-output-schema mutation tool with annotations covering the safety profile, the description covers effect, irreversibility, selector sourcing, and auth. It stops short of stating what the tool returns or what happens if the entry is not 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 carry the load, and it does: id comes from read_the_mail_tommo_wont_read, while entry is the address/domain itself. It does not specify format expectations for 'entry' or how the two interact when both are supplied, leaving 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?

States a specific verb (take ... off) and resource (the mail Tommo won't read), and clarifies the two selectors (id or entry). It names the sibling read_the_mail_tommo_wont_read as the id source, so an agent can distinguish it from add_to_the_mail_tommo_wont_read and read_the_mail_tommo_wont_read.

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: obtain the id from read_the_mail_tommo_wont_read, or pass the entry directly. It also gates usage on being a signed-in admin or owner. No explicit when-not-to-use or excluded alternatives beyond the implied inverse of the add tool.

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

remove_the_granola_keyRemove the workspace's Granola keyA
DestructiveIdempotent
Inspect

Remove the workspace's Granola key. Meetings stop arriving from Granola until a key is saved again. For the owner only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and closed-world scope, so the safety profile is covered. The description still adds substantive value beyond the annotations by disclosing the concrete consequence (meetings stop arriving) and the reversibility path (until a key is saved again), plus an authorization restriction. It does not detail what happens to previously received meetings or any confirmation 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 short sentences, each earning its place: the action, the consequence, and the permission constraint. The action is front-loaded and nothing is padded.

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

Completeness4/5

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

For a zero-parameter destructive tool with annotations covering the safety profile, the description supplies effect, reversibility, and auth scope. A small gap remains around confirmation/irreversibility of what was already ingested, but nothing essential for correct invocation is missing.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. No parameter-related gaps exist to compensate for.

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 (Remove) and resource (the workspace's Granola key), and is clearly distinguishable from its sibling save_the_granola_key. An agent needs no schema to know what this does.

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

Usage Guidelines4/5

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

The clause 'until a key is saved again' implicitly points to the re-save action, and 'For the owner only' names the precondition for use. It stops short of explicitly naming an alternative tool or stating when-not-to-call, so it is clear context rather than full routing guidance.

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

restore_a_dealBring a deleted deal backA
Idempotent
Inspect

Bring a deleted deal back, within its 30 days, as the deals board's undo does. The bringing back is on the deal's timeline.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe deal's id

TDQS

A3.7/5.0
Behavior4/5

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

Annotations establish the safety profile (write, idempotent, non-destructive), so the bar is lower; the description still adds the 30-day restore window and discloses a side effect the annotations do not — the restore is recorded on the deal's timeline. That is genuine behavioral context beyond structured fields, though permissions/ownership requirements are unstated.

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 key constraint in the first clause; two sentences with no filler. The second sentence ('The bringing back is on the deal's timeline') is slightly awkward and could be tightened, but it carries real 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 simple one-parameter mutation with full schema coverage, annotations, and no output schema, the description covers purpose, eligibility window, and a side effect. Only the failure mode past 30 days and permission requirements are left unaddressed.

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

Parameters3/5

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

With a single parameter at 100% schema description coverage, the schema already documents 'id'. The description adds no syntax, format, or sourcing detail for the identifier, 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 ('Bring a deleted deal back'), which is unambiguous even among similarly named siblings such as bring_a_card_back and restore_contact. It does not explicitly contrast itself with those siblings, so it stops 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 Guidelines3/5

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

The 'within its 30 days' clause gives an implied eligibility condition for use, but there is no explicit when-to-use/when-not guidance and no named alternative (e.g. what to do past 30 days). Usage must be inferred from the time constraint.

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

restore_contactBring a deleted contact backA
Idempotent
Inspect

Bring a deleted contact back, within its 30 days; after that it is erased for good. The bringing back is on the contact's timeline under whoever did it.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRow id (uuid)

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), and the description adds two things they don't: the 30-day recoverability ceiling with permanent erasure afterward, and that the restore is recorded on the contact's timeline under the acting user. That audit-visibility detail is genuinely useful and not derivable from structured fields.

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, front-loaded with the action and the time constraint. There is minor redundancy with the title ("Bring a deleted contact back" repeats verbatim) and the circumlocution "The bringing back" where "the restore" would be tighter, but there is no padding.

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

Completeness4/5

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

For a one-parameter mutation with no output schema and full annotation coverage, the description carries the needed constraints: eligibility window, irreversibility past it, and audit behavior. It omits what happens to related records (deals, activity) that referenced the deleted contact, a modest remaining 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?

There is a single parameter, id, and schema coverage is 100% ("Row id (uuid)"), so the schema fully documents the input. The description adds nothing about how to obtain the id or whether it accepts only deleted-contact ids, 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 first sentence names a specific verb and resource — reviving a deleted contact — which cleanly separates it from delete_contact and create_contact. It does not explicitly name siblings, but the 'deleted contact' qualifier makes the inverse relationship to delete_contact 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 gives a clear eligibility window (within 30 days) and an explicit failure condition (after that the contact is erased for good), which is real when/when-not guidance. It stops short of naming a sibling alternative such as restore_a_deal for non-contact undo cases, so it falls one step below the top.

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

resume_outreachResume outreach to a leadB
Idempotent
Inspect

Resume outreach to a paused lead: Tommo is back on it.

ParametersJSON Schema
NameRequiredDescriptionDefault
contact_idYesThe contact's id

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare this is a write (readOnlyHint=false), idempotent, non-destructive, and closed-world, so safety is covered. The description adds essentially nothing beyond that: 'Tommo is back on it' does not say whether resuming immediately queues or sends a message, restarts the cadence from the beginning or resumes mid-sequence, or whether any lead state changes are reset.

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 with the action and scope front-loaded, so it is easy to scan. The appended 'Tommo is back on it' is unexplained product jargon that consumes space without adding selectable 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?

For a single-parameter mutation with annotations carrying safety and idempotency, and no output schema to describe, the definition is minimally adequate. It still omits the observable effect of resuming (what the agent should expect to change) and the failure behavior when the lead is not paused.

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

Parameters3/5

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

Schema description coverage is 100% for the single contact_id parameter, so the baseline is 3. The description's word 'lead' loosely signals that contact_id targets a lead record, but adds no syntax, format, or lookup guidance 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+resource ('Resume outreach') plus the precondition of the target ('to a paused lead'), which lets an agent distinguish it from the sibling pause_outreach without opening the schema. The trailing 'Tommo is back on it' adds flavor rather than precision, and pause_outreach is never named explicitly.

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

Usage Guidelines3/5

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

The phrase 'to a paused lead' implies the required state and thus when the tool applies, which is more than nothing. However, there is no explicit when-not guidance, no statement of what happens if the lead isn't paused, and no reference to the inverse tool pause_outreach that would route the agent cleanly.

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

revoke_an_api_keyRevoke an API keyA
DestructiveIdempotent
Inspect

Revoke one of this workspace's API keys, by its id (from list_api_keys). It stops working at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe key's id

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so safety is covered. The description adds a real behavioral fact beyond them: revocation takes effect immediately ('stops working at once'), i.e. no grace period. It does not say whether revoked keys are recoverable or whether other integrations break.

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 clauses, zero filler, with the resource and scope front-loaded and the effect stated last. Nothing could be cut without losing signal.

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 single-param destructive tool whose annotations carry the safety profile and whose response is a simple outcome, the description is sufficient to call it correctly. Minor remaining gap is the absence of any note on irreversibility or side effects on systems using the key.

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?

With one parameter at 100% schema coverage the baseline is 3, and the description goes further by stating where the id comes from (list_api_keys) and that it scopes to this workspace's keys, giving provenance the schema lacks.

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 (Revoke) and resource (this workspace's API key) with the exact selection key (its id). It is trivially distinguishable from the sibling pair list_api_keys and make_an_api_key.

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 the prerequisite for the id (from list_api_keys), which is the practical when-to-use path. It does not name any exclusion case (e.g. keys owned by other workspaces or keys that cannot be revoked), so it stops short of full routing guidance.

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

save_a_booking_pageSave a booking pageAInspect

Make or change a booking page: a list of this workspace's events a person picks from, at /book/. The slug is shared with the events' own, so one an event holds is refused. events lists the event ids in the order shown. Pass page to change an existing page.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoThe page's id, to change one
slugYes
titleYes
eventsNo
headlineNo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations declare the safety profile (mutating, open-world, non-idempotent, non-destructive), and the description adds real context beyond them: the slug is shared with events so a collision is refused, and events order is preserved. It does not cover permissions or what the response looks like, but it meaningfully enriches the annotation baseline.

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 with the core action front-loaded and no redundant restatement of the name. Ordering constraints and the update path follow logically. Slightly clipped phrasing ("one an event holds is refused") costs a little clarity but keeps it compact.

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 mutating tool with no output schema, it covers the key call-time facts: slug collision behavior, event ordering, and the page-based update path. It still omits what headline means, whether title must be unique, and any permission requirements, so completeness is adequate but not full.

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 20%, so the description must compensate. It explains page (change an existing page), slug (shared namespace, refusals), and events (ordered id list), covering three of five params. title and headline remain undocumented in both schema and description, leaving a 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: create/update a booking page at /book/<slug>, describing it as a list of the workspace's events a person picks from. This is distinct from save_an_event, though the description doesn't explicitly name the sibling to differentiate.

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 distinguishes the two operating modes clearly with "Pass page to change an existing page" versus making a new one, which is genuinely useful. However, it offers no guidance on when to use this tool versus save_an_event, create_an_event, or publish_an_event, 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.

save_a_jobs_goalSave a job's goalA
Idempotent
Inspect

Write the workspace's own goal for a job: what the work is, in the workspace's words. The same text as ours is not kept as the workspace's own. A changed goal restarts the count of clean sends that offers sending on its own. autonomy_threshold, when given, is how many clean sends make that offer.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobYesThe job's slug (from list_tommos)
goalYes
tommoYesThe tommo's slug (from list_tommos)
autonomy_thresholdNo

TDQS

A3.5/5.0
Behavior4/5

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

Annotations cover the safety profile (non-destructive, idempotent, mutating), but the description adds real behavioral context beyond them: that identical text is not stored as the workspace's own goal, and that changing the goal restarts the clean-send counter that unlocks autonomous sending. These consequences are not derivable from annotations or 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?

Three compact sentences, front-loaded with the core action before the behavioral caveats. The phrasing 'The same text as ours is not kept as the workspace's own' is slightly awkward but earns its place by warning of the no-op case.

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 with no output schema and useful annotation coverage, the description supplies strong behavioral and parameter context. It falls short on invocation guidance, and the optional autonomy_threshold and goal parameters lack type/format detail, leaving the definition adequate but not fully rounded.

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% (job and tommo documented; goal and autonomy_threshold not). The description compensates by explaining the two undocumented parameters: goal as the workspace's own phrasing of the work, and autonomy_threshold as the clean-send count that triggers self-sending. This meaningfully fills the schema 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 gives a specific verb ('Write') and a clearly defined resource ('the workspace's own goal for a job'), and clarifies what a goal represents ('what the work is, in the workspace's words'). It doesn't distinguish itself from the many other save_* siblings, but the resource 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?

There is no explicit guidance on when to call this tool versus alternatives (e.g., read_a_job or other save_* tools), nor any stated preconditions. The agent must infer the usage context from the semantics of 'goal' alone.

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

save_an_actSave an act's pageA
Idempotent
Inspect

Write an act's page on a job: text is the workspace's own words for that act (null goes back to ours; leave it out to keep what is there); settings are merged over the act's own and checked. Only an act the job takes (see read_a_job).

ParametersJSON Schema
NameRequiredDescriptionDefault
actYes
jobYesThe job's slug (from list_tommos)
textNo
tommoYesThe tommo's slug (from list_tommos)
settingsNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare non-read-only, idempotent, non-destructive behavior, so the bar is lower. The description adds real value beyond them: null text resets to the workspace's own words, omitting text preserves the current value, and settings are merged and validated. This richer partial-update semantics is exactly the behavioral context annotations can't convey.

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

Conciseness3/5

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

Front-loaded with the action, but the rest is a single heavily-nested sentence of semicolons and parentheticals that is dense to parse. No padding exists, yet the cramped structure reduces readability.

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 40% schema coverage and no output schema, the description covers the tricky write semantics well enough to call it correctly. The main gap is that the 'act' parameter itself is never defined, and the 'checked' behavior on settings is asserted without detail.

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 40%, so the description must compensate, and it does for the two undocumented params: 'text' null-vs-omitted semantics and 'settings' merge-and-check behavior are both explained. 'act' itself is left undefined and tommo/job rely on their schema notes, so it is not fully complete.

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: 'Write an act's page on a job.' This clearly distinguishes it from the read counterpart read_an_act and from other save_* siblings. It stops short of 5 because 'act' is unexplained jargon and the description leans on context the agent may not have.

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 precondition — 'Only an act the job takes (see read_a_job)' — which routes the agent to a sibling to validate eligibility. However, it gives no explicit when-not or comparison against read_an_act / other write tools, so the usage guidance 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.

save_an_eventSave an event's settingsA
Idempotent
Inspect

Change an event's settings, as its editor saves them; only what is named changes. The editor's checks hold: a meeting of 5 to 480 minutes, up to 120 minutes of room before and after, a booking window of 1 to 90 days, a notice shorter than the window, at least one working day with a window as long as the meeting. working_hours maps a weekday (0 Sunday to 6 Saturday) to its windows, each [from, to] as «HH:MM»; a day left out is not worked. A new slug keeps the old link reaching the event, and one a booking page holds is refused. A colleague in required_attendees must be someone whose calendar the event's calendar can read.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
slugNoThe booking link, /book/<slug>
eventYesThe event's id (from list_events)
timezoneNoIANA zone, like Europe/London
agent_jobNoThe job that works the leads it brings
consent_mdNoThe fine print near Confirm booking
agent_briefNo
descriptionNo
agent_enabledNoTommo work: a person who books gets the job's tommo
booking_titleNo
working_hoursNo{ "1": [["09:00", "17:00"]], … }
invitee_fieldsNoThe questions the booking asks: { name, label, type, required, options }
notice_minutesNoThe shortest time between now and a meeting that can be booked
captcha_enabledNo
consent_enabledNo
consent_positionNo
duration_minutesNo
required_attendeesNoColleagues' addresses who must be free for a time to be offered
booking_window_daysNo
buffer_after_minutesNo
buffer_before_minutesNo
calendar_connection_idNo

TDQS

A3.5/5.0
Behavior5/5

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

Annotations only declare the mutation/idempotency profile, while the description adds substantial context: numeric validation bounds (5-480 min meetings, 120 min buffers, 1-90 day window, notice < window), the slug redirect behavior and the refusal case, and an authorization constraint on required_attendees calendars. That is exactly the value-add expected on top of annotations.

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 main verb is front-loaded, but the body is a dense semicolon-chained wall of validation rules that is hard to scan. Every clause carries information, yet the phrasing 'as its editor saves them' is vague and the structure could be broken into clearer segments.

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 22-parameter mutation tool with no output schema and ~45% schema coverage, the description covers the mutation semantics and validation rules well but leaves roughly half the parameters undocumented and says nothing about the response. 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 description coverage is only 45%, but the description compensates for a few key parameters: working_hours encoding (weekday 0-6 to [from,to] HH:MM windows, omitted day = not worked), slug semantics, and required_attendees constraints. Many of the 22 parameters (name, timezone, agent_job, consent_*, captcha_enabled, invitee_fields) remain unexplained in both schema and description.

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 an event's settings') and clarifies it is a partial/editor-driven update ('only what is named changes'). It is distinguishable from create_an_event and publish_an_event by implication, but never names those siblings, so an agent must infer the boundary.

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 explicit when-to-use guidance and no mention of alternatives such as create_an_event or publish_an_event. The only usable signal is the implicit partial-update semantics ('only what is named changes'), which is more behavioral than routing guidance.

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

save_a_pipelineSave a pipeline and its stagesA
DestructiveIdempotent
Inspect

Save a pipeline as its editor does: its name, whether it is the default, and its whole stage list in order — each stage with its id to keep (renamed or moved), without an id to add, and a stage left out is removed. Each stage is open, won or lost. A stage that still holds an open deal is not removed.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
stagesYes
is_defaultNo
pipeline_idYesThe pipeline's id (from list_pipelines)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructive=true and idempotent=true; the description adds real value beyond them by spelling out exactly what is destroyed (a stage left out is removed) and a guard condition (a stage holding an open deal survives). It still omits error/response behavior and any auth prerequisites.

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 tightly packed sentences front-load the core action and then the diff rules; every clause carries meaning, though the em-dash construction is dense enough to require a careful read.

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, no-output-schema mutation tool, the description supplies the essential replacement rules and the open-deal exception. Return-value expectations and validation failures are the remaining, minor 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?

With only 25% schema description coverage, the description compensates well: it explains the id-keep / no-id-add / omitted-remove semantics for stages and the open/won/lost kind. It says nothing about is_default or how pipeline_id is obtained, leaving a little schema burden unresolved.

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 ('Save a pipeline') and immediately scopes it as a full-editor-style replacement, distinguishing it from create_a_pipeline/delete_a_pipeline without opening any schema.

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

Usage Guidelines4/5

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

The phrase 'as its editor does' plus the stage-diff rules make clear this is a whole-pipeline replace, so the caller knows the entire stage list must be supplied. It stops short of naming sibling alternatives or explicit when-not-to-use conditions.

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

save_the_granola_keySave the workspace's Granola keyA
Idempotent
Inspect

Save the workspace's own Granola API key, through which its meeting records reach Tommo (without them Tommo writes no letter after a call). It is checked with Granola first and kept only if it works, encrypted; it is never answered back, and the audit keeps only its last four characters. For the owner only.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesThe Granola API key, grn_…

TDQS

A4.2/5.0
Behavior5/5

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

Annotations only declare the safety profile (not read-only, non-destructive, idempotent, open-world); the description adds substantive behavior beyond them: the key is validated against Granola before storage, kept only if it works, encrypted at rest, never returned in responses, and only the last four characters are retained in the audit log. These are exactly the operational facts an agent cannot get from structured fields.

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 but well front-loaded sentence with the core action first, then the validation/storage guarantees, then the permission boundary. The parenthetical explanation of why the key matters earns its place; the phrasing is slightly compressed but not wasteful.

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

Completeness5/5

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

There is no output schema, so the description correctly covers the return behavior ('never answered back', audit keeps only last four characters) as well as validation, storage, encryption and the owner-only restriction. Nothing needed to invoke a one-parameter save tool correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100% for the single 'key' parameter and the description adds only the same format hint ('grn_…') already present in the schema, so the baseline of 3 for schema-covered params applies.

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

Purpose5/5

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

States a specific verb (save) and resource (the workspace's Granola API key) and immediately scopes ownership ('its own'), which distinguishes it from make_an_api_key, list_api_keys, revoke_an_api_key and remove_the_granola_key among the siblings.

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 conveys the consequence of not having the key ('without them Tommo writes no letter after a call') and the access restriction ('For the owner only'), which implies when this action matters, but it never explicitly names an alternative (e.g. remove_the_granola_key) or states prerequisites for when to call it versus a general API-key tool.

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

save_the_lost_reasonsSave the lost reasonsA
DestructiveIdempotent
Inspect

Replace the organization's lost reasons with this list, in order: blank and repeated ones are dropped, and each is a short phrase of 80 characters at most. Deals already lost keep the reason they were given.

ParametersJSON Schema
NameRequiredDescriptionDefault
lost_reasonsYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already flag destructive=true and idempotent=true, and the description adds real value on top: blank and duplicate entries are silently dropped, entries are capped at 80 characters, and already-lost deals retain their original reason. That preservation rule is exactly the kind of side effect an agent needs before invoking a destructive replace.

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 destructive replace action and followed by the normalization rules. No filler and nothing repeated from the schema or annotations.

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 destructive mutation with no output schema, the description covers the action, the normalization behavior, and the one notable exception (lost deals keep their reason). It stops short of stating permission requirements or what the response contains, but nothing essential for a correct call 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 carry the parameter's meaning, and it does: the list is ordered, blank/repeated entries are dropped, and each element is a short phrase of at most 80 characters. Only the ordering's significance (does position matter downstream?) goes unexplained.

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 ('Replace the organization's lost reasons with this list'), making the whole-list replacement semantics unmistakable and distinguishing it from the sibling read_the_lost_reasons.

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 word 'Replace' — an agent can infer this overwrites the entire set rather than appending — but no alternative tool is named and there is no explicit condition for when to call this versus read_the_lost_reasons or any other reason-editing path.

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

search_contactsSearch contactsB
Read-onlyIdempotent
Inspect

Search contacts by name, email, or company.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows (default 50, max 500)
queryYes

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare this as a read-only, idempotent, non-destructive, closed-world operation. The description adds no behavioral detail beyond that, such as matching semantics, pagination behavior, ordering, or result limits.

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

Conciseness5/5

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

A single front-loaded sentence with no redundant or wasted wording. It delivers the core action and search scope immediately.

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 search tool with rich annotations and no output schema, the description supplies the essential query semantics. It is nearly complete, though it could note how it differs from list_contacts or get_contact.

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 limit parameter is documented in the schema, while query is not. The description compensates for query by specifying that it searches name, email, or company, but it adds nothing about limit 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?

Defines a specific verb and resource (search contacts) and names the searchable fields (name, email, company). It is clear, but it does not explicitly distinguish itself from siblings like list_contacts, get_contact, or create_contact.

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 states what can be searched but gives no when-to-use guidance, no exclusions, and no alternative tools such as list_contacts for browsing all contacts or get_contact for retrieving one by identifier.

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

search_the_playbookSearch the PlaybookA
Read-onlyIdempotent
Inspect

Search the Playbook's pages — the facts about the company the tommos read — by words; each hit with its id, title and the text around the words.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds the return shape (each hit with id, title and surrounding text), which is genuinely useful, but says nothing about pagination, result limits, or match 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?

A single front-loaded sentence that defines the resource and the return shape with essentially no waste. The parenthetical aside ('the facts about the company the tommos read') is useful context, though the phrasing is stylistically awkward.

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, non-destructive search with no output schema and full annotation coverage, the description is adequate: it explains what is searched and what a hit contains. Only result-count/pagination behavior is left unaddressed.

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

Parameters3/5

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

Schema description coverage is 0% for the single 'query' parameter, so the description must compensate. 'By words' does convey that this is a keyword/text search rather than an exact-ID lookup, adding some meaning beyond the bare string type, but it omits matching semantics (whole word, phrase, multi-word AND/OR).

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 (search) and resource (the Playbook's pages), and clarifies what the Playbook is ('the facts about the company the tommos read'). It also previews the hit shape (id, title, surrounding text), which distinguishes it from read_a_playbook_page, though it never explicitly names that 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?

Usage is only implied: 'search...by words' suggests keyword lookup as opposed to reading a single page via read_a_playbook_page. There is no explicit when-to-use/when-not statement or named alternative.

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

send_the_owners_letter_againSend the owner's confirmation letter againAInspect

Send the workspace's owner, again, the letter whose link confirms their address. It is the one letter that leaves a workspace before the owner confirms. Refused once they have confirmed, and within ten minutes of the last letter.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already disclose the mutation profile (readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false). The description adds genuinely new behavioral facts beyond them: a hard refusal once the owner has confirmed, and a ten-minute throttle since the last letter. It stops short of saying what the caller gets back or whether the prior link is invalidated.

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 action, and each clause carries information. The middle sentence ('It is the one letter that leaves a workspace before the owner confirms') is slightly ornamental and could be folded into the refusal clause, but it is not padding.

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

Completeness4/5

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

For a parameterless, non-idempotent email-sending tool, the description covers preconditions, throttling, and refusal behavior, and no output schema is needed. The only gap is return/confirmation semantics, which is minor here.

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 there is nothing for the description to disambiguate; the schema is trivially complete. Baseline 4 applies.

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

Purpose5/5

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

States a specific verb ('send...again') and a precisely identified resource ('the letter whose link confirms their address'), then pins it down further as 'the one letter that leaves a workspace before the owner confirms.' An agent can distinguish this from invite_a_person or ask_the_owners_to_choose_a_plan without opening any schema.

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

Usage Guidelines4/5

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

Gives clear operating context ('again', for an owner whose address is unconfirmed) and explicit conditions under which the call is refused. It does not name a sibling alternative or spell out the trigger scenario, but the applicability window is well implied.

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

set_a_card_asideSet a card asideA
Idempotent
Inspect

Later, as Flow has it: the card leaves the open cards until a day and comes back by itself then, and the lead's timeline says when. until is tomorrow, next_week (each at 09:00 on the office clock) or a date (YYYY-MM-DD) after today. Only an open card.

ParametersJSON Schema
NameRequiredDescriptionDefault
untilYestomorrow, next_week, or a date YYYY-MM-DD
card_idYesThe card's id (from list_open_cards)

TDQS

A3.7/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true), so the bar is lower, and the description still adds real behavior: the card auto-returns at the until moment, the lead's timeline reflects the return time, and only open cards qualify. It does not describe what happens to a card that is already set aside or 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.

Conciseness3/5

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

The content is compact but the key action is buried behind the poetic opener 'Later, as Flow has it', so it is not front-loaded. The single run-on sentence mixes effect, timing, and precondition, making it harder to parse 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 2-parameter tool with no output schema, the description covers precondition, timing resolution, and return behavior adequately. It could still state whether an already-set-aside card errors, but nothing essential for correct invocation is missing.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds semantics the schema lacks: the 09:00 office-clock resolution for tomorrow/next_week and the 'after today' constraint on dates. This is meaningful value beyond the schema's plain enumeration.

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 conveys the specific action and its effect: the card leaves the open-card list until a given day and returns automatically, with the lead's timeline recording when. This is clear enough to distinguish it from siblings like bring_a_card_back and stop_a_card, though no sibling is named explicitly and the opening 'Later, as Flow has it' phrasing obscures rather than states the operation.

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 precondition 'Only an open card' is stated, which is genuine usage guidance. However, there is no explicit when-to-use/when-not-to-use against alternatives such as stop_a_card or bring_a_card_back; the agent must infer the boundary from context.

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

set_the_lead_statusSet a lead's statusA
Idempotent
Inspect

Set a lead's status, as the contact page does: new (New), qualified (Qualified), disqualified (Disqualified), sql (SQL), client (Client), no_response (No response). Disqualified, no_response or client ends every open job on the lead; new, qualified or sql opens the lead's job when none is open (a person working it by hand). The change is on the lead's timeline under whoever made it.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusYes
becauseNoWhy, in a few words, for the timeline
contact_idYesThe contact's id

TDQS

A4/5.0
Behavior5/5

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

Goes well beyond annotations by disclosing concrete side effects: which statuses 'end every open job on the lead' and which 'open the lead's job when none is open', plus the audit behavior ('on the lead's timeline under whoever made it'). Annotations only carry safety hints (idempotent, non-destructive), so this extra side-effect detail is genuinely additive.

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, each doing distinct work: vocabulary mapping, side effects, and audit trail. Front-loaded with the core action; the parenthetical '(a person working it by hand)' is slightly cryptic but not wasteful enough to penalize heavily.

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 annotations covering only safety hints, the description supplies the mutation consequences and audit behavior an agent needs. It is close to complete; only the omission of any mention of the optional 'because' timeline rationale leaves a minor 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%; the schema documents 'because' and 'contact_id', and the description enriches the status enum with human-readable labels and per-value consequences. It adds real meaning over the raw enum, though it says nothing about 'because' beyond what the schema already 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?

States a precise verb+resource ('Set a lead's status') and enumerates the exact status vocabulary, so the agent knows precisely what is being mutated. It does not explicitly distinguish itself from the adjacent sibling update_contact, but the intent is unambiguous.

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

Usage Guidelines3/5

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

The phrase 'as the contact page does' anchors usage to the known UI behavior, and the status list implies the contexts in which each is used. However, it never states when to use this tool versus update_contact or other contact-mutation siblings, leaving routing to inference.

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

set_the_source_of_meetingsSet where the workspace's meetings come fromA
Idempotent
Inspect

Set the one source of the workspace's meeting records: «granola», read with the workspace's own Granola key, or «a-folder-of-files», a folder in Google Drive named by its link or its Drive id, inside the workspace's own folder in Drive and read through the workspace's own Drive connection — each text file in it is one meeting. Setting one replaces the other, and setting a source that stopped working makes it work again; meetings already kept stay, and the source is read at once. For the owner only.

ParametersJSON Schema
NameRequiredDescriptionDefault
folderNoThe folder's link as Drive gives it, or its Google Drive id. Only with a-folder-of-files.
sourceYes

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses that setting a source replaces the other one, that re-setting a broken source repairs it, that already-kept meetings are preserved, that reading happens at once, and that it is owner-only. The replacement behavior is consistent with destructiveHint=false and idempotentHint=true, so there is no contradiction.

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 and every clause carries information (source semantics, replace behavior, owner restriction). The dense em-dash chain makes it slightly heavy to parse, but there is little pure 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 2-param mutation tool with no output schema, the description covers the source options, switching behavior, and authorization. Minor gaps remain around conditional requirement of folder and error handling, but nothing essential for correct invocation is missing.

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

Parameters4/5

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

Adds meaning beyond the schema for the enum: it explains what «granola» (read via the workspace's Granola key) and «a-folder-of-files» (Drive folder, one text file per meeting) actually pull in. The folder param is largely already covered by its schema description, so it is useful elaboration rather than fully compensating for the 50% coverage.

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 (Set) and resource (the one source of the workspace's meeting records) and enumerates both valid values with their meaning. An agent can tell this apart from the related save_the_granola_key / remove_the_granola_key siblings without opening any schema.

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

Usage Guidelines4/5

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

Clearly explains the two selectable sources and the switching semantics ('Setting one replaces the other, and setting a source that stopped working makes it work again'), giving strong context for when to call it. It stops short of explicitly naming the alternative tools (e.g., save_the_granola_key) or excluding cases, so it is clear context without explicit alternatives.

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

start_the_first_lookStart the first lookAInspect

Start the first look, once, with the owner's yes: name the number of records (reads.records from read_the_first_look) the owner was shown it will read. Refused without it, or when that number has changed since. It opens Tommo's job on each record and queues one run on it; every card it files waits for a person. For the owner only.

ParametersJSON Schema
NameRequiredDescriptionDefault
seen_recordsYesThe reads.records the owner was shown

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare non-read-only, non-idempotent, open-world, non-destructive. The description adds real context beyond them: it is one-shot, it throws a guard if the shown count no longer matches, it enqueues exactly one run per record, and every card it files is held for human approval. It also discloses the owner-only authorization requirement, which annotations do not cover.

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

Conciseness4/5

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

Dense but front-loaded: the core action and consent requirement come first, then the guard condition, then the effects, then the audience. Semicolon-heavy phrasing is slightly run-on, but every clause carries operational information and nothing is padded.

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

Completeness4/5

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

For a one-shot, owner-gated mutation with one required parameter and no output schema, the description covers preconditions, refusal behavior, side effects, and authorization. It does not describe the response shape, but with no output schema declared that is a minor omission rather than a blocker.

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

Parameters4/5

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

Schema coverage is 100% and the single parameter is documented, so a baseline 3 would apply. The description goes further by explaining the invariant the value must satisfy, namely that it must equal the reads.records the owner was actually shown from read_the_first_look and is rejected if stale, which is meaning the schema text alone 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?

States a specific act (starting the first look) and then concretely describes the effect: it opens Tommo's job on each record, queues one run, and files cards that wait for a person. It clearly distinguishes itself from sibling read_the_first_look, which is the read side of the same domain. The 'first look' framing is domain jargon, so it is clear but not instantly self-explanatory.

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?

Specifies strong preconditions: use it once, only with the owner's consent, and pass the count the owner was shown from read_the_first_look. It also names the refusal conditions (no consent, or the number changed since) and the audience restriction ('For the owner only'). The trigger timing is implied through the read_the_first_look reference rather than spelled out as an explicit when-to-use rule.

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

stop_a_cardStop a cardB
Destructive
Inspect

Stop a card that was approved and is under way, as the contact page's Stop does: what it has not done yet is not done — a letter not yet sent does not leave. because says why, on the record.

ParametersJSON Schema
NameRequiredDescriptionDefault
becauseNoWhy, for the record
card_idYesThe card's id (from list_open_cards)

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is covered. The description adds genuine semantics ('what it has not done yet is not done — a letter not yet sent does not leave'), but it never addresses reversibility (a bring_a_card_back sibling exists), auth needs, or the fate of already-completed work.

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 action, which is good, but the sentence is flowery and grammatically tangled ('as the contact page's Stop does', 'because says why, on the record'). The metaphor costs clarity and the trailing clause is awkwardly attached.

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 full schema coverage, the description does convey the key behavioral fact that pending work is halted while sent items remain. However, for a destructive, non-idempotent operation it is silent on reversibility and permissions, leaving a meaningful 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 100%, so both card_id and because are already documented in the schema. The description's 'because says why, on the record' merely restates the schema text without adding syntax or format guidance; baseline 3 is appropriate.

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 (stop) and resource (card) with a qualifying condition: 'a card that was approved and is under way'. This differentiates its domain from unrelated siblings, though it does not name the closely-related alternatives such as reject_a_card or set_a_card_aside.

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 phrase 'that was approved and is under way' gives an implied precondition for use, but there is no explicit when-not or naming of alternative tools (reject_a_card, set_a_card_aside, bring_a_card_back) that an agent would need to disambiguate.

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

switch_a_tommoSwitch a tommo on or offA
Idempotent
Inspect

Switch one tommo on or off. Off, it runs nothing; what it had filed stays for a person to decide.

ParametersJSON Schema
NameRequiredDescriptionDefault
onYes
tommoYesThe tommo's slug

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true, destructiveHint=false, readOnlyHint=false, so the safety profile is covered. The description adds genuine value beyond that by explaining the off-state behavior: 'it runs nothing; what it had filed stays for a person to decide' reassures the agent that toggling off does not delete data. It stops short of describing what 'on' actually runs or any auth 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 short sentences with the action front-loaded and the consequence second; nothing is padded. The trailing clause 'for a person to decide' is slightly vague about what decision is needed, but the sentence still 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 simple two-parameter toggle with annotations already covering idempotency and destructiveness, the description supplies the key missing piece (that disabling preserves filed data). It omits what the 'on' state activates and any permission context, but overall it is sufficient to invoke the tool confidently and no output schema exists to explain.

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%: 'tommo' is documented as a slug, while the boolean 'on' has no description. The description only echoes the on/off notion already implied by the title and boolean type, so it adds little beyond the schema. Baseline 3 is appropriate.

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 ('Switch') plus resource ('one tommo') and the on/off state, so an agent can tell it apart from siblings like switch_every_tommo. The word 'one' scopes it to a single tommo, but the term 'tommo' itself is never explained, leaving the object slightly opaque.

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

Usage Guidelines3/5

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

Usage is only implied: the phrase 'one tommo' hints this is the single-target counterpart to switch_every_tommo, but the description never names that alternative or states a condition for choosing between them. No prerequisites (permissions, who may toggle) are given.

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

switch_every_tommoSwitch every tommo on or offA
Idempotent
Inspect

The workspace's brake: every tommo stops (on: false) or goes on (on: true). Nothing already approved leaves while they are stopped.

ParametersJSON Schema
NameRequiredDescriptionDefault
onYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true and destructiveHint=false, so safety is covered. The description adds genuinely useful behavioral context beyond that: the mapping of on:false/on:true to stopped/running and the guarantee that 'nothing already approved leaves while they are stopped,' which clarifies the effect on in-flight work.

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, front-loaded with the core action and followed by the behavioral guarantee. 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 single-boolean, idempotent, reversible switch with annotations covering safety and no output schema, the description is nearly sufficient. Only the explicit routing versus the sibling toggles 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 description coverage is 0% for the single required `on` boolean, so the description carries the full burden. It does so by defining both states explicitly (on:false stops, on:true goes on), giving the agent enough to set the parameter correctly.

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 (every tommo stops or goes on) and conveys the workspace-wide scope via 'every tommo' and 'the workspace's brake,' which distinguishes it from the singular sibling switch_a_tommo. It is clear, though it leans on the metaphor rather than plainly contrasting with the per-tommo alternative.

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: use this to halt or resume all tommos at once. However, it never explicitly states when to prefer this over switch_a_tommo or the per-form/per-event variants, leaving the agent to infer the global-vs-individual distinction.

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

switch_tommo_work_on_a_formSwitch Tommo work on a formA
Idempotent
Inspect

The form's «Tommo work» switch: on, every lead the form brings gets the named job's tommo (a lead that comes to us is written to; nothing leaves before its card is approved, unless a person switched on sending on its own). Off, its leads wait for a person. job names which job works them.

ParametersJSON Schema
NameRequiredDescriptionDefault
onNo
jobNoThe job that works the leads it brings
formYesForm id or slug

TDQS

A3.5/5.0
Behavior4/5

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

Annotations cover safety (non-destructive, idempotent, not read-only) and the description adds meaningful domain context: what happens to leads when the switch is on or off, and the caveat about sending being gated by card approval unless manually overridden. It doesn't mention permissions or rate limits, but the behavioural picture is richer than the annotations alone.

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 nested parentheticals that is harder to parse than it needs to be. It front-loads the subject correctly but could be split for clarity.

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 toggle tool with no output schema, the description covers the behavioural semantics of both switch states and the role of the job parameter. It is nearly complete, though it leaves the 'on' parameter's semantics implicit and provides no usage routing.

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% with the 'job' parameter documented and 'form' documented. The description adds semantics for 'job' (it names which job works the leads) and implies 'on' toggles the behaviour. Only the 'on' parameter lacks a schema description and the description only implies its meaning indirectly.

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 toggle (the form's «Tommo work» switch) and explains both states of the switch. It is distinguishable from siblings like switch_tommo_work_on_an_event and switch_a_tommo, but the description itself does not explicitly reference those alternatives — the agent must infer from the name alone.

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 explicit guidance on when to use this tool versus alternatives like switch_tommo_work_on_an_event or switch_a_tommo. The description explains what the switch means but not when an agent should flip it or which tool to choose.

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

switch_tommo_work_on_an_eventSwitch Tommo work on an eventB
Idempotent
Inspect

The event's «Tommo work» switch: on, a person who books it gets the named job's tommo, as a lead from a form does.

ParametersJSON Schema
NameRequiredDescriptionDefault
onNo
jobNoThe job that works the leads it brings
eventYesThe event's id

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare the safety profile (not read-only, idempotent, non-destructive), so the bar is lower. The description usefully explains what the 'on' state actually does, but says nothing about the 'off' state, reversibility, or permissions required. It adds some semantic context without contradicting annotations.

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 front-loaded sentence that opens with the resource ('The event's «Tommo work» switch'). No waste, though the trailing clause is grammatically tangled enough to require re-reading.

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 mutation tool with annotations covering safety and no output schema, the description covers the core effect but omits what turning the switch off does and any permission or prerequisite context. Adequate but with visible 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 67% (job and event documented in-schema; on undocumented). The description supplies the meaning of the 'on' boolean indirectly via 'a person who books it gets the named job's tommo', which maps the switch to its effect, but adds no syntax or value detail beyond the schema for the other params.

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 and operation (the event's «Tommo work» switch) and states the effect of turning it on. It distinguishes itself conceptually from the form cousin ('as a lead from a form does'), though it never names switch_tommo_work_on_a_form directly.

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 explicit when-to-use guidance, no prerequisites, and no stated alternative. The phrase 'as a lead from a form does' gestures at the form equivalent's behavior but gives the agent no routing instruction between the two switch tools.

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

take_a_text_changeTake a change of a tommo's textBInspect

Take a change Tommo offered, as the signed-in person: the text becomes the offer's after, whole — or, with text, the person's own whole text in its place. Written through the same writer as the tommo's page, only while the text is still the offer's before; the reasons it rests on are then absorbed, and no run reads them again. Only a signed-in person takes one; a key cannot.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoThe person's own whole text, when they edited the offer first
offer_idYesThe offer's id (from list_text_changes_offered)

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare this is a non-read-only, non-idempotent, non-destructive mutation. Beyond that, the description adds real behavioral context: an authorization constraint (signed-in person, not an API key), a concurrency precondition (the text must still be the offer's 'before'), and a side effect (the underlying reasons are 'absorbed, and no run reads them again'). These are meaningful traits the annotations do not supply.

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 reasonably compact (three sentences) and front-loads the primary action, but the heavy reliance on coined terms ('takes one', 'after', 'before', 'absorbed') makes the structure hard to parse and forces re-reading that a plainer phrasing would avoid. The sentences are not wasteful so much as cryptic.

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 mutating tool with no output schema, the description covers authorization, the precondition, and the side effect well. It does not say what the agent receives on success, whether the change is reversible, or what happens if the 'before' precondition has failed, leaving the post-invocation picture incomplete.

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 genuinely clarifies the optional 'text' parameter's role: when provided it uses 'the person's own whole text in its place', otherwise the offer's after-text is used. That conditional behavior is not expressed in the schema and adds meaning beyond the two field descriptions.

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 conveys the core action — accepting a text change that 'Tommo offered' so 'the text becomes the offer's after' — which an agent can roughly map to accepting a proposed edit, and the sibling 'refuse_a_text_change' implies the opposite branch. But the invented vocabulary ('offer's after', 'the offer's before', 'the reasons it rests on are then absorbed') forces the agent to decode rather than immediately recognize the verb+resource, leaving purpose only inferred.

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 states two preconditions — 'Only a signed-in person takes one; a key cannot' and 'only while the text is still the offer's before' — which tell the agent when the call is valid. However, it never names the alternative action (refuse_a_text_change) or explains when to accept versus refuse, so the routing guidance is only implied.

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

unblock_a_senderUnblock a senderA
Idempotent
Inspect

Take an address off the blocked list: a form or a letter from it is heard again. The contact deleted by the block stays deleted until someone restores it.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesThe blocked address

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context: mail from the address resumes being heard, and the contact deleted by the block is NOT restored (routing the agent to restore_contact). That is meaningful side-effect disclosure beyond structured fields.

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, front-loaded with the core action. The phrasing 'is heard again' is slightly figurative, but the total size is small and every sentence 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 single-parameter toggle with annotations covering the safety profile and no output schema, the description is nearly complete. It covers the key side effect (contact remains deleted) that an agent would otherwise assume away.

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?

Only one parameter with 100% schema description coverage, so the schema fully documents the 'email' field. The description adds no syntax or format detail beyond the schema baseline, so a 3 is appropriate.

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: 'Take an address off the blocked list.' It clearly identifies the inverse of block_a_sender without naming it explicitly. The second sentence distinguishes it from restore_contact by noting the deleted contact is not restored.

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 explicit guidance on when to use this versus list_blocked_senders or block_a_sender, nor any prerequisites (e.g., the sender must already be blocked). Usage is only implied by the phrase 'off the blocked list.'

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

update_contactUpdate a contactA
Idempotent
Inspect

Update a contact by id — only the fields given. The change leaves a timeline row naming who made it.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRow id (uuid)
phoneNo
fieldsNoThe workspace's own fields, by field id (list_contact_fields names them): the value to set, or null to clear it. A number, a date as YYYY-MM-DD, yes/no as true/false, a choice by its id or label, a person by their user id.
companyNo
timezoneNoThe lead's IANA time zone (America/New_York); letters wait for their working hours. Empty string clears it.
full_nameNo
is_finderNoTrue when this person brings us someone else's work: a partner, a consultant, an advisor whose client buys, not their own company. The deal then opens on the meeting with that end client, and a call with this person gets its own recap.
primary_emailNo
triage_statusNoA person's triage verdict: cleared (approved), review (needs a look), disqualified (junk or spam), none (never triaged). It acts outward: cleared completes the bookings the gate withheld (calendar event, meeting link, their emails) and hands the lead to its tommo; disqualified cancels the lead's future bookings. It leaves a timeline event.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare the mutation/safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), so the description only needs to add beyond that. It does add two real facts: the update is partial (unspecified fields are untouched, consistent with idempotency) and the change is auditable via a timeline row naming the actor.

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, verb and scope front-loaded, and the second sentence (audit trail) is a genuine behavioral fact rather than filler. Nothing redundant or 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?

For a 9-parameter mutation tool with no output schema, the description covers the update semantics and one side effect, and annotations cover the safety profile. It stops short of mentioning the outward-facing side effects of some values (cancelling future bookings, clearing via null), which an agent would only learn by reading the schema.

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

Parameters3/5

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

Schema description coverage is 56%; the tricky parameters (fields, timezone, is_finder, triage_status) carry their own rich descriptions in the schema, while the undescribed ones (phone, company, full_name, primary_email) are self-evident. The description itself adds no parameter meaning, so it neither compensates for nor worsens the mid-level 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?

States a specific verb and resource ('Update a contact by id') and adds the partial-update scope ('only the fields given'). It is distinguishable from create_contact/delete_contact/get_contact by the operation itself, but it never explicitly names or contrasts a 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?

Usage is only implied: you need an existing row id and supply only the fields to change, which signals a patch path rather than a create/replace. There is no guidance on when to prefer this over overlapping siblings such as set_the_lead_status (which the triage_status parameter appears to touch) and no exclusions or prerequisites.

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

update_dealUpdate a dealA
Idempotent
Inspect

Update a deal's fields (title, amount, currency, client_name, contact_id, stage_id, owner_id, their_signatory_name, their_signatory_title), or who prepares its offer: presales_name and presales_email, and a note of how the rep reaches that colleague — presales_channel (email, telegram, whatsapp, rocketchat, sms, slack) with presales_handle, the address on that channel. Tommo never writes to presales; the rep does. A stage change keeps move_deal's rules (a lost stage needs lost_reason from the list); the pipeline follows the stage; owner_id is a person of this team who may own a deal.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRow id (uuid)
titleNo
amountNo
currencyNo
owner_idNo
stage_idNo
contact_idNo
client_nameNoThe company the work is for, when the contact is a finder and not the buyer
lost_reasonNoWhy, when stage_id is a lost stage — one of the organization's lost reasons
pipeline_idNoOnly as a check: it must be the pipeline of the deal's stage
presales_nameNo
presales_emailNo
presales_handleNoThe colleague's address on that channel.
presales_channelNoHow the rep reaches the presales colleague. A note for people: Tommo does not write to presales on it.
their_signatory_nameNoWho signs for the client, by name, once their letter or a person names them. Empty clears it.
their_signatory_titleNoTheir signatory's title. Empty clears it.

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover idempotency, non-destructiveness, and closed-world scope, so the bar is lowered, yet the description still adds real behavior: a lost stage requires lost_reason from the org's list, the pipeline follows the stage, owner_id must be a person of this team, and empty signatory values clear the field. It does not disclose error behavior or response shape, but that is a minor gap against the 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.

Conciseness3/5

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

The tool's core action is front-loaded correctly, but the body is one long, dash-heavy paragraph mixing field lists, stage rules, and identity constraints. Every clause carries information, yet the run-on structure makes it harder to scan than a short bulleted grouping would.

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 16-parameter mutation tool with no output schema and 50% schema coverage, the description supplies the missing rules on conditional parameters (lost_reason, pipeline_id), identity constraints, and clearing semantics. Remaining gaps are the already-documented simple fields and any post-update return 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?

With 16 parameters and only 50% schema description coverage, the description compensates meaningfully: it explains presales_channel values as a channel-of-contact note, presales_handle as the address on that channel, lost_reason's dependency on the org's list, owner_id's team constraint, and pipeline_id's role as a consistency check. Several params (title, amount, currency, contact_id, signatory fields) are still named without added semantics, which keeps this below 5.

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

Purpose5/5

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

States a specific verb and resource ('Update a deal's fields...') and enumerates exactly which fields are in scope, including the presales sub-group. It also differentiates behaviorally from siblings move_deal (stage-change rules) and write_to_a_tommo_on_a_deal ('Tommo never writes to presales; the rep does'), so an agent can place it without opening the schema.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: the move_deal rules reference signals relevance for stage changes, and the presales clause signals what the tool does not do. There is no explicit when-to-use guidance vs update_contact, create_deal, or move_deal for a given rep intent, and no prerequisites (permissions, id validity) are spelled out.

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

update_formUpdate a Smart FormA
Idempotent
Inspect

Update a Smart Form's configuration — the same fields the form editor saves. Pass form (id or slug) plus only the fields to change. fields replaces the whole field list and must include one field named "email" of type "email". success_mode: "booking" needs an event_type_id from list_events (the booking step's hours and duration live on that event). Returns the updated form.

ParametersJSON Schema
NameRequiredDescriptionDefault
formYesForm id or slug to update
nameNoInternal form name
slugNoPublic slug (a-z, 0-9, dashes); the embed snippet uses it
titleNoHeading shown on the widget
fieldsNoThe full field list, in order
subtitleNoMuted line under the title
is_activeNoPublished: true publishes what the form holds after this update (as publish_a_form does); false unpublishes it
consent_mdNoConsent / fine print, markdown (links allowed)
show_titleNo
create_dealNoAlso open a deal on the default pipeline
redirect_urlNohttp(s) URL (success_mode redirect)
submit_labelNoSubmit button text
success_modeNo
booking_introNo
event_type_idNoEvent to book after submit (success_mode booking)
notify_emailsNoWho gets the new-submission email
show_subtitleNo
captcha_enabledNo
consent_enabledNo
success_messageNoThank-you text (success_mode message)
consent_positionNoRelative to the submit button
booking_preheaderNo
confirmation_bodyNoPlain text; merge tags like {{name}} allowed
notification_introNo
confirmation_enabledNoEmail the submitter a confirmation
confirmation_subjectNo
confirmation_preheaderNo
notification_preheaderNo

TDQS

A4.6/5.0
Behavior5/5

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

Annotations cover the safety profile (not read-only, idempotent, non-destructive), and the description adds traits the annotations cannot: `fields` replaces the entire list rather than merging, that list must contain an 'email' field of type 'email', and booking success mode requires an event_type_id whose hours/duration live on that event. It also states the return ('Returns the updated form').

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

Conciseness5/5

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

Four sentences, front-loaded with identity and scope, then the two hard constraints. No filler and every sentence carries an actionable rule.

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 28-parameter mutation with no output schema, the description covers the return value and the critical gotchas (full field replacement, required email field, booking dependency). It leaves many optional flags dependent on schema text alone, but nothing dangerous is 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?

With 28 parameters at 61% schema coverage, the description compensates by explaining the highest-risk semantics: how `form` accepts id or slug, that `fields` is a full replacement with a mandatory email entry, and the `success_mode: booking` / `event_type_id` linkage. It does not cover the remaining ~39% of undocumented parameters, so it stops short of a 5.

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

Purpose5/5

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

States a specific verb and resource ('Update a Smart Form's configuration') and adds a frame of reference ('the same fields the form editor saves') that tells the agent exactly which surface it touches. This clearly separates it from create_a_form, delete_a_form, duplicate_a_form, and publish_a_form.

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 partial-update instruction ('Pass `form` (id or slug) plus only the fields to change') and a conditional dependency ('success_mode: "booking" needs an event_type_id from list_events'). It does not explicitly say when to prefer publish_a_form or get_form over this tool, so sibling routing 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.

where_the_work_standsRead where the work standsA
Read-onlyIdempotent
Inspect

Where each tommo's work on a lead or a deal stands: every open job, its last run's own sentence, what it waits for and when the tommo looks again. Name contact_id for a lead (its own job and its deals') or deal_id for one deal.

ParametersJSON Schema
NameRequiredDescriptionDefault
deal_idNo
contact_idNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real value on top by disclosing the shape of what comes back (every open job, its last run's own sentence, its wait condition, next look time), which matters since no output schema exists.

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 the return content and then the parameter routing, with no redundant restatement of the name. Domain jargon ('tommo', 'its last run's own sentence') makes it dense but not wasteful.

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 read tool with no output schema it does sketch the response, which is the main gap it needed to fill. However, both parameters are optional in the schema while the description implies you name one, leaving the neither-param behavior and any error condition unexplained.

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 carries the param burden, and it does: contact_id selects a lead and widens scope to its deals' jobs, while deal_id narrows to one deal. This meaningfully disambiguates both parameters. It omits any note on id format or on what happens when neither id is supplied.

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 read resource (a tommo's work on a lead or deal) and enumerates what it returns: open jobs, the last run's sentence, what it waits for, and when it looks again. An agent can tell this is a job-status rollup rather than a single-record read. It stops short of naming a sibling, so it leaves the read_a_job / read_the_workspace_state boundary to inference.

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 concrete routing guidance: pass contact_id for a lead (returning its own job and its deals') or deal_id for a single deal. That is clear context for selecting the right scope. It does not state when NOT to use it or name an alternative tool, so it falls short of the explicit 5.

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

write_a_playbook_pageWrite a Playbook pageAInspect

Write a Playbook page: facts about the company — what it sells, to whom, its prices and its people — never orders to a tommo. Without id a new page is made (under parent_id when given); with id the page's title and words are replaced. body is plain text (lines starting «- » become a list). Each save is kept as a revision.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
bodyNo
titleNo
parent_idNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly=false, destructive=false and idempotent=false, so the safety profile is covered; the description adds value beyond that by disclosing that an id-based save replaces the existing title and words, that every save is retained as a revision, and that body is interpreted as plain text with «- » lines becoming list items. It does not mention permissions, response shape, or concurrent-edit 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?

Front-loaded with the resource and its content rule, then the create/update branch, then the body format and revision note. Dense and mostly waste-free, though the parenthetical 'never orders to a tommo' aside and the guillemet example are stylistic filler rather than operational detail.

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 zero required parameters, so the description is the agent's only source; it covers creation, update, placement, body encoding and revision retention, which is close to sufficient for this tool. Missing only return/error behavior and the create-path handling of title, which are minor for a plain save operation.

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?

With 0% schema description coverage the description must carry all four parameters, and it does: id (create vs replace switch), parent_id (placement on creation only), body (plain text with list syntax), and title (replaced when id is given). Minor gap: it never states whether title is required on creation or what happens if body is omitted.

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 (write a Playbook page) and defines the content domain ('facts about the company — what it sells, to whom, its prices and its people — never orders to a tommo'), which cleanly separates it from write_to_a_tommo_on_a_deal and from read_a_playbook_page. An agent can distinguish it from add_playbook_pages and propose_playbook_pages without opening either schema.

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

Usage Guidelines4/5

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

Gives an explicit branch condition: no id creates a page (optionally under parent_id), with id replaces title and body. That is real when-to-use guidance for create-vs-update, but it does not name or rule out the near siblings (add_playbook_pages, propose_playbook_pages) that an agent must choose between.

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

write_the_note_on_a_leadWrite the note on a leadA
Idempotent
Inspect

Write the note on a lead: a person's note for people, which every tommo's run reads before the record and no run changes. It replaces the note; the one before is kept as a revision. Only a signed-in person writes it.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteYes
contact_idYesThe contact's id

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already mark this as a non-read-only, non-destructive, idempotent, closed-world write. The description adds meaningful behavior: the write replaces the existing note while the previous one is retained as a revision (explaining why destructiveHint=false), and that only a signed-in person can write it. This is real context beyond the annotations.

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

Conciseness4/5

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

The purpose is front-loaded in the first clause, and the three short sentences carry replacement, revision, and auth facts without filler. The phrasing 'a person's note for people' is slightly awkward but not wasteful.

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

Completeness4/5

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

For a 2-parameter write tool with no output schema, the description covers the mutation semantics (replace + revision retention) and the auth requirement. It is close to complete, with only the note's content expectations left to inference.

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%: contact_id is documented ('The contact's id') but the note parameter has no schema description. The description partially compensates by framing what the note is (a person's note read by tommo runs), but it adds no format, length, or content guidance.

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+resource ('write the note on a lead') and clarifies what that note is (a person's note read by tommo runs before the record). This distinguishes it from siblings like write_a_playbook_page and write_to_a_tommo_on_a_deal, though it never names 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 Guidelines2/5

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

The description explains the semantics of writing but gives no when-to-use, when-not-to-use, or alternative conditions. An agent has to infer that this is the tool for attaching a note to a lead rather than, say, write_to_a_tommo_on_a_deal.

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

write_to_a_tommo_on_a_dealWrite to a tommo on a dealAInspect

Write a letter to a tommo of this workspace on a deal, signed by you: it is on the deal's record, it opens that tommo's work on the deal when there is none, and the tommo looks at it now. Nothing leaves the workspace. to is the tommo's slug or name (from list_tommos).

ParametersJSON Schema
NameRequiredDescriptionDefault
toYes
bodyYes
deal_idYes
subjectYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare non-read-only, non-idempotent, non-open-world mutation. The description goes beyond them by disclosing concrete effects: the letter is recorded on the deal, it creates/opens that tommo's work on the deal when none exists (a side effect not captured by any annotation), the recipient sees it immediately, and nothing leaves the workspace. Missing only error/conflict behavior for a non-idempotent write.

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 its recipient, with no filler. The comma-spliced enumeration of effects ('it is on the deal's record, it opens ..., and the tommo looks at it now') is slightly clunky but compact and information-dense.

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 non-idempotent write with no output schema, the description covers the primary unknowns: where the message lands, the work-opening side effect, visibility, and parameter resolution via list_tommos. It is reasonably sufficient, though it omits failure modes (e.g., invalid deal_id or unresolvable tommo) and never defines what a 'tommo' is for an unfamiliar 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 description coverage is 0% for all four parameters, so the description carries the burden. It usefully resolves the only genuinely ambiguous one — 'to' is a tommo slug or name obtainable from list_tommos — but deal_id, subject, and body are left entirely undocumented, relying on name inference alone.

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

Purpose4/5

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

States a concrete verb and resource ('Write a letter to a tommo of this workspace on a deal'), which is specific and distinguishable from near-siblings like write_the_note_on_a_lead or add_to_the_mail_tommo_wont_read. It does not explicitly name an alternative or the boundary against those siblings, 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 Guidelines3/5

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

The description supplies context (it lands on the deal's record and opens that tommo's work if none exists) and routes the agent to list_tommos for resolving 'to'. However, it never states when to choose this tool over alternatives such as write_the_note_on_a_lead or add_to_the_mail_tommo_wont_read, nor any precondition or exclusion. Usage is implied rather than instructed.

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. 111 tool updates
    • First observedadd_a_mailbox
    • First observedadd_a_sending_domain
    • First observedadd_playbook_pages
    • First observedadd_to_the_mail_tommo_wont_read
    • First observedapprove_a_card
    • First observedask_the_owners_to_choose_a_plan
    • First observedblock_a_sender
    • First observedbring_a_card_back
    • First observedcancel_a_scheduled_send
    • First observedchange_a_members_role
    • First observedclose_the_job_after_the_project
    • First observedclose_the_job_that_gets_a_deal_paid
    • First observedcreate_a_form
    • First observedcreate_a_pipeline
    • First observedcreate_an_event
    • First observedcreate_contact
    • First observedcreate_deal
    • First observedcreate_workspace
    • First observeddelete_a_form
    • First observeddelete_a_pipeline
    • First observeddelete_a_playbook_page
    • First observeddelete_contact
    • First observeddelete_deal
    • First observedduplicate_a_form
    • First observedexport_the_workspace
    • First observedget_a_forms_embed_code
    • First observedget_contact
    • First observedget_contact_activity
    • First observedget_deal
    • First observedget_form
    • First observedinvite_a_person
    • First observedleads_report
    • First observedlink_to_connect_a_calendar
    • First observedlink_to_connect_a_tommos_google_account
    • First observedlink_to_connect_your_mailbox
    • First observedlist_api_keys
    • First observedlist_blocked_senders
    • First observedlist_bookings
    • First observedlist_contact_fields
    • First observedlist_contacts
    • First observedlist_deals
    • First observedlist_events
    • First observedlist_forms
    • First observedlist_open_cards
    • First observedlist_pipelines
    • First observedlist_sending_domains
    • First observedlist_stages
    • First observedlist_text_changes_offered
    • First observedlist_the_team
    • First observedlist_tommos
    • First observedmake_an_api_key
    • First observedmark_an_invoice_as_paid
    • First observedmove_a_playbook_page
    • First observedmove_deal
    • First observedpause_outreach
    • First observedpropose_playbook_pages
    • First observedprove_a_sending_domain
    • First observedpublish_a_form
    • First observedpublish_an_event
    • First observedread_a_card
    • First observedread_a_job
    • First observedread_a_meeting
    • First observedread_a_paper
    • First observedread_a_playbook_page
    • First observedread_an_act
    • First observedread_an_email
    • First observedread_how_tommo_learns
    • First observedread_the_companys_site_into_the_playbook
    • First observedread_the_first_look
    • First observedread_the_lost_reasons
    • First observedread_the_mail_tommo_wont_read
    • First observedread_the_money_of_a_deal
    • First observedread_the_workspace_state
    • First observedrefuse_a_text_change
    • First observedreject_a_card
    • First observedremove_a_member
    • First observedremove_a_sending_domain
    • First observedremove_from_the_mail_tommo_wont_read
    • First observedremove_the_granola_key
    • First observedrestore_a_deal
    • First observedrestore_contact
    • First observedresume_outreach
    • First observedrevoke_an_api_key
    • First observedsave_a_booking_page
    • First observedsave_a_jobs_goal
    • First observedsave_a_pipeline
    • First observedsave_an_act
    • First observedsave_an_event
    • First observedsave_the_granola_key
    • First observedsave_the_lost_reasons
    • First observedsearch_contacts
    • First observedsearch_the_playbook
    • First observedsend_the_owners_letter_again
    • First observedset_a_card_aside
    • First observedset_the_lead_status
    • First observedset_the_source_of_meetings
    • First observedstart_the_first_look
    • First observedstop_a_card
    • First observedswitch_a_tommo
    • First observedswitch_every_tommo
    • First observedswitch_tommo_work_on_a_form
    • First observedswitch_tommo_work_on_an_event
    • First observedtake_a_text_change
    • First observedunblock_a_sender
    • First observedupdate_contact
    • First observedupdate_deal
    • First observedupdate_form
    • First observedwhere_the_work_stands
    • First observedwrite_a_playbook_page
    • First observedwrite_the_note_on_a_lead
    • First observedwrite_to_a_tommo_on_a_deal

Publisher details

Operator
Tommos
Operator website
https://tommos.ai
Vendor relationship
First-party
Restrictions
Not applicable

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to interact with a CRM covering companies, people, leads, deals, and more, with role checks, scoped agent keys, approval gates, and a shared audit trail.
    AGPL 3.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    AI-native CRM with 33 tools. Pipeline, leads, health scores, revenue analytics, CSV import/export.
    3
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to manage contacts, deals, pipelines, and team collaboration in a multi-tenant CRM with Arabic/RTL support.
    107 npm
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to manage omnichannel CRM data (WhatsApp, Instagram, Facebook) via the official API, including leads, deals, pipelines, activities, tags, products, conversations, lists, attachments, and notes.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources