Skip to main content
Glama

Conecto Bookkeeping

Server Details

Double-entry bookkeeping with bank matching, reports and DATEV export. Pay per action.

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

TDQS

B3.2/5.0

Scored across 61 tools

Disambiguation3/5

The account_* and books_* families are mostly distinct, but several adjacent clusters overlap: account_export_all/export_person/find_person, account_dashboard_link/owner_link, account_events/audit_log/list_calls, and books_export/books_report require reading descriptions to choose correctly. With 61 tools, an agent can still misselect between similar lifecycle, reporting, or logging operations, though the detailed descriptions usually resolve it.

Naming Consistency4/5

All names use snake_case with a clear domain prefix (account_ or books_), which is highly predictable. The only inconsistency is that some tools are noun-only (account_balance, account_events, books_bank_lines, books_export) while most use verb_noun; still readable and consistent overall.

Tool Count1/5

61 tools is far beyond the 3-15 well-scoped range and beyond even the 25+ 'too many' threshold. The surface spans bookkeeping, account admin, GDPR, teams, approvals, branding, email templates, events, search, and links, so the count reflects a sprawling platform rather than a focused bookkeeping server.

Completeness3/5

Core bookkeeping lifecycle is strong: setup, accounts, entries, expenses, bank import/matching/rules, assets/depreciation, budgets, tax, tracking, reports, exports, locks, and claims are covered. However, obvious gaps remain: no invoice or bill creation/management tools, no file-store upload/list tools despite receipt/export dependencies, and no API-key or team-member management despite teams and keys being referenced. These are notable enough that agents will hit dead ends for common workflows.

Available Tools

61 tools
account_add_approval_ruleHold a tool for approvalAInspect

Make a tool wait for a person: every call of it, those whose argument is over a number (like invoices_create_credit_note when amount is over 500), or those whose argument is one of some values (like connect_call when method is POST, PUT, PATCH or DELETE). A held call answers approval_required with an approval_id and asks the approver; when they approve, call again with the same arguments, once (a call no person answers for adds the approval: header X-Conecto-Approval, or _meta.approvalId over MCP). The approver is an email, a saved channel, or a team (its managers, or everyone in it); each approver gets a link of their own, and the person whose call it is never approves it. With two_people_over, calls whose argument is over it need two people. Bills like Xero's bill approval: purchasing_create_bill with argument total holds bills over an amount, tax included; a rule on purchasing_pay_bill also holds batches with such a payment. Removing a rule is the owner's, on their account page, when the account has an owner email. $0.001. Costs $0.001 per call; nothing if it fails.

NameRequiredDescriptionDefault
overNoCalls with argument over this are held.
toolYes
valuesNoCalls with argument equal to one of these (any case) are held.
argumentNoAn argument of the tool (or total, for purchasing_create_bill).
approversNoWho in approver_team approves.managers
approver_teamNoA team (account_list_teams).
approver_emailNo
two_people_overNoCalls whose argument is over this need two people; higher than over.
approver_channelNoA saved notify channel.

TDQS

A3.9/5.0
Behavior5/5

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

The description goes far beyond the annotations: a held call answers approval_required with an approval_id, must be re-called once with identical arguments, and can be answered via X-Conecto-Approval or _meta.approvalId. It also discloses that the calling person never approves, that each approver gets a personal link, the two_people_over escalation, bill-specific behavior for purchasing_create_bill and purchasing_pay_bill, and the $0.001-per-call cost with no charge on failure.

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 purpose is front-loaded, but the prose is a run-on with heavy parentheticals, duplicated pricing ('$0.001.' followed by 'Costs $0.001 per call'), and a tangential sentence about rule removal ownership. Some sentences earn their place, but trimming and restructuring would materially improve 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 9-parameter tool with no output schema, the description covers the creation-to-approval lifecycle, approval mechanisms, cost, and removal conditions. It leaves two gaps: it does not say what a successful rule creation returns (e.g., a rule identifier), and it does not state who is permitted to create a rule.

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 78%, and the description supplements it with examples that clarify how 'over' and 'values' are evaluated (amount over 500; method equal to one of several verbs) and that argument may be 'total' for bills. It also explains that the approver can be an email, saved channel, or team, adding meaning for approver_email and approver_channel even though the schema text already covers most parameters.

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: it makes a named tool's calls wait for a person, with three distinct modes (all calls, calls over a threshold, calls matching listed values). An agent can tell what the tool does, though the opening sentence is syntactically tangled and it never names the sibling account_list_approval_rules it complements.

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?

Concrete scenarios are supplied (invoices_create_credit_note when amount is over 500; connect_call when method is POST/PUT/PATCH/DELETE) that illustrate when a rule applies, and the post-hold approval flow is described. However, there is no explicit statement of when to call this tool versus account_list_approval_rules or when not to create a rule, so the usage guidance is implied rather than directive.

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

account_assign_teamGive something to a teamA
Idempotent
Inspect

Move a form, a meeting type, a job, an inbox, a phone number, a newsletter, the website chat, a rental, a pipeline, a table or a website to a team. What happens through it is charged to that team from now on (a form's responses, a number's calls, an inbox's tickets), and its rental moves with it. Something a bot makes already belongs to the bot's team. Only a key of the company-wide team without limits moves things between teams. $0.001. Costs $0.001 per call; nothing if it fails.

NameRequiredDescriptionDefault
idNoIts id, slug, name, address or number; not needed for the chat.
kindYes
teamYes

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations (which only say non-read-only, idempotent, non-destructive): it discloses billing reassignment ('responses ... charged to that team from now on'), that rentals move with the parent, an auth/key restriction, and per-call cost with failure refund. This is exactly the extra 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 resource list, and every clause carries information. It is docked slightly for the redundant cost sentence – '$0.001. Costs $0.001 per call' repeats the price twice.

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 side effects, auth, cost, and the failure case ('nothing if it fails'), which is most of what an agent needs. What is missing is any statement of what a successful response contains, so an agent must infer that from the idempotent/non-destructive annotations.

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

Parameters3/5

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

Schema coverage is 33% (only `id` documented). The description enumerates the accepted `kind` values, but that duplicates the enum already in the schema and adds no format/syntax detail. The required `team` parameter gets only the implicit 'to a team' phrasing, so the description does not fully 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?

States a specific verb ('move ... to a team') plus an exhaustive list of the resource kinds affected, so the agent knows exactly what domain this operates on. It is clearly distinct from siblings like account_save_team or account_pause_team.

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 real precondition ('Only a key of the company-wide team without limits moves things between teams') and covers the bot-owned edge case ('Something a bot makes already belongs to the bot's team'). It does not explicitly name an alternative tool or a when-not-to-use case, keeping it just below a 5.

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

account_audit_logRead the audit logA
Read-onlyIdempotent
Inspect

The account's admin and security actions, newest first: keys made and revoked, limits and auto-reload, the owner's sign-ins, connectors, exports, vault reads and writes, credentials set and everything deleted. Ordinary work is in the call log (account_list_calls). verify: true also checks the hash chain, which breaks where an entry was changed or removed. Free.

NameRequiredDescriptionDefault
limitNo
sinceNo
actionNoOnly actions starting with this, like "key." or "tool.vault_".
verifyNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, yet the description still adds real behavior: newest-first ordering, the fact that hash-chain verification 'breaks where an entry was changed or removed', and that the call is free. It stops short of describing pagination/cursor behavior or what an entry looks like, so not a full 5.

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

Conciseness5/5

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

Two dense sentences: the first front-loads scope and the enumeration, the second carries the sibling pointer and the verify semantics plus the cost note. No filler, no repetition 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 4-param, no-output-schema read tool, this covers scope, ordering, the security-relevant `verify` mode, cost, and the competing tool. Remaining gaps are the two undocumented filters (`since`, `limit`) and any hint about entry shape, but nothing blocking an agent from calling it correctly.

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

Parameters3/5

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

Schema coverage is only 25% (only `action` is documented in-schema), so the description has to compensate. It does explain `verify` semantics well and effectively hints at `action` prefixes by listing event categories, but `limit` and `since` get no treatment at all — no guidance on time-window format or default/max behavior.

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 resource precisely (the account's admin and security actions) and enumerates the concrete event classes captured: key creation/revocation, limits and auto-reload, owner sign-ins, connectors, exports, vault reads/writes, credential changes, deletions. This is specific enough that an agent can distinguish it from account_events and account_list_calls without opening any schema.

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

Usage Guidelines5/5

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

Explicitly routes the alternative: 'Ordinary work is in the call log (account_list_calls)', telling the agent exactly when to pick the sibling instead. It also gives a conditional usage rule for a parameter ('verify: true also checks the hash chain'), which is when-to-use guidance at the argument level.

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

account_balanceCheck balanceA
Read-onlyIdempotent
Inspect

The account balance, how much of it is credit bought (AI visibility and the phone run only on that) and how much free and bonus credit, what running calls are holding, this key's daily budget, the auto-reload state, and how much of this month's free reads and downloads is used. Free.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already state readOnly, idempotent, non-destructive, and closed-world. The description adds useful behavioral context beyond annotations: the call is free, and AI visibility and phone usage depend on purchased credit. It does not cover auth or rate limits, so it is strong but not exhaustive.

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

Conciseness4/5

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

A single sentence front-loads the resource and then enumerates relevant returned fields; every clause is meaningful. The sentence is dense and slightly convoluted, which keeps it from a 5.

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

Completeness5/5

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

No output schema exists, so the description must explain return values; it enumerates balance components, holds, daily budget, auto-reload state, and free reads/downloads used. With annotations covering safety and zero parameters, this is complete for the tool.

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

Parameters4/5

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

This tool has zero parameters, so there are no parameter semantics to document. The baseline for 0 params 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 names the resource (account balance) and enumerates the specific fields returned, so an agent knows this is a balance/credit-status read. It does not explicitly contrast with account_dashboard_link or other account_* siblings, so it is clear but not fully differentiated.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative guidance is provided. The word "Free" hints at cost but does not say when to call this instead of sibling account tools.

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

account_data_locationsSee where the data isA
Read-onlyIdempotent
Inspect

Where each area's data is stored and processed: the company that runs each place, the country or region, and what it holds. Every area keeps its records in the database and runs on Conecto's servers; some also use a service named here (email, phone, PDFs, search). For the business's records of processing and its transfer assessments (GDPR Art. 30 and 44). Free.

NameRequiredDescriptionDefault
areasNoAreas to show, like ["email", "phone"]; all when left out.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and a closed-world scope, so safety is covered. The description adds value beyond that by disclosing the shape of the content (company, country/region, contents), the baseline that all areas use Conecto's database and servers with some using an additional named service, and that the call is free. It stops short of describing pagination or exact return structure.

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 plus a short purpose tag and cost note; the content-of-return sentence is front-loaded and no sentence is filler. The 'Free.' fragment is terse but carries distinct 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 one optional parameter, no output schema and full annotation coverage, the description supplies what the agent otherwise lacks: what the returned rows contain and the GDPR-driven reason to call it. Only the exact return shape/pagination is left unspecified, which is minor for a simple read.

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% — the single optional 'areas' parameter is documented with an example and a default of 'all'. The description only implicitly references areas ('each area's data'), adding no syntax or filtering 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?

The description names the concrete resource: per-area data storage/processing locations, including the operating company, the country or region, and what is held. That is specific enough to distinguish it from every account_* and books_* sibling, none of which cover data residency, though the verb is implied rather than stated.

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

Usage Guidelines4/5

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

It gives a clear use context — the business's records of processing and transfer assessments under GDPR Art. 30 and 44 — which tells the agent when this tool is the right call. It does not name an alternative or any explicit exclusion, so it falls short of a 5.

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

account_emit_eventSend an event of your ownAInspect

Send an event you name, custom. (custom.lead_qualified, custom.order_shipped), to every channel subscribed to it (notify_subscribe with "custom.*" or its name: Slack, Teams, a webhook to Zapier, Make, n8n or the business's own systems) and to account_events, where another team's bot can pick it up. data is any JSON object (up to 10 KB); sent_by is added with this bot's name and team. $0.005 for each channel it goes to; free when no channel is subscribed. Costs $0.005 per channel it goes to; nothing if none are found.

NameRequiredDescriptionDefault
dataNo
kindYescustom. and a name of lowercase letters, digits, dots, dashes and _.
linkNo
textNo
titleYes

TDQS

A4/5.0
Behavior4/5

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

Goes well beyond the annotations by disclosing per-channel cost ($0.005, free with no subscribers), a 10 KB data limit, and that sent_by is auto-appended with bot and team. Does not mention that repeats are non-idempotent (duplicate events) or what happens on an unmatched kind, which the annotations leave to inference.

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?

Cost is stated twice in near-identical sentences, which wastes space in an otherwise dense paragraph. The delivery model is front-loaded well, but the long parenthetical from the first sentence to the last hurts 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 mutation tool with no output schema, it covers destinations, payload limits, auto-injected metadata, and pricing—the things an agent needs before calling. Remaining gaps are the semantics of title/text/link and the non-idempotent behavior implied by annotations.

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 does for kind (pattern restated with examples), data (any JSON, 10 KB cap) and sent_by (injected, not an input). It says nothing about title, text, or link, leaving three of five params explained only by bare schema types.

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/emit) and resource (event), pins the naming scheme to custom.<name> with two concrete examples, and names where the event lands (subscribed channels plus account_events). This clearly separates it from the read-only sibling account_events.

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

Usage Guidelines4/5

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

Explains the routing model (notify_subscribe with 'custom.*' or exact name) and the downstream alternative of another team's bot picking the event up from account_events. Lacks an explicit 'do not use when…' exclusion, but the context is concrete enough to choose correctly.

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

account_erase_personErase a person's dataA
DestructiveIdempotent
Inspect

Erases one person across every area when they ask (GDPR Art. 17), once you know it is them (they wrote from that address, or confirmed it). Their CRM contact, chat visitor, past meetings and calls are anonymised, so deals stay without them, and a meeting they were only a guest at drops them; their chats, CRM history, form and routing form answers, job applications with the CV, newsletter subscriptions and events are deleted, and the call log's contents that name them are cleared. Kept, each with its reason in the result: accounting records, employment records, signed documents, the audit log, the account's own settings, upcoming meetings, and emails and tickets (outreach emails and replies too) unless correspondence is true. Their address goes on the suppression lists, so it is never mailed again: outreach campaigns stop for them at once. Can't be undone; the owner is emailed. A key of a team other than the company-wide one gets owner_required: pass the request to the owner. Free. Free.

NameRequiredDescriptionDefault
emailNoThe person's email address.
phoneNoTheir phone number in international format, like +1 503 555 0145.
correspondenceNoAlso delete their emails and tickets, when no law requires keeping them.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only declare destructive/idempotent/not-readOnly. The description goes far beyond them: what is anonymised vs deleted vs retained (with reasons surfaced in the result), that the suppression lists block future outreach, that the action is irreversible, and that the owner is emailed. This is genuinely decision-relevant context an agent cannot get 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?

Front-loaded with the action and the precondition, which is good, but the body is a single run-on sentence enumerating dozens of data areas, and 'Free. Free.' is duplicated — an obvious editing artifact. Density is justified by the tool's complexity, but the delivery costs 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 highly destructive multi-system erasure with no output schema, the description covers irreversibility, the anonymise/delete/retain split, the error path, side effects on outreach, and that the return value carries per-item retention reasons. An agent has enough to call it correctly and to warn the user.

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: it explains that 'correspondence' governs whether emails and tickets are deleted or retained for legal reasons, and that email/phone are the identity anchors used for matching and suppression. Only the phone parameter's role is left implicit.

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

Purpose5/5

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

States a specific verb and resource ('Erases one person across every area') plus the legal trigger (GDPR Art. 17). An agent can immediately distinguish this from account_export_person or account_find_person, which operate on the same person without destroying data.

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 precondition for invocation ('once you know it is them — they wrote from that address, or confirmed it') and a routing rule for the owner_required case. It never names a sibling alternative, so it stops short of a full when/when-not comparison.

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

account_eventsRead recent eventsA
Read-onlyIdempotent
Inspect

What happened in this account that someone outside the bot did, oldest first: applications, bookings, form responses, signatures, replies, emails received, goals reached on the website; and the custom events bots sent with account_emit_event. Kept 30 days. Poll with after = the last event_id you saw. Free.

NameRequiredDescriptionDefault
afterNoOnly events after this event_id.
kindsNoEvent names or areas ("hiring.*"); all when left out.
limitNo

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/no-destructive, so safety is covered; the description adds genuinely new facts: 30-day retention window, oldest-first ordering, and that calls are free. It omits any mention of rate limits or event object shape, but the added context is substantial.

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 scope statement and ordering are front-loaded, then the event-family list, then operational notes (retention, polling, cost). Dense and mostly waste-free, though the long semicolon-chained event list is heavier than a shorter enumeration would be.

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

Completeness4/5

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

With no output schema, the description does the heavy lifting by naming what kinds of events appear and how to page through them; an agent could use it correctly without further context. It does not describe the shape of a returned event record, which is the remaining gap for a read tool of this kind.

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 covers 67% of parameters ('after' and 'kinds' documented, 'limit' not). The description adds meaning beyond the schema by explaining the polling idiom for 'after' (last event_id you saw) and clarifying the wildcard area syntax indirectly via the 'hiring.*' framing in the schema. Minor gap on limit and default behavior.

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 — reading recent account events caused by actors outside the bot — and enumerates the event families (applications, bookings, form responses, signatures, emails, goals) plus custom events from account_emit_event. This makes it easy to distinguish from account_audit_log and from the write-side sibling account_emit_event.

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

Usage Guidelines4/5

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

Gives an explicit consumption pattern — 'Poll with after = the last event_id you saw' — and implicitly delineates scope as external-actor activity versus bot-emitted custom events. It does not explicitly say when to prefer it over account_audit_log, 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.

account_export_allExport everythingAInspect

Everything this account holds, in ZIP files of up to 24 MB saved to its file store: every record of every area as JSON Lines, and the stored files themselves, with a README saying what is where. Credentials are left out. Runs in the background: poll the call with account_get_call; the result has a download link for each part. The parts open only for this key and for the owner's and admins' own keys that neither only read nor only draft. A key of a team other than the company-wide one gets owner_required. Free (EU Data Act). One at a time, three a day; the owner is emailed when an export is made. Free. Runs in the background: the reply has a call_id; poll it with the account_get_call tool or GET /v1/calls/.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the annotations: discloses that the job is asynchronous with a call_id and download link per part, that credentials are excluded, that parts are decryptable only by this key and by owner/admin keys with sufficient permissions, and that a non-company team key gets owner_required. It also warns that the owner is emailed and that free-tier quotas apply, so the agent knows the side effects of a non-readOnly, non-idempotent call.

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 content is front-loaded and useful, but there is real duplication: 'Free' is stated twice and the background/polling instruction is given twice with different wording ('poll the call with account_get_call; the result has a download link for each part' vs 'the reply has a call_id; poll it with the account_get_call tool or GET /v1/calls/<id>'). The garbled sentence about which keys can open the parts also costs 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 zero-parameter, no-output-schema job tool, the description carries the burden well: it explains what is produced, how to retrieve it, and what access and quota rules apply. It omits retention/expiry of the download links and leaves the key-permission rule phrased ambiguously, which is the only 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?

The tool takes zero parameters, so there is nothing to disambiguate and the baseline of 4 applies. The description correctly offers no parameter discussion.

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 with precise scope: everything the account holds, as JSON Lines per area plus stored files, in ZIPs up to 24 MB written to the file store. That scope distinguishes it from the narrower account_export_person and books_export siblings without needing to name them.

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: it is an asynchronous job, you must poll with account_get_call, and it is rate limited to one at a time and three per day. It never explicitly routes the agent to account_export_person or books_export for narrower exports, so the alternative-selection guidance is implied only by scope.

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

account_export_personExport a person's dataAInspect

Everything account_find_person finds about one person in one ZIP in the file store: their records as JSON Lines (credentials left out) and the files those records point to, like a CV. Give the person the download link when they ask for a copy of their data (GDPR Art. 15 and 20), once you know it is them. The ZIP opens only for this key and for the owner's and admins' own keys that neither only read nor only draft. A key of a team other than the company-wide one gets owner_required: pass the request to the owner. Free; 20 a day. Free.

NameRequiredDescriptionDefault
emailNoThe person's email address.
phoneNoTheir phone number in international format, like +1 503 555 0145.

TDQS

A4.2/5.0
Behavior5/5

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

Placeholder

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?

Placeholder

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?

Placeholder

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?

Placeholder

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 action and resource ('everything account_find_person finds about one person in one ZIP') and enumerates the contents (JSON Lines records minus credentials, plus referenced files like a CV). An agent can distinguish it from account_export_all and account_find_person 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 Guidelines4/5

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

Gives a clear trigger (

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

account_find_personFind a person's dataA
Read-onlyIdempotent
Inspect

Every record this account holds about one person, by their email address or phone number, across every area: CRM, chats, emails, tickets, forms, bookings, calls, applications, invoices, orders, newsletters, HR and the call log, with their chats and CRM history. For a person who asks what the business keeps about them (GDPR Art. 15). Shows each kind with its count and ids; account_export_person gives them a copy, account_erase_person erases what may go. Free.

NameRequiredDescriptionDefault
emailNoThe person's email address.
phoneNoTheir phone number in international format, like +1 503 555 0145.

TDQS

A4.4/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, so the bar is lower; the description still adds real value by disclosing the return shape ('each kind with its count and ids') and that the call is free. It stops short of stating match strictness (exact vs. partial), result caps, or what happens with zero hits, which for a read with no output schema would be useful.

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

Conciseness4/5

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

Front-loaded with the verb and scope, and each sentence carries distinct information (purpose, GDPR use case, return shape, alternatives, cost). The long enumeration of areas is partly redundant with 'across every area' and 'with their chats and CRM history', which is the only wasted space.

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

Completeness5/5

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

For a two-optional-param lookup with annotations covering the safety profile and no output schema, the description covers purpose, trigger, return contents, cost and sibling routing. Nothing an agent needs in order to choose and call this correctly is missing.

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

Parameters3/5

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

Schema coverage is 100% and both properties already document their formats, so baseline is 3. The description adds one meaningful nuance the schema does not — that either an email or a phone can identify the person — but does not say whether both may be supplied together or how they are combined.

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 ('Every record this account holds about one person') with an explicit scope ('across every area') and an explicit matching key (email or phone). It also names the two closest siblings, account_export_person and account_erase_person, so an agent can differentiate without opening any schema.

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

Usage Guidelines5/5

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

Gives a concrete triggering scenario ('For a person who asks what the business keeps about them (GDPR Art. 15)') and routes the adjacent intents away: export for a copy, erase for deletion. When-to-use and the alternatives are both spelled out, not inferred.

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

account_get_brandSee the business's lookC
Read-onlyIdempotent
Inspect

The name, logo, colour and footer line the business's emails and published pages carry. Free.

NameRequiredDescriptionDefault

No parameters

TDQS

C2.6/5.0
Behavior1/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 safety is fully covered. The description's only behavioral contribution beyond that is the cryptic 'Free', which reads as a stray fragment rather than a disclosed trait (no-cost read? free tier?) and is not explained.

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?

One short sentence is appropriately sized, but it is a verbless noun phrase followed by a dangling 'Free.' fragment, so it is not front-loaded with an action the agent can act on. The trailing 'Free' does not earn its place without explanation.

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 no-param, read-only tool with full annotation coverage and no output schema, the description is close to sufficient but omits what actually comes back (e.g. a URL vs. raw values) and never states the read action. It is adequate rather than complete.

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

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 is 4. The enumeration of brand fields is a small bonus that hints at the returned content.

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 enumerates what the brand consists of (name, logo, colour, footer line) and where it appears (emails and published pages), which is genuinely informative about the resource. But it never states the action – that these values are returned/read – so the verb is only inferable from the tool name. The sibling account_set_brand is not mentioned, so nothing distinguishes get from set.

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 call this versus account_set_brand, or any prerequisite such as authentication or account scope. The single word 'Free' gestures at a cost condition but is not framed as guidance. The agent must infer usage entirely from the name.

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

account_get_callGet a callA
Read-onlyIdempotent
Inspect

One call by id: its status (queued, running, succeeded, failed), cost and result. Use it to poll a background call until it finishes. Free.

NameRequiredDescriptionDefault
call_idYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (read-only, idempotent, non-destructive), and the description adds useful behavioral context: the call status values, returned cost/result, and polling usage. It does not describe auth or rate limits, but adds meaningful detail beyond annotations.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core action and return fields, followed by usage guidance and a useful cost note. No wasted text.

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

Completeness4/5

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

For a simple read tool with annotations and no output schema, the description covers the key return values and polling use case well. Minor gaps around missing/invalid call IDs or exact response shape remain, but the essential context is present.

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

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 compensate for the single call_id parameter. It only says the lookup is 'by id' and does not explain where the ID comes from or its expected format, leaving the schema to carry nearly all parameter 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?

The description gives a specific verb and resource ('One call by id') and names the returned fields (status, cost, result). It clearly distinguishes a single-call fetch from the sibling list operation.

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

Usage Guidelines4/5

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

It explicitly states the primary use case: polling a background call until it finishes. It does not mention when not to use it or point to account_list_calls for discovering call IDs, but the intended context is clear.

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

account_get_limitsRead the limitsA
Read-onlyIdempotent
Inspect

The limits a business can ask Conecto to raise (calls a minute, new email addresses a day, phone numbers and more): each one's standard and current value and the most that can be asked for, and the business's requests with their answers. Free.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/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 two real signals beyond that: the returned fields (standard, current, maximum, plus past requests and answers) and that the call is free of charge. It says nothing about auth requirements or pagination of the requests list.

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 with no filler; the parenthetical examples of limit kinds are the one mildly expendable element. The payload (what is returned) is front-loaded.

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 must describe the response, and it does: per-limit standard value, current value, maximum askable value, plus the business's requests and their answers. For a zero-parameter read tool with full annotation coverage, nothing an agent needs 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; the baseline for a no-parameter tool 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 read of a specific resource: the account's limits, their standard/current/max values, and the business's limit requests with answers. It is clearly distinguishable from the sibling account_request_limit by describing only retrieval. However, it never names that sibling to make the read-vs-request split explicit.

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

Usage Guidelines3/5

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

Usage is only implied: an agent infers it should call this to inspect limits before calling account_request_limit. There is no explicit 'use when' or 'do not use when' statement, and no prerequisites are mentioned.

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

account_list_approval_rulesList approval rulesB
Read-onlyIdempotent
Inspect

The tools that wait for a person's approval, with their thresholds and approvers. Free.

NameRequiredDescriptionDefault

No parameters

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, and destructiveHint=false, so safety is covered. The description does add value beyond them by disclosing a cost trait ('Free', presumably no quota/credits consumed) and by indicating the payload includes thresholds and approvers. It omits ordering, pagination, and whether inactive rules 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?

Two short sentences with no filler, and the substantive content leads. The telegraphic 'Free.' at the end is efficient but under-explained, and the opening phrasing reads awkwardly.

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 no-parameter read with full annotation coverage and no output schema, the description covers the essentials: what the records are and roughly what fields come back. It still leaves open whether all rules or only active ones are returned, and what 'Free' actually constrains.

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 mention of thresholds and approvers usefully previews what the result records contain.

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 gestures at approval rules ('the tools that wait for a person's approval, with their thresholds and approvers'), but calling them 'tools' rather than 'rules' muddies the subject, and it never states plainly that this returns the account's configured approval rules. An agent can roughly infer the resource, but the verb and the object are not clean.

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 and no mention of the obvious alternative, account_add_approval_rule, which creates the very objects this lists. 'Free' hints at cost but says nothing about selection criteria or prerequisites.

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

account_list_callsList callsC
Read-onlyIdempotent
Inspect

Recent calls on this account, newest first, optionally only failed or succeeded ones, or one area's. Free.

NameRequiredDescriptionDefault
areaNo
limitNo
statusNo

TDQS

C2.7/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 genuinely new behavioral facts: results are sorted newest first, scoped to this account, and "Free" (no billing/quota cost). It does not mention pagination or windowing beyond "recent".

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

Conciseness4/5

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

Roughly twenty words, front-loaded with the resource and ordering, and every clause carries a filter or a behavioral fact. The telegraphic phrasing ("or one area's") is slightly clipped but not wasteful.

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

Completeness2/5

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

With no output schema, the description should tell the agent what a returned call record looks like, and it does not. Combined with an unstated limit parameter and an undefined notion of "call", an agent cannot reliably predict the response shape before invoking.

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 the parameters and it only half does. It explains status as failed/succeeded but omits the reserved and running enum values, gestures at area ("one area's") without explaining its 52-value enum, and never mentions limit, its default of 20, or the 100 ceiling.

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

Purpose3/5

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

The description names the resource and its scope ("Recent calls on this account") and states an ordering, so the basic operation is inferable. But it never says what a "call" is here – the sibling list contains phone_list_calls/phone_get_call, so an agent cannot tell whether this is phone call history or logged API/tool invocations. The verb is also only implied by the title.

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?

It names optional filters (failed/succeeded, one area) but gives no when-to-use guidance and no alternative. Nothing tells the agent to prefer account_get_call for a single record or phone_list_calls for telephony, both of which are adjacent siblings.

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

account_list_email_templatesSee what the business's emails sayB
Read-onlyIdempotent
Inspect

Every email Conecto sends to the business's customers (bookings, applications, interviews, tests, signatures, invoices and quotes, newsletter sign-ups), with when it goes out and its subject, headline and opening words as they are now, and the {variables} each can use. Free.

NameRequiredDescriptionDefault

No parameters

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, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds that content is returned 'as they are now' (live, not cached) and that calls are free, but says nothing about volume, ordering, or pagination for what is implicitly a full enumeration.

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 front-loads the resource and its scope, then the returned fields, with the parenthetical category list doing real work in telling the agent what is covered. The trailing 'Free.' is terse but earns its place as a cost 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?

With no output schema and no parameters, the description carries the return-value burden and does so by naming the concrete fields (timing, subject, headline, opening words, variables). Only ordering/volume expectations are missing, which is minor for a small per-account listing.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate and no risk of a caller guessing at argument semantics.

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

Purpose4/5

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

The description enumerates exactly what the tool returns: every customer-facing email type (bookings, invoices, newsletter sign-ups, etc.) plus send timing, subject, headline, opening words and available {variables}. That is a specific resource picture, but the verb 'list/retrieve' is only implied and the sibling account_set_email_template (the write counterpart) is never referenced to sharpen 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 guidance, no prerequisites, and no mention of alternatives even though account_set_email_template sits adjacent in the sibling list as the editing counterpart. The 'Free.' tag signals cost of calling but not the selection context.

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

account_list_teamsList teamsB
Read-onlyIdempotent
Inspect

The account's teams, the company-wide one first: each with its areas, whether it only reads, its budget (hard or soft, and its period) and alert line, this period's spend, its ERP code, whether it is paused, its keys, and its people with who manages it. A person's own assistant works within their teams. Free.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/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 genuinely useful behavior: deterministic ordering (company-wide team first), the fact that paused teams and keys are included, and that the call is 'Free' (no billing impact). It does not address pagination or completeness of the result set.

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 content is front-loaded, but it is delivered as one very long run-on sentence enumerating roughly seven aspects of each team. The trailing sentence 'A person's own assistant works within their teams' is unclear and does not obviously help an agent decide or invoke; the field list would be far easier to parse as a structured 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 return values, and it does so thoroughly: areas, read-only flag, budget type/period/alert line, period spend, ERP code, paused state, keys, and members with manager. What's missing is ordering of the non-company teams and whether the result is paginated or truncated.

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. Nothing in the description contradicts or needs to explain a request shape.

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 it returns the account's teams with the company-wide one first, and enumerates what each team record contains. It's clear this is a read of team configuration, though the verb 'list' comes from the title rather than the description. No sibling also lists teams, so no sibling-differentiation is needed.

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 guidance, and no alternative tool is named. The phrase 'A person's own assistant works within their teams' gestures at context but doesn't tell an agent when to call this versus siblings like account_find_person or account_balance.

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

account_pause_teamPause a teamBInspect

Stops every key of a team at once, this one too if it is the team's: their calls are refused until the owner starts the team again on their account page. For a bot that misbehaves or a team that spends too fast. Free. Free.

NameRequiredDescriptionDefault
teamYes

TDQS

B3.3/5.0
Behavior4/5

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

Annotations only declare the generic flags; the description adds the substantive behavior: all keys stop, calls are refused, and the state persists until the owner resumes on their account page. It also discloses that the call is free. It omits who is permitted to invoke it and whether an already-paused team errors out (relevant 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.

Conciseness3/5

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

Front-loaded and short, but the duplicated "Free. Free." is dead weight and the clause "this one too if it is the team's" is ambiguous enough to cost the reader a re-read. Trimming those two would make this a tight two-sentence definition.

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 one-param tool with annotations and no output schema, the effect and recovery path are covered, but the missing identifier format and the missing permission/precondition info leave an agent without what it needs to call this confidently.

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

Parameters2/5

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

Schema description coverage is 0% for the single required "team" parameter, so the description must compensate and does not: nothing says whether "team" is an ID, a slug, or a display name. The phrase "this one too if it is the team's" is confusing and does not clarify the parameter.

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

Purpose4/5

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

"Stops every key of a team at once" states a specific verb (stops) and resource (team keys) and clarifies the blast radius is all keys, not one. It is clearly distinguishable from account_save_team or account_assign_team, though it never names a sibling to differentiate against.

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

Usage Guidelines3/5

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

"For a bot that misbehaves or a team that spends too fast" gives concrete trigger scenarios, and "until the owner starts the team again" implies reversibility. But there is no explicit when-not guidance (e.g. pausing a single key vs. the whole team) and no alternative tool named.

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

account_refund_topupRefund a top-upA
Destructive
Inspect

Refund a top-up paid in the last 24 hours that none of has been used yet: its credit, with the first top-up's bonus, leaves the balance, and the card gets the credit back with its tax. The service fee is kept. Without topup_id, the newest top-up (GET /v1/topups lists them with their ids). Free. Free.

NameRequiredDescriptionDefault
topup_idNo

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description explains the financial effects: credit and first top-up bonus leave the balance, the card is credited back with tax, and the service fee is kept. This is exactly the kind of consequence detail an agent needs before invoking a destructive refund operation.

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 front-loaded with the refund action and key constraints, but it is awkwardly phrased and contains a duplicated trailing sentence: 'Free. Free.' That redundancy and the run-on eligibility sentence reduce polish.

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 destructive tool with no output schema, the description covers eligibility, default behavior, financial effects, and fee treatment. An agent has enough information to decide whether and how to call 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?

Schema description coverage is 0%, so the description must carry parameter meaning. It does so by explaining that topup_id is optional and that omitting it refunds the newest top-up, with GET /v1/topups as the way to list ids.

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: refund a top-up. It also specifies the core eligibility condition (paid in the last 24 hours and unused), so the agent can distinguish this from unrelated account and books tools.

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

Usage Guidelines4/5

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

It clearly states when the tool applies: a top-up paid in the last 24 hours that has not been used. It also explains the default behavior when topup_id is omitted, though it does not name a sibling alternative or explicitly describe when not to use it.

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

account_request_limitAsk for a higher limitAInspect

Ask Conecto to raise one of the business's limits: which one (or other, saying which), the number it needs, and why, in 40 to 2,000 characters. Conecto reviews it and approves (maybe with less) or declines; the answer comes as the account.limit_request_answered event and by email to the owner, who is also told now. For an account that has topped up; one request per limit at a time, five in 30 days. Free. Free.

NameRequiredDescriptionDefault
limitYesThe limit, as account_get_limits names it, or other.
otherNoWith limit other: which limit, like "rows in one table".
amountYesThe number the business needs, in the limit's unit (5000 calls a minute).
reasonYesWhat the business does that needs it, and why the current limit is too low.

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing that the outcome is asynchronous (account.limit_request_answered event plus email to the owner), that approval may be partial ('maybe with less'), and that the owner is notified immediately as a side effect. That is exactly the mutation-and-notification context the readOnlyHint=false / destructiveHint=false pair does not convey.

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

Conciseness4/5

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

Front-loaded with the core action and dense with useful facts in two sentences, but it ends with a duplicated 'Free. Free.' and packs the eligibility, throttling and async-answer mechanics into one overloaded clause.

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

Completeness4/5

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

With no output schema, the description correctly explains how the answer arrives (event plus owner email) rather than what is returned. It stops short of saying whether a request identifier is returned or how to check a pending request, which an agent handling a follow-up would want.

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 all four parameters are already documented, including the enum list, the 40–2000 character reason bounds and the `other` fallback. The description restates those facts ('which one (or other, saying which)', 'the number it needs', '40 to 2,000 characters') without adding format or unit guidance the schema lacks, so 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?

Names a specific verb and resource: asking Conecto to raise one of the business's limits, with the inputs spelled out. The read/write split against account_get_limits is obvious from the phrasing, but the description never names that sibling, so the differentiation is inferred rather than stated.

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

Usage Guidelines4/5

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

Gives concrete eligibility and throttling conditions: only for an account that has topped up, one request per limit at a time, five in 30 days, and free. It lacks an explicit alternative or exclusion (e.g. 'to see current limits use account_get_limits', 'do not use for billing/top-up issues, use account_refund_topup'), which keeps it below a 5.

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

account_save_teamCreate or change a teamA
Idempotent
Inspect

A department, location or project group of the account, like Support, Finance or the Hamburg shop. Its keys (POST /v1/keys with "team") can only work in its areas, only read when read_only is on, and spend against its budget (monthly_budget_usd per budget_period: a month, a fiscal quarter or year, or a project total): a hard budget refuses the call that would pass it, a soft one only warns. At alert_percent you get the event account.budget_alert and the owner an email, once a period. erp_code is the team's cost center in the company's ERP, for statements. drafts_only makes every write of its keys wait for one of its managers (or the owner), for a new bot that should only draft. mailboxes are the Microsoft 365 or Google mailboxes its keys may act as. You may make a team and narrow one; widening its areas, letting it write, ending drafts only, switching a hard budget to soft, and raising or removing a budget are the owner's, on their account page, when the account has an owner email. The company-wide team holds every key no other team does and is never limited to areas. $0.001. Costs $0.001 per call; nothing if it fails.

NameRequiredDescriptionDefault
nameYes
areasNoThe areas its keys may work in (account tools always); null for every area.
budgetNohard refuses calls past the budget; soft only warns.
erp_codeNo
new_nameNoRenames the team; its keys, spend and budget stay with it.
mailboxesNoThe Microsoft 365 or Google mailboxes its keys may act as; null for every mailbox the connection lists.
read_onlyNoIts keys only read, and get links that act for whoever opens them as "[redacted]".
drafts_onlyNoEvery write of its keys waits for a person, and they get links that act for whoever opens them as "[redacted]".
alert_percentNo
budget_periodNoWhat the budget is for: a month, a quarter or a year of the account's fiscal calendar, or a project total until budget_ends_on.
budget_ends_onNoThe last day of a project budget, like 2026-12-31.
sees_sensitiveNofalse hides suppliers' bank details and HR notes and contracts from its keys; only the owner turns it on.
monthly_budget_usdNonull counts the spend without a cap.

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations, it discloses the hard-vs-soft budget enforcement outcome ("a hard budget refuses the call that would pass it, a soft one only warns"), the alert event and email emitted at alert_percent, key-scoping effects of read_only/drafts_only/mailboxes, the special company-wide team behavior, and the cost model including no charge on failure. None of this is inferable from readOnlyHint/idempotentHint 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?

It is a single dense paragraph in which the most important fact (this tool creates or changes a team) appears only after a long definitional preamble, making it hard to scan. The cost is stated twice ("$0.001." and "Costs $0.001 per call; nothing if it fails."), which is wasted space in an otherwise information-dense description.

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 13-parameter upsert with no output schema, the description covers permissions, budget enforcement, alerting, drafting/mailbox scoping, the company-wide special case, and billing behavior. The only gap is the return value, which is not critical for calling the tool 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 77%, so the baseline is around 3, but the description adds real meaning: budget_period is tied to monthly_budget_usd, budget hard/soft behavior is spelled out, erp_code is contextualized as a cost center for statements, and drafts_only is explained as writes waiting for a manager or owner. Some parameters (name, new_name, alert_percent range) get no narrative help beyond the schema, keeping it out of 5 territory.

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 defines the resource precisely ("A department, location or project group of the account...") and later states the operations it performs ("You may make a team and narrow one"), so an agent can identify it as the create/update tool for teams. However, the actual verb+action is buried mid-paragraph rather than front-loaded, and the distinction from siblings like account_list_teams or account_pause_team is only implicit.

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

Usage Guidelines5/5

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

It draws an explicit boundary of what this tool can do (create a team, narrow its areas) versus what only the owner can do on the account page (widening areas, enabling writes, ending drafts-only, soft-to-hard budget switching, raising/removing budgets), including the precondition "when the account has an owner email." That is a clear when/when-not with a named alternative path.

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

account_set_brandSet the business's lookA
Idempotent
Inspect

The business's name as the sender, its logo (a PNG, JPEG, WebP or GIF from the file store), its colour and a footer line (an address, a legal line), on every email to its customers (bookings, applications, tests, signatures, invoices, newsletters, replies) and on its published pages (forms, booking, careers, newsletters, status, views). Only what you pass changes; an empty string clears it. Mail from Conecto to you keeps Conecto's look. Costs $0.001 per call; nothing if it fails.

NameRequiredDescriptionDefault
colourNoHex, like #1a73e8; empty for none.
footerNo
remove_logoNo
sender_nameNo
logo_file_idNo

TDQS

A4.7/5.0
Behavior5/5

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

It provides highly valuable behavioral constraints beyond annotations, such as listing every specific location of brand usage (e.g., 'forms, status, views'), specifying file formats for the logo (PNG, JPEG, etc.), and critically, stating 'Only what you pass changes; an empty string clears it.'

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 dense and long, which reduces conciseness. However, this length is necessary to cover the vast scope of affected systems and behavioral rules, making the verbosity justified.

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?

The description is exceptionally complete, detailing not only the parameters but also the cost of the operation and the exact scope of its influence across the application, addressing potential agent questions about side effects.

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?

Given the very low schema coverage (20%), the description is essential. It explains the functional purpose of each parameter (e.g., 'Hex, like #1a73e8' for color) and defines critical operational semantics like using an empty string to clear a setting.

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 explicitly states the goal: setting the business's brand (name, logo, color, and footer). This is immediately clear and distinguishes it from potential retrieval tools like `account_get_brand`.

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 tool clearly defines its comprehensive scope—branding applies to all customer emails and published web pages. It doesn't compare it to other setters, but its detailed list of effects defines its operational niche well.

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

account_set_email_templateRewrite one of the business's emailsA
Idempotent
Inspect

Change an email's subject, headline or opening words in the business's own voice, with {variables} from account_list_email_templates (like {name} or {when}). The facts under them (times, places, amounts, links and buttons) stay as they are. Only what you pass changes; an empty string brings back the original words. Plain text; a blank line starts a new paragraph. Costs $0.001 per call; nothing if it fails.

NameRequiredDescriptionDefault
emailYesLike booking_booked or invoice_sent.
openingNo
subjectNo
headlineNo

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing cost ($0.001 per call, free on failure), the reversibility contract (empty string restores the original), the blast radius (facts, links and buttons are untouched), and the text format rules (plain text, blank line = new paragraph). These are all consistent with destructiveHint=false and idempotentHint=true.

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 sentences, front-loaded with the verb and scope, then the dependency, the reversibility rule, the formatting rule and the cost. No filler, and each sentence carries a fact an agent needs to call it correctly.

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

Completeness4/5

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

For a 4-parameter mutation with no output schema, the description covers scope, cost, failure behavior, variable sourcing and formatting. It does not say what the response contains or whether the change is immediately live, but with no output schema that gap is minor.

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 25%, so the description carries real weight: it explains the empty-string reset semantics, the {variable} placeholders permitted in values, and the plain-text/blank-line formatting for the text fields. It leaves the mapping of individual parameters (e.g. which field the 200 vs 4000 character limits apply to) to the schema, which is acceptable.

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

Purpose5/5

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

States a specific verb and resource ('Change an email's subject, headline or opening words') and bounds the scope explicitly: the underlying facts, links and buttons stay fixed. It also names the sibling read tool it depends on (account_list_email_templates), so an agent can distinguish it from listing or brand tools 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 Guidelines4/5

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

Gives clear operative context: variables must come from account_list_email_templates ({name}, {when}), and passing an empty string reverts to the original wording. It stops short of explicit when-not-to-use guidance (e.g. that this cannot change times, places or amounts, only the wording), so it lands at clear-context-but-no-exclusions.

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

account_set_owner_emailName the business's ownerAInspect

When the account was made without the owner's email: send that person a link to confirm they own it. Once they confirm, the owner gets the account's warnings and approval requests, and only the owner raises limits. Nothing changes until they open the link. Free. Free.

NameRequiredDescriptionDefault
emailYes

TDQS

A3.5/5.0
Behavior4/5

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

Beyond the annotations, the description discloses meaningful behavior: the effect is deferred ("Nothing changes until they open the link") and the consequences of confirmation (owner receives warnings and approval requests, only the owner raises limits). It also signals the call is free. It omits what happens on repeat invocation, which matters given idempotentHint=false, and the duplicated "Free. Free." suggests a drafting error.

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 text is short and the precondition is front-loaded, but the trailing "Free. Free." is a literal duplication that wastes space and looks like a copy error. The sentences otherwise earn their place by explaining the confirmation flow.

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

Completeness3/5

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

For a single-parameter mutation with no output schema, the description covers the effect and the deferred activation, which is the essential mental model. It is still missing re-invocation semantics and the overwrite/conflict case for an account that already has an owner, gaps that matter for a non-idempotent write.

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

Parameters3/5

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

Schema coverage is 0%, so the single parameter carries no structured documentation. The description implicitly identifies it as the owner's email address ("send that person a link"), which is useful, but it says nothing about format, validation, or what happens if the address is wrong or already in use.

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 concrete action: sending a confirmation link to the owner's email so they can claim ownership of the account. It is clear what the call accomplishes, but it does not distinguish itself from the sibling account_owner_link, which an agent could easily confuse with this 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?

"When the account was made without the owner's email" gives an implied precondition for use, which is more than most tools offer. However, there is no guidance on when NOT to use it (e.g., when an owner already exists) and no mention of the account_owner_link or account_assign_team alternatives.

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

books_apply_bank_rulesBook lines by the bank rulesAInspect

Book every new bank line a rule matches, oldest first, each by the first rule that matches (up to limit), on one bank account or all. Run it after books_import_bank. Lines no rule matches wait for books_match_bank_lines; a line the books can't take (a locked month) is listed under skipped with why. $0.02 per line booked, as matching it by hand. Costs $0.02 per bank line booked; nothing if none are found.

NameRequiredDescriptionDefault
limitNo
bank_accountNoOnly lines on this bank account (its code).

TDQS

A4.4/5.0
Behavior4/5

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

Adds real behavior beyond the annotations: per-line cost, zero cost when nothing matches, and a failure mode (locked month → listed under skipped with a reason). It does not address whether re-running re-books previously booked lines, 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.

Conciseness3/5

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

Front-loaded and mostly tight, but the cost is stated twice in nearly identical words ('$0.02 per line booked' and 'Costs $0.02 per bank line booked; nothing if none are found'), wasting a full clause.

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

Completeness4/5

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

Covers preconditions, scope, cost, and the skipped outcome, which is strong for a mutation tool with no output schema. It does not describe what a successful result returns (e.g., count booked), leaving the agent to infer the 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 coverage is 50% (limit undocumented in the schema), but the description covers both: 'up to limit' and 'on one bank account or all' clarify that bank_account is optional and scoping-only. It still doesn't state what limit bounds (lines booked vs. lines scanned).

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 ('Book every new bank line a rule matches') plus scope details: oldest-first ordering, first-matching-rule semantics, limit, and one-or-all bank accounts. It is clearly distinct from books_match_bank_lines, which it names as the fallback for unmatched lines.

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

Usage Guidelines5/5

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

Explicit sequencing ('Run it after books_import_bank') and explicit routing for the alternative ('Lines no rule matches wait for books_match_bank_lines'). The agent knows both when to call this and when not to.

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

books_attach_receiptAttach a receiptAInspect

Attach a receipt or invoice from the file store to an entry that has none. It stays with the books: the file can't be deleted while the entry has it. Costs $0.01 per call; nothing if it fails.

NameRequiredDescriptionDefault
entryYesThe entry number.
file_idYesA file_id from the file store.

TDQS

A4.4/5.0
Behavior5/5

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

Goes well past the annotations by disclosing a real-world side effect the hints cannot express: the file becomes un-deletable while attached. It also states the cost model ($0.01 per call, nothing on failure), which is behaviorally material for an agent deciding whether to retry.

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

Conciseness5/5

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

Three short sentences, each carrying distinct information: what it does, the persistence consequence, and the price. The primary action is front-loaded and nothing is redundant.

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

Completeness4/5

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

With only two required params, no nesting, and no output schema, the definition covers purpose, precondition, side effect, and cost. The one gap is that nothing says what comes back on success (an attachment id or updated entry) or how partial failures behave, though the cost sentence partly addresses failure.

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

Parameters3/5

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

Schema coverage is 100% and both parameters are already documented, so the baseline is 3. The description only echoes the file source ("from the file store") that the schema already states, adding no format or constraint detail of its own.

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 (attach) and resource (a receipt or invoice file) plus the target (an entry) and the eligibility constraint (an entry that has none). None of the sibling books_* tools do this, and the wording makes the operation unmistakable 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?

"to an entry that has none" gives an explicit precondition that tells the agent when this tool applies and implicitly when it will fail. It stops short of naming alternatives or describing what to do if the entry already has a receipt, so it falls one step below fully explicit routing.

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

books_bank_linesList bank linesA
Read-onlyIdempotent
Inspect

Imported bank lines, by default those still to match, oldest first, each with up to three suggestions of what it was: entries already booked (same amount, close in date), an open invoice it pays (money in) or an open supplier bill it pays (money out), or the account earlier lines from the same party went to. Suggestions are plain rules; you decide, with books_match_bank_lines (pass a suggestion's match as it is). A first suggestion with sure: true is one the books are sure of (a bank rule, or the number and the exact amount, well ahead of any other); such lines can be matched together in one call. Free.

NameRequiredDescriptionDefault
toNoYYYY-MM-DD
fromNoYYYY-MM-DD
limitNo
offsetNo
statusNonew
accountNoAn account code from the chart, e.g. "6600".

TDQS

A4.1/5.0
Behavior4/5

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

With annotations already confirming readOnlyHint/idempotent/non-destructive, the description adds real value: default filtering to unmatched, oldest-first ordering, the fact that suggestions are heuristic rules rather than decisions, and the meaning of 'sure: true' including that such lines can be matched in bulk. It does not discuss pagination behavior (limit/offset defaults) or what an empty suggestion list means.

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 default behavior, and nearly every clause carries information (sort order, suggestion types, match handoff, sure-flag semantics). The opening sentence is dense and comma-spliced, making it slower to parse than necessary, but there is no filler.

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

Completeness4/5

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

No output schema exists, and the description compensates well by explaining the suggestion structure and the sure flag. For a 6-parameter read tool with 50% schema coverage, the gap is pagination and how non-default statuses change the result set.

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% — from/to and account are documented in the schema, but limit, offset, and the status enum are not. The description covers the status default ('those still to match') implicitly, which helps, but gives no guidance on pagination or on switching to matched/ignored/all. Baseline 3 is warranted since the schema does part of the work.

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 ('Imported bank lines') along with scope ('by default those still to match, oldest first') and the shape of the payload (up to three suggestions per line). It also names the downstream sibling books_match_bank_lines, so an agent can tell it apart from books_import_bank and books_apply_bank_rules without opening any schema.

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

Usage Guidelines4/5

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

Explicitly frames this as the inspection step before books_match_bank_lines and notes that suggestions are 'plain rules; you decide,' which clarifies the division of labor. It also implies the default filter (unmatched lines) which is the common entry point. It stops short of an explicit 'use this instead of X when status=matched' statement, but the routing is clear.

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

books_close_yearClose a fiscal year for goodA
Destructive
Inspect

Close a fiscal year once its accounts and tax returns are final: nothing can be booked on or before its last day again, by any tool, invoice or unlock, and every earlier year is closed with it. It can't be undone; a correction found later is booked in the open year. Monthly work uses books_lock instead. Costs $0.001 per call; nothing if it fails.

NameRequiredDescriptionDefault
reasonNo
year_endYesThe fiscal year's last day, like 2025-12-31.

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond destructiveHint=true: it discloses the exact blast radius ('nothing can be booked on or before its last day again, by any tool, invoice or unlock'), the cascade ('every earlier year is closed with it'), irreversibility, the sanctioned workaround, and pricing ('$0.001 per call; nothing if it fails'). This is the kind of consequence detail an agent needs before an irreversible year-end action.

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 sentences ordered by importance: what it does, irreversible consequences, the alternative, then cost. No filler; each sentence adds decision-relevant information.

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

Completeness5/5

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

For an irreversible, non-idempotent mutation with no output schema, the description covers consequences, cascade effects, irreversibility, the alternative tool, and pricing. Nothing an agent needs to decide whether to call it is missing, aside from the minor undocumented 'reason' 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 coverage is only 50%: year_end is well documented in the schema, but 'reason' has no description in either the schema or the description. The description reinforces the meaning of the date implicitly ('its last day'), but adds no explicit parameter guidance, so baseline 3 is right with the undocumented reason field as an open 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?

Names a specific verb and resource ('Close a fiscal year') and bounds the scope precisely ('once its accounts and tax returns are final'), and immediately distinguishes it from the sibling books_lock by scope (year-end vs monthly). An agent can pick this out of the large books_* family 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?

Explicitly states the prerequisite (accounts and tax returns final) and names the alternative for the common other case ('Monthly work uses books_lock instead'). It also tells the agent what to do later instead of reopening ('a correction found later is booked in the open year').

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

books_delete_assetDelete an assetA
DestructiveIdempotent
Inspect

Take an asset registered by mistake out of the register. Only while none of its depreciation is booked and it is not sold or written off: else undo its depreciation first (books_depreciate undo_after with asset). The books don't change. Free.

NameRequiredDescriptionDefault
assetYesThe asset's number, like "FA-0001" (books_list_assets).

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 and idempotentHint=true, but the description adds important accounting behavior: the books do not change and the operation is free. It does not discuss irreversibility or permission requirements, so it is not fully exhaustive, but it adds meaningful 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.

Conciseness5/5

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

Three short sentences with no wasted words. The precondition is front-loaded and the exception/remedy follows immediately, making the guidance easy to scan.

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 delete with no output schema, the description covers what the tool does, when it is allowed, and the accounting effect. It could say more about irreversibility or error behavior, but annotations and the schema already carry much of that burden.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema itself documents the asset parameter with format and a pointer to books_list_assets. The description does not add further parameter-level meaning, so the baseline score 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?

The description states a specific action on a specific resource: taking an asset registered by mistake out of the register. It also distinguishes this from normal disposal by requiring that the asset is not sold or written off, which helps an agent separate it from books_dispose_asset.

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

Usage Guidelines4/5

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

It gives an explicit precondition: only use while no depreciation is booked and the asset is not sold or written off. It also names the remedy when depreciation exists (books_depreciate undo_after). It does not explicitly name books_dispose_asset as the alternative for sold/written-off assets, 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.

books_delete_bank_ruleDelete a bank ruleA
DestructiveIdempotent
Inspect

Delete a bank rule. What it booked stays booked. Free.

NameRequiredDescriptionDefault
nameYesThe rule's name, e.g. "Bank fees".

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=true, so the safety profile is known; the description adds the genuinely useful post-condition that already-booked transactions are unaffected by the deletion. The trailing 'Free.' is opaque and adds no usable behavioral signal.

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

Conciseness4/5

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

Three short sentences with the action front-loaded and no filler. The final fragment 'Free.' is cryptic enough that it mildly undercuts an otherwise tight, well-ordered description.

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 delete tool with annotations covering destructiveness and idempotency plus a fully described schema, the description supplies the one missing piece an agent would want: that historical bookings persist. Only the opaque 'Free.' and lack of sibling routing keep it from being complete.

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

Parameters3/5

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

Only one parameter exists and the schema fully documents it ('The rule's name, e.g. "Bank fees"') at 100% coverage, so the baseline of 3 applies. The description adds nothing about the name identifier (e.g., whether it must match exactly or is case-sensitive).

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

Purpose5/5

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

The description uses a specific verb and resource ('Delete a bank rule') that maps one-to-one with the tool name and cleanly separates it from siblings like books_save_bank_rule, books_list_bank_rules, and books_apply_bank_rules.

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 never states when to delete a rule versus editing it via books_save_bank_rule, nor whether deletion is reversible or requires prerequisites. The only adjacent statement, 'What it booked stays booked,' is a consequence note rather than usage guidance.

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

books_delete_budgetDelete a budgetA
DestructiveIdempotent
Inspect

Delete a budget. The books don't change. Free.

NameRequiredDescriptionDefault
nameYesThe budget's name, e.g. "2026".

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds useful context beyond annotations by clarifying that the underlying books are unaffected and that the operation is free, which matters for an agent assessing side effects.

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

Conciseness5/5

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

Three very short sentences, front-loaded with the action and followed by the two most relevant side-effect facts. Nothing is wasted for such a simple tool.

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 delete tool with full schema coverage and rich annotations, the description covers the essential action plus two useful behavioral facts. It does not explain missing-budget behavior, though idempotentHint already addresses that.

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 required parameter with 100% schema description coverage, including an example. The description does not add any parameter-level detail, so the schema does all the work and 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?

The description states a specific verb and resource: 'Delete a budget.' It is immediately distinguishable from siblings like books_save_budget and books_list_budgets 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 Guidelines2/5

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

The description gives no explicit guidance on when to choose this tool versus alternatives or what prerequisites exist. The name and title imply a delete action, but the description itself does not route the agent beyond the obvious verb.

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

books_depreciateBook depreciationAInspect

Book the depreciation of every registered asset through a month's end (default: the end of last month), like Xero's run depreciation: one entry per month, dated its last day, from the month after the last one booked, so running it again books nothing twice. Months in a locked period are refused; catch_up: true books them in the first open month instead. undo_after books the opposite of what was booked for the months after that date, for every asset or the one asset names; undo before changing an asset's cost, life or method. Costs $0.01 per call; nothing if it fails.

NameRequiredDescriptionDefault
assetNoOnly this asset.
throughNoYYYY-MM-DD
catch_upNo
undo_afterNoUndo the months after this date.

TDQS

A4.7/5.0
Behavior5/5

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

Adds a lot beyond the annotations: one entry per month dated its last day, continuity from the last booked month, locked-period refusal with catch_up fallback, reversal semantics for undo_after, and pricing ($0.01 per call, nothing if it fails). The only tension is that 'running it again books nothing twice' reads as idempotent while idempotentHint=false, but that hint reflects the undo/catch_up modes rather than a real 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 primary action and default, and no sentence is filler. It is one long dense run-on with several nested clauses (catch_up, undo_after, pricing), which costs some readability.

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

Completeness5/5

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

No output schema and no annotation detail on effects, yet the description covers what gets booked, how repeats behave, what gets refused, fallbacks, reversal scope and cost. An agent has everything needed to call it correctly.

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

Parameters5/5

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

Schema coverage is 75%, and the prose adds meaning the schema lacks: through defaults to last month end, asset scopes undo to one asset versus all, catch_up redirects locked months to the first open month, and undo_after reverses months after a date. All four parameters gain semantics beyond their bare schema entries.

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: book depreciation for every registered asset through a month's end, with a concrete default (end of last month) and a named analog (Xero's run depreciation). It is clearly distinct from books_save_asset, books_dispose_asset and books_close_year even though it never names them.

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

Usage Guidelines4/5

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

Gives strong when-conditions: run for a month end, use catch_up when the period is locked, use undo_after before changing an asset's cost, life or method, and running again is safe. It stops short of naming sibling tools or stating when not to depreciate at all, so it stops at 4.

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

books_dispose_assetSell or write off an assetAInspect

Take an asset out of the books, sold or written off, like Xero's dispose. Its depreciation is booked through the month it goes first (to the day with actual_days; what was booked for later months is undone), then one entry takes its cost and accumulated depreciation out, books price to paid_to and the difference as a gain or a loss on gain_account (made as 4950 Gains and losses on assets sold when missing). paid_to is the bank account the money went to, or the income account the invoice to the buyer booked it to, which this then clears. A write-off has no price. undo: true brings it back. Costs $0.01 per call; nothing if it fails.

NameRequiredDescriptionDefault
dateNoYYYY-MM-DD
undoNoBring a sold or written off asset back.
assetYesThe asset's number, like "FA-0001" (books_list_assets).
priceNoWhat it sold for before tax. Default 0, a write-off.
paid_toNoWhere the price went, e.g. "1010".
catch_upNo
gain_accountNoAn account code from the chart, e.g. "6600".

TDQS

A4.6/5.0
Behavior5/5

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

Goes well past the annotations: it explains the depreciation catch-up through the disposal month, the reversal of later-month depreciation, the single entry clearing cost and accumulated depreciation, the default gain account (4950) created when missing, and how paid_to is cleared. It also discloses pricing ('Costs $0.01 per call; nothing if it fails'), which no annotation covers.

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

Conciseness4/5

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

Front-loads the core action and mode distinction, and every clause carries information about accounting behavior. It is dense and slightly run-on with nested parentheses, but there is 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 seven-parameter mutation with no output schema, it covers the accounting effects, defaults, undo, and cost model thoroughly. The one hole is catch_up, which is undocumented in both the schema and the description.

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

Parameters5/5

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

Schema coverage is already 86%, yet the description still adds real meaning: price defaults to 0 meaning a write-off, paid_to is the bank or income account that gets cleared, and gain_account defaults to a newly created 4950 account. Only catch_up is left unexplained in both places, a minor gap against otherwise strong added semantics.

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

Purpose5/5

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

Names a specific verb and resource ('take an asset out of the books, sold or written off') and immediately distinguishes itself from the plain-delete sibling by describing disposal accounting rather than removal. An agent can tell this apart from books_delete_asset and books_depreciate 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 clear operating conditions: 'A write-off has no price' and 'undo: true brings it back', which tells the agent how to select the two modes and how to reverse. It does not explicitly say when to prefer this over books_delete_asset or books_depreciate, leaving that inference to the agent.

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

books_exportExport the booksAInspect

A file in the file store, with a download link: journal (a CSV of every line of every entry from-to, for an accountant or another program), accounts (the chart with balances on to) or datev (a DATEV Buchungsstapel for a German tax adviser: one fiscal year, from-to, default the year so far; needs the datev settings once) or fec (the French Fichier des Écritures Comptables for a tax audit: the fiscal year that holds to, every entry; needs the fec settings once). Conecto files no tax returns: for UK VAT (Making Tax Digital) the journal CSV is the digital link into bridging software. Costs $0.001 per call; nothing if it fails.

NameRequiredDescriptionDefault
toNoYYYY-MM-DD
fecNoFor what: fec, kept for the next export. siren (9 digits; read from a French VAT ID when left out); accounts: each account code used to its plan comptable général number, like {"4000": "706000", "1010": "512000"} (same_numbers: true when the chart already uses them).
fromNoYYYY-MM-DD
whatYes
datevNoFor what: datev, kept for the next export. adviser (Beraternummer) and client (Mandantennummer) from the tax adviser; chart "03" (SKR03) or "04" (SKR04); account_length (4 to 8, default 4); accounts: each account code used to its DATEV number, like {"4000": "8400", "1010": "1200"} (same_numbers: true when the chart already uses them); tax_keys: a tax's BU-Schlüssel when it isn't German VAT at 19 or 7 percent.

TDQS

A3.7/5.0
Behavior4/5

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

Beyond the annotations it discloses real behavioral traits: a $0.001 per-call cost that is waived on failure, the fact that datev/fec settings are persisted 'for the next export' (explaining the non-readOnly, non-idempotent hints), and that no tax returns are filed. It does not describe the failure modes, the download link's lifetime, or how long generated files persist in the store.

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?

One long comma-chained sentence with three 'or ... or ...' parentheticals buries the core purpose behind the return-value framing. Every clause carries information, but the structure is not front-loaded — an agent must read the whole paragraph to learn what the tool does.

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 five parameters, nested objects and no output schema, the description covers the return artifact, the cost model, and the settings-persistence side effect, which is most of what an agent needs. It leaves gaps on the exact file naming/expiry and on default date ranges for the non-datev formats.

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

Parameters4/5

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

Schema coverage is already 80% with rich nested descriptions, and the description still adds cross-parameter meaning: datev defaults 'the year so far', fec covers 'the fiscal year that holds to' with every entry, and journal spans from-to. It clarifies which nested object (datev/fec) applies to which `what` value and that those settings are reused, though it doesn't explain the `from`/`to` defaults for journal/accounts.

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 concretely enumerates the four exportable artifacts (journal CSV, accounts chart, DATEV Buchungsstapel, FEC) and states the output is a file in the file store with a download link, so the resource is unambiguous. It never names the sibling exports/reports (books_report, tables_export, inventory_export) or explains how this differs, so 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 Guidelines3/5

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

It gives solid audience-based selection cues for the `what` enum (accountant/program, German tax adviser, French tax audit, UK VAT MTD bridging software), which effectively says when to pick each format. It gives no guidance on when NOT to use this versus books_report or the other export tools, and no prerequisites for obtaining the datev/fec settings beyond 'needs the ... settings once'.

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

books_getRead the books' settingsB
Read-onlyIdempotent
Inspect

The base currency, start date, fiscal year, locked period, which accounts hold which role, where invoice payments land, the taxes, how many entries there are and how many bank lines wait to be matched. Free.

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 readOnly, idempotent, closed-world and non-destructive, so the safety profile is covered. The description's added value is the detailed inventory of what is returned, including readiness signals like entry counts and pending bank lines, though it says nothing about permissions or whether the settings are scoped per organization.

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 listing outputs, essentially front-loaded with no filler except the stray "Free." fragment. It is efficient, though the missing verb makes the list slightly harder to parse as a return contract.

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, so the description must carry the return-content burden, and it does so by naming each settings category plus counts. For a trivial zero-parameter read tool that is close to sufficient; only the absence of a clear 'this returns a settings object' framing and any auth caveat keeps it from a 5.

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 applies and there is nothing the description needs to disambiguate. The description correctly spends its effort on outputs instead of inventing parameter guidance.

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 is a noun list of returned settings (base currency, fiscal year, locked period, roles, taxes, entry/bank-line counts) rather than a verb+resource statement, so the action ("read"/"return") must be inferred from the name and title. It does enumerate concrete content, which helps distinguish it from write siblings like books_save_accounts, but it never contrasts with books_setup or books_lock, the nearest ambiguities.

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 when-to-use, when-not-to-use, or alternative is offered. An agent cannot tell from the description whether this is the correct call before configuring the books versus inspecting state, nor how it differs from books_setup; the trailing "Free." notes cost but not selection criteria.

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

books_import_bankImport a bank statementAInspect

Read a bank statement from the file store onto a bank account (default the bank account): CSV as the bank exports it, CAMT.053 (.052, .054) or OFX/QFX. CSV columns are found by their headers in several languages; when they aren't, name them with columns. Lines imported before are skipped, so overlapping statements are fine. Each line then waits in books_bank_lines to be matched. Charged per line added. Free.

NameRequiredDescriptionDefault
accountNoAn account code from the chart, e.g. "6600".
columnsNoCSV header names, e.g. {"date": "Buchungstag", "amount": "Betrag", "description": "Verwendungszweck"}. money_in and money_out are for files with two amount columns; direction for a debit/credit marker column.
decimalNoThe CSV's decimal mark.
file_idYesA file_id from the file store.
currencyNoThe statement's currency when the file doesn't say. Default the base currency.
max_linesNoThe most lines this call may add (and hold the price for).
date_formatNo

TDQS

A4.3/5.0
Behavior4/5

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

Adds behavior beyond the annotations: multi-language header detection, skipping of previously imported lines, the resulting state of lines in books_bank_lines, and that max_lines caps both lines added and price. The per-line charge note is useful cost context; the trailing 'Free.' fragment is ambiguous and slightly muddies the pricing signal.

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?

Four compact sentences, front-loaded with the core action and formats, then the fallback, then dedupe, then outcome. The closing 'Charged per line added. Free.' is a fragment whose meaning ('free' for what?) costs a beat of 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 7-parameter, nested-object import with no output schema, the description covers formats, header detection, dedupe, downstream state and pricing — enough to call it correctly. It stops short of saying what the call returns (lines added vs. skipped counts), which would have closed the last gap given no output schema exists.

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

Parameters4/5

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

Schema coverage is already 86%, so the baseline is 3; the description earns above that by explaining the columns fallback in terms of real failure modes (headers in several languages) rather than restating field docs. It does not touch decimal, date_format, currency, or max_lines semantics, leaving those entirely to the schema.

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

Purpose5/5

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

States a specific verb and resource — read a bank statement from the file store onto a bank account — and enumerates the accepted formats (CSV as exported, CAMT.053/.052/.054, OFX/QFX). It also distinguishes itself from the sibling cluster by describing the handoff to books_bank_lines and books_match_bank_lines, so an agent can tell it isn't the matching or listing tool.

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

Usage Guidelines4/5

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

Gives concrete when-conditions: use the columns parameter when headers aren't auto-detected, and overlapping statements are safe to import. It doesn't explicitly say what to do before (uploading to the file store) or after (calling books_match_bank_lines), but the queue reference points the agent in the right direction.

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

books_list_accountsList the chart of accountsA
Read-onlyIdempotent
Inspect

Every account with its code, type, role and balance on as_of (default today). Balance sheet accounts show their balance; income and expense accounts show the fiscal year so far. Free.

NameRequiredDescriptionDefault
as_ofNoYYYY-MM-DD
include_archivedNo

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, and the description adds useful semantics: balances are as of as_of (default today), and income/expense accounts cover fiscal year to date. It also notes the tool is free, but it omits any explanation of include_archived 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?

The description is three short sentences, front-loaded with the main purpose and followed by the important balance-scope distinction. Every sentence adds value with no repetition or 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 read-only listing tool with annotation coverage and no output schema, the description covers the returned fields, date semantics, balance interpretation, default date, and cost. The main remaining gap is that include_archived is left unexplained.

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

Parameters3/5

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

With 50% schema description coverage, the description meaningfully enriches as_of by adding the default-today rule and balance-date semantics. However, include_archived is not explained in either the schema description or the tool description, leaving one of the two parameters 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?

The description clearly identifies the resource (every account) and the fields returned (code, type, role, balance), which makes the listing purpose obvious. It does not explicitly distinguish itself from nearby tools such as account_balance or books_get, 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?

Usage is implied by the phrase 'Every account' and the balance-scope details, but there is no explicit when-to-use or when-not-to-use guidance relative to account_balance or books_get. It is adequate but leaves the agent to infer the selection context.

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

books_list_assetsList the fixed assetsA
Read-onlyIdempotent
Inspect

The asset register: each asset's cost, accumulated depreciation, book value, how it depreciates and through which month that is booked, with totals. due: what books_depreciate would book through the end of last month. check: the register held against the books per account, like Xero's fixed asset reconciliation; a difference is a purchase not registered yet, or an asset booked out another way. asset gives one asset with its schedule (depreciation and book value per fiscal year) and the months booked. Free.

NameRequiredDescriptionDefault
assetNoThe asset's number, like "FA-0001" (books_list_assets).
limitNo
offsetNo
statusNoregistered

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the description is free to spend its words on substance: what the output contains, how 'due' relates to books_depreciate, and how a reconciliation difference should be interpreted. Contexts beyond the safety profile are disclosed. Slightly muddled by the unexplained 'due'/'check' prefixes.

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 register sentence is well front-loaded and dense with useful detail, but the colon-prefixed fragments ('due:', 'check:', 'asset') read as an unlabeled key rather than prose, and 'Free.' is an orphaned trailing token whose meaning (cost of the call?) is not obvious.

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?

There is no output schema, so the description does the work of describing return fields — which it does reasonably well. But the undefined 'due'/'check' modes and the silence on the status filter and paging leave an agent without enough to choose arguments confidently for a 4-parameter listing tool.

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

Parameters3/5

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

Schema coverage is only 25%, so the description should compensate, and it partly does by explaining that 'asset' returns a single asset with its per-fiscal-year schedule. However, the 'status' enum (registered/disposed/all) and the limit/offset paging are never mentioned, and the description introduces 'due' and 'check' as if they were selectable modes even though no such parameters exist.

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

Purpose4/5

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

Opens with a concrete framing, 'The asset register', and enumerates exactly what each row carries (cost, accumulated depreciation, book value, depreciation method, months booked, totals). It distinguishes itself from books_depreciate via the 'due' note, but says nothing about how it differs from nearby readers like books_get or books_report, so sibling differentiation is only partial.

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

Usage Guidelines3/5

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

Implied usage is there — 'check' is for reconciling the register against the books and interpreting a difference as a missing purchase — but the routing is stated as free-floating field notes ('due:', 'check:') rather than explicit 'use this when' guidance, and those tokens do not map to any schema parameter. An agent must infer which arguments produce which view.

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

books_list_bank_rulesList bank rulesA
Read-onlyIdempotent
Inspect

The bank rules, in the order they are tried: their conditions, where they book, and how often and when each was last used. Free.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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

The annotations already establish safe read-only, idempotent behavior. The description adds valuable context beyond that: ordering by evaluation sequence and the shape of returned information, including last-used timing and frequency. It could say more about completeness or pagination, but it is strong for a zero-parameter list operation.

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

Conciseness4/5

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

It is front-loaded and compact, with each phrase adding information about ordering or returned fields. The trailing word 'Free' is slightly cryptic without more context, keeping 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?

For a no-parameter, read-only list with rich annotations and no output schema, the description covers the essential return contents and ordering. It does not discuss pagination or whether all rules are always returned, but the core information an agent needs is present.

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

Parameters4/5

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

There are no parameters, which sets the baseline at 4. The description adds no parameter detail because none is needed.

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

Purpose4/5

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

The description clearly identifies the resource as bank rules and adds meaningful scope: they are returned in evaluation order with conditions, booking targets, and usage recency. It does not explicitly contrast with books_apply_bank_rules or books_save_bank_rule, but the read-only listing purpose is unmistakable.

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

Usage Guidelines3/5

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

Usage is implied by the listing framing and the read-only annotation, but there is no explicit guidance on when to call this versus applying, saving, or deleting rules. With zero parameters the call is simple, so the omission is minor.

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

books_list_budgetsList budgetsB
Read-onlyIdempotent
Inspect

The budgets with their months and every line's amounts and total. Free.

NameRequiredDescriptionDefault

No parameters

TDQS

B3/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 does add genuine value by disclosing the shape of the returned data (budgets with months, per-line amounts, and totals) in the absence of an output schema, but nothing about cost, auth, or volume is clarified – 'Free' is ambiguous and could mean no charge or free-form text.

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 short, but the single sentence is awkward and front-loaded with a noun phrase rather than an action. The dangling word 'Free' adds ambiguity rather than information and does not earn its place.

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

Completeness3/5

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

With annotations covering the safety profile and no parameters, the only real gap is the return shape, which the description partially addresses (months, line amounts, totals). It should say more about the structure or at least clarify 'Free', since there is no output schema to fall back on.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The description does not need to explain any argument semantics.

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

Purpose3/5

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

The description names the resource (budgets) and hints at read-only listing content, but never states a verb like 'list' or 'retrieve' – the agent must infer from the tool name. It does distinguish itself from books_save_budget/books_delete_budget by describing returned content rather than mutation, but the phrasing ('The budgets with their months...') is a noun fragment rather than a stated purpose.

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 call this versus books_save_budget, books_delete_budget, or any reporting sibling like books_report. The trailing word 'Free' is unexplained and does not function as usage guidance.

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

books_list_claimsList expense claimsA
Read-onlyIdempotent
Inspect

Expense claims: what people paid for the business with their own money, still to repay (the default), repaid, void or all, newest first, with what each person is owed per currency; person keeps to one. Free.

NameRequiredDescriptionDefault
limitNo
offsetNo
personNo
statusNoto_repay

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, so the bar is lower. Beyond that, the description adds useful behavior: results are 'newest first', amounts owed are broken out 'per currency', and the person filter admits only one value ('person keeps to one') – details not present in 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?

The description is a single dense sentence that front-loads the resource definition. It is efficient, though phrases like 'person keeps to one' and the trailing 'Free' are terse enough to risk ambiguity.

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 four undocumented-in-schema parameters, the description covers status semantics, ordering, and per-currency amounts but omits pagination (limit/offset) and any hint of the returned fields. It is adequate but leaves real gaps for an agent configuring the call.

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

Parameters3/5

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

Schema coverage is 0%, so the description must carry parameter meaning. It explains the status enum values and their default and hints the person filter is single-valued, but says nothing about limit or offset, leaving pagination undocumented 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?

The description clearly defines the resource ('expense claims: what people paid for the business with their own money') and the statuses it can list, so an agent can tell this is a read/list operation over claims. It does not explicitly name its mutation sibling books_repay_claims, so differentiation relies on the resource wording rather than routing guidance.

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 signals the default status ('still to repay (the default)'), which is useful context for invocation, but it never states when to use this versus alternatives like books_repay_claims or books_record_expense. 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.

books_list_entriesList entriesA
Read-onlyIdempotent
Inspect

Entries newest first, each with its lines, filtered by dates, an account, where it came from (manual, expense, bank, invoice, invoice_payment, invoice_void, reversal) or text in the memo, reference or party. Free.

NameRequiredDescriptionDefault
toNoYYYY-MM-DD
fromNoYYYY-MM-DD
textNo
entryNoThe entry number.
limitNo
offsetNo
sourceNo
accountNoAn account code from the chart, e.g. "6600".

TDQS

A3.7/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 semantics, and the description still adds real value beyond them: the result ordering (newest first), the fact that each entry carries its lines, and that the call is free (no billing cost). It stops short of noting pagination defaults or result-size limits.

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, front-loaded with the ordering and payload shape, with zero filler. It is slightly hard to scan as a run-on, and the trailing 'Free' feels appended rather than integrated, but no sentence is wasted.

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

Completeness4/5

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

For an optional-parameter list tool with no output schema, the description covers the essentials: what is returned (entries with lines), ordering, and the main filter axes. The gaps are the pagination and entry-number parameters and the truncated source enum, which the schema covers on its own.

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 50% schema coverage, the description compensates partially: it explains that `text` searches memo, reference and party, and that the date and account filters exist. However, it never mentions `entry`, `limit` or `offset`, and its enumerated source list (7 values) is a subset of the 17-value schema enum, so an agent relying on the prose would under-use the filter.

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

Purpose4/5

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

Names the resource (entries) and adds concrete distinguishing detail: newest-first ordering, each entry returned with its lines, and the available filters. An agent can tell this is a read/list tool for the books ledger, distinct from books_get or books_report, though the verb is elided rather than stated.

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

Usage Guidelines3/5

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

Usage is only implied by describing the filters (dates, account, source, text); there is no explicit 'use this when...' statement, no mention of when to prefer books_get for a single entry or books_report for aggregates, and no prerequisite guidance. The filter list does help an agent infer the retrieval use case.

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

books_list_trackingList tracking categoriesB
Read-onlyIdempotent
Inspect

The tracking categories with their options, archived ones marked. Free.

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 readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds one genuine behavioral detail — archived categories are included but marked — which is useful and not in the annotations. 'Free.' is unexplained and could mean free-tier availability or a zero-cost call, leaving ambiguity.

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?

Very short, which suits a trivial list tool, but the fragment style and the dangling 'Free.' reduce clarity rather than conciseness. One clause of explanation would have cost little and resolved the ambiguity.

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

Completeness3/5

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

With no output schema and no parameters, the description carries the burden of explaining what comes back; it hints at categories, options, and archived flags but does not describe the returned fields or ordering. Adequate to attempt the call, incomplete for interpreting results.

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 no parameter semantics are required; baseline 4 applies. The description's mention of 'options' and archived marking describes output shape rather than inputs, which is fine given the empty 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?

Names the resource (tracking categories) and states what is returned (categories with their options, archived ones marked), which is more specific than the title alone. The list verb is only implicit, and the trailing 'Free.' is opaque rather than clarifying purpose.

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

Usage Guidelines2/5

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

No guidance on when to call this versus the related books_save_tracking (which presumably creates/edits these categories), and no prerequisites or workflow context. The agent must infer that this is the read-side companion to the save tool.

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

books_lockLock a periodA
Idempotent
Inspect

Lock the books through a date (a closed month, a filed tax return): nothing new can be booked on or before it, by any tool or invoice. null unlocks. Every change is kept in the books' history. Costs $0.001 per call; nothing if it fails.

NameRequiredDescriptionDefault
reasonNo
throughYes

TDQS

A4/5.0
Behavior5/5

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

Beyond the annotations (mutation, idempotent, non-destructive) it adds genuinely valuable behavior: the lock blocks all tools and invoices on or before the date, null un-locks, every change is preserved in history, and it costs $0.001 per call with no charge on failure. These are the exact concerns (reversibility, cost, side effects) an agent needs and that the annotations alone do not convey.

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

Conciseness5/5

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

Three dense sentences with the locking effect front-loaded, followed by reversal, history, and pricing. No filler; every clause adds operational meaning.

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

Completeness4/5

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

For a two-parameter mutation with no output schema, the description covers effect, reversibility, audit history, and cost—more than adequate to call it correctly. The only gap is the undocumented 'reason' 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?

With 0% schema description coverage the description must carry the parameters. It explains 'through' well—including the important null-unlocks semantic not captured in the pattern-only schema—but says nothing about the 'reason' parameter, leaving one of two params 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?

It states a specific verb and resource (lock the books through a date) and describes the concrete effect: nothing new can be booked on or before it by any tool or invoice. The scope is unambiguous, though it never names the closely related sibling books_close_year, which is the main alternative an agent might confuse it with.

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

Usage Guidelines3/5

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

The parenthetical (a closed month, a filed tax return) implies when locking is appropriate, and 'null unlocks' signals the reversal case. But there is no explicit when-not guidance and no routing to alternatives like books_close_year or books_get, leaving the agent to infer usage from context.

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

books_match_bank_linesMatch bank linesAInspect

Say what bank lines were, up to 100 at a time, each one of: entries (entry numbers already booked whose lines on the bank account add up to the line), invoices (the open invoices money in pays: their payments are recorded and posted, the amount spread in the order given unless amounts are given), bills (the open supplier bills money out pays, the same way), account (book it there now, with an optional tax split off: a sale when money came in, a cost when it went out), rule (book it the way a bank rule says), ignore (not for the books, e.g. a duplicate), or unmatch (undo; a line booked to an account is reversed). Each line succeeds or fails on its own; only those done are charged. Costs $0.02 per bank line matched; nothing if none are found.

NameRequiredDescriptionDefault
matchesYes

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare this is a non-readonly, non-idempotent, non-destructive mutation. The description adds valuable behavioral detail beyond annotations: each line is processed independently, only successfully matched lines are charged, pricing is $0.02 per matched bank line, and unmatch reverses account-booked lines.

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 with the core action and then enumerates the modes efficiently. It is somewhat run-on and could be easier to scan as a structured list, but for a complex batch tool it remains dense without much wasted text.

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

Completeness4/5

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

For a complex batch mutation with no output schema and only basic annotations, the description covers modes, partial success, charging, and reversal. It is still missing explicit prerequisites such as where line_id comes from and a clearer statement of what the per-line success/failure response looks like.

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 low, so the description must carry parameter meaning. It does well for the core mode fields by explaining entries, invoices, bills, account, rule, ignore, and unmatch, and it clarifies that invoice/bill amounts are spread in order unless explicit amounts are supplied; however, it does not explain line_id, tax, rate, tracking, or description fields.

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

Purpose5/5

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

States a specific verb and resource: matching bank lines, up to 100 at a time. It also enumerates the possible per-line actions (entries, invoices, bills, account, rule, ignore, unmatch), making the tool's scope distinguishable from generic bank-line listing or rule application.

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 each match mode means, which implies how to choose among them, but it never explicitly says when to use this tool versus siblings such as books_bank_lines or books_apply_bank_rules. It also does not state the prerequisite that line_id values come from listing bank lines.

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

books_record_entryBook a journal entryAInspect

Book an entry: two or more lines, each a debit or a credit on an account, which must balance. For anything the other tools don't cover: opening balances, a loan, depreciation, owner's drawings, moving money between accounts, a correction. Entries are never edited; undo one with books_reverse_entry. Lines can carry a tax so the tax report counts them. Costs $0.01 per call; nothing if it fails.

NameRequiredDescriptionDefault
dateYesYYYY-MM-DD
memoNo
rateNoOne unit of currency in the base currency, e.g. "0.9241". Default: a standing rate, else the European Central Bank's reference rate for the date.
linesYes
partyNoWho paid or was paid.
currencyNoWhen it is not the base currency, e.g. "USD". The rate is then rate, a standing rate, or the European Central Bank's for the date.
referenceNo
receipt_file_idNoA file_id from the file store.

TDQS

A4.8/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 entries are immutable ('never edited'), that reversal is the only correction path, that tax lines propagate to the tax report, and that the call costs $0.01 with no charge on failure. These are exactly the operational facts a write-tool caller needs and none are in the annotation block.

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

Conciseness5/5

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

Front-loaded definition first, then use cases, then lifecycle and cost. Five short sentences, each carrying distinct information with no repetition of schema 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 an eight-parameter mutation tool with no output schema, it covers the crucial invariants (balance, minimum lines, immutability, cost). It does not indicate what a successful call returns (e.g., whether an entry id comes back), which matters for follow-up calls to reverse or retrieve 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?

Adds real semantics the schema cannot express: the line count minimum, the debit/credit exclusivity, the balancing constraint, and the purpose of the tax field. It leaves some schema-covered-but-undescribed params (memo, reference, party) unaddressed, so it improves on the 63% coverage without fully compensating.

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 ('Book an entry') and immediately pins down the shape of a valid entry: two or more lines, each a debit or credit on an account, and balanced. It also carves out its niche against siblings ('anything the other tools don't cover') and names the reversal tool, so an agent can distinguish it without opening schemas.

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

Usage Guidelines5/5

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

Explicit when-to-use via a concrete list of scenarios (opening balances, loan, depreciation, owner's drawings, transfers, corrections) plus a fallback rule for cases other tools don't cover. It also names the alternative for undoing an entry (books_reverse_entry), leaving little to inference.

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

books_record_expenseBook an expenseAInspect

Book a cost the business paid: account is what it was for (an expense, or an asset like equipment), paid_from where the money came from (default the bank account; a card, cash or the owner's account). paid_by instead (an email) makes it an expense claim, like Xero's: someone paid with their own money and is paid back with books_repay_claims. With a tax, the tax to reclaim is split off (amount includes it unless amount_includes_tax is false). Attach the receipt from the file store. A negative amount is a refund. Costs $0.01 per call; nothing if it fails.

NameRequiredDescriptionDefault
taxNoA tax by name (books_get lists them), e.g. "VAT 19%".
dateYesYYYY-MM-DD
memoNo
rateNoOne unit of currency in the base currency, e.g. "0.9241". Default: a standing rate, else the European Central Bank's reference rate for the date.
amountYese.g. "119.00".
vendorNo
accountYesAn account code from the chart, e.g. "6600".
paid_byNoThe email of whoever paid it privately and is paid back: an expense claim. Not with paid_from.
currencyNoWhen it is not the base currency, e.g. "USD". The rate is then rate, a standing rate, or the European Central Bank's for the date.
trackingNoTracking options by category, e.g. {"Department": "Service"} (books_list_tracking).
paid_fromNoAn account code from the chart, e.g. "6600".
referenceNoe.g. the receipt number.
paid_by_nameNo
receipt_file_idNoA file_id from the file store.
amount_includes_taxNo

TDQS

A4.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-destructive, non-idempotent, closed-world mutation. The description adds valuable behavior beyond that: tax is split unless excluded, negative amounts are refunds, a receipt can be attached, and the call costs $0.01 but is free on failure. It does not discuss permissions or post-creation mutation behavior, so it is strong but not exhaustive.

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

Conciseness5/5

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

The description is dense but compact, front-loads the core operation, and then layers in the important special cases. Every sentence carries actionable information, with no filler.

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

Completeness4/5

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

For a 15-parameter mutation tool with no output schema, the description supplies enough context on the complex parts—account, paid_from, paid_by, tax, amount, receipt, and cost—to call it correctly in common cases. Some optional parameters and return behavior are left to the schema, but the essential semantics are covered.

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

Parameters4/5

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

Schema coverage is 73%, so the schema already documents most parameters. The description adds real semantic value for the trickiest fields: what account means, the paid_from versus paid_by distinction, tax splitting, amount_includes_tax behavior, and negative amount as refund. It does not add meaning for tracking, rate/currency, or several optional fields, but it covers the main ambiguity.

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 ('Book a cost the business paid') and immediately disambiguates account versus paid_from. It also names the expense-claim variant and the sibling tool used to settle claims, so an agent can distinguish this from siblings like books_record_entry.

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 clearly states the core usage context and explains when paid_by should be used instead of paid_from, including that the result becomes an expense claim repayable via books_repay_claims. It lacks an explicit comparison against books_record_entry or other entry-creation paths, but the main usage branches are covered.

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

books_repay_claimsPay back expense claimsAInspect

Pay back what someone paid for the business with their own money (expense claims, from books_record_expense with paid_by), like Xero's: all their open claims in one currency, or the claims named, in one entry from paid_from (default the bank account) against Expense claims to repay. sepa_file: true adds a SEPA credit transfer file to their iban, to upload to the bank. Costs $0.01 per call; nothing if it fails.

NameRequiredDescriptionDefault
bicNo
dateNoWhen it was paid. Default today.
ibanNo
claimsNoOnly these claims (claim_id).
personYesTheir email, as paid_by had it.
currencyNoWhen it is not the base currency, e.g. "USD". The rate is then rate, a standing rate, or the European Central Bank's for the date.
paid_fromNoAn account code from the chart, e.g. "6600".
referenceNo
sepa_fileNo

TDQS

A4.5/5.0
Behavior5/5

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

Adds substantial behavior beyond the annotations: default paid_from is the bank account, the entry hits 'Expense claims to repay', sepa_file generates a bank-uploadable credit transfer to the iban, and a cost of $0.01 per call with no charge on failure. This is exactly the kind of non-obvious consequence (money movement plus billing) 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.

Conciseness4/5

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

Front-loaded with the verb and resource, then mode semantics, then the SEPA and cost clauses. Dense and somewhat run-on in the middle, but 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 9-parameter, non-idempotent money-moving tool with no output schema, the description covers the important gaps: default account, counterpart posting, SEPA output, and failure charging. Only minor parameters (reference, date, bic) are left unelaborated.

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 56%, and the description compensates well for the undocumented params: it explains person (as paid_by had it), claims-vs-all-claims semantics, currency selection across open claims, the paid_from default, and what sepa_file/iban actually produce. It leaves reference, date, and bic meaning to the schema, hence not 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 with a plain-language gloss ('Pay back what someone paid for the business with their own money'), and ties claims back to books_record_expense with paid_by, distinguishing it from books_record_expense and books_list_claims.

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

Usage Guidelines4/5

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

Explains the two operating modes (all their open claims in one currency, or the claims named) and where the claims come from. It does not explicitly name when not to use it or point to a sibling alternative, but context is clear.

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

books_reportRun a reportA
Read-onlyIdempotent
Inspect

A report in the base currency. profit_and_loss and tax cover from-to (default: this fiscal year so far); balance_sheet and trial_balance are as of to (default today); general_ledger lists each account's lines from-to with running balances (one account, or all, paged); oss is a quarter's sales to consumers in other EU countries for the One Stop Shop return, per country and VAT rate in euros (quarter, default the last one ended; no books needed); reconciliation holds each bank account's books against the closing balance its latest statement on or before to stated: reconciled, to_match (statement lines and entries still to pair explain the difference) or off (unexplained). Like Xero's: profit_and_loss with compare adds columns for earlier months, quarters or years; cash_summary shows the money accounts at the start and end of from-to and what came in and went out, by account; executive_summary (default this month so far) gives cash, profit, margins, what is owed both ways, debtor and creditor days and invoices issued, against the same days a month before; budget_variance holds a budget (books_save_budget) against the actual figures for the months from-to touches; vat_return gives from-to by the boxes of the VAT return the business files itself, Germany's advance return by Kennzahl or the UK's nine boxes (country, default the business's), with what the books can't tell yet. Like Xero's short-term cash flow, cash_forecast projects the money accounts days ahead (default 30, up to 180) from open invoices and bills on their due, expected or planned dates and what repeating templates will make, by day and week, with the lowest point and the overdue invoices and bills it leaves out until they have a date to come (each with the id that invoices_set_expected_date or purchasing_set_planned_date takes). snapshot is the year so far (default) against the same days a year before: profit, margins, income and expenses by month, the largest costs, the balance sheet, cash, and the average days from an invoice's or a bill's date to the payment that settled it, for those paid in the period. To show a person, put it in a view (view_show). Free.

NameRequiredDescriptionDefault
toNoYYYY-MM-DD
daysNoFor cash_forecast: how many days ahead.
fromNoYYYY-MM-DD
limitNo
budgetNoFor budget_variance: the budget's name (books_list_budgets).
offsetNo
reportYes
accountNoAn account code from the chart, e.g. "6600".
compareNoFor profit_and_loss: add columns for the same days `periods` months, quarters or years before.
countryNoFor vat_return: whose form. Default the business's country.
periodsNoWith compare; default 1.
quarterNoFor oss: like 2026-Q3.
trackingNoFor profit_and_loss: only lines with these options, e.g. {"Department": "Service"}.
by_trackingNoFor profit_and_loss: a tracking category to split by, one column per option and one for what is not tracked.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so safety needs no restating. The description adds genuinely non-obvious behavior: which reports the range parameters mean different things for, that general_ledger is paged, that oss needs 'no books needed', that reconciliation returns reconciled/to_match/off, and that cash_forecast omits undated overdue items and names the sibling tools to fix them. It does not mention pagination limits or result sizes explicitly, keeping it short of a 5.

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

Conciseness3/5

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

The content is dense and almost every clause carries information, so the length is largely justified by thirteen report types. But it is delivered as four massive semicolon-chained sentences with no list structure, which makes it slow to scan and front-loads only the base-currency note rather than a clear 'runs one of these reports' opener.

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, so the description has to carry return-value meaning, and it does so well for many reports (running balances and paging for general_ledger, per-country/per-rate euros for oss, by day and week plus lowest point for cash_forecast, columns for compare). The notable omissions are the shape of limit/offset behavior and any indication of what the simpler reports return, so it falls just short of 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 79% schema coverage the baseline is 3, but the description binds parameters to specific report modes in a way the schema does not — days for cash_forecast, quarter for oss, country for vat_return, budget for budget_variance, compare/periods/by_tracking/tracking for profit_and_loss, and account for general_ledger. The only real gap is limit and offset, which are covered solely by the oblique word 'paged' and carry no schema 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?

The description makes clear this is a dispatcher that runs one of thirteen named financial reports, and it explains what each one is (profit_and_loss, balance_sheet, oss, cash_forecast, etc.). This lets an agent map the `report` enum to intent without opening the schema. It does not, however, explicitly distinguish itself from adjacent reporting siblings such as books_export, invoices_report, or purchasing_report, so the sibling differentiation is inferred rather than stated.

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

Usage Guidelines4/5

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

For nearly every report it states the applicable parameters and the default behavior (e.g. 'from-to (default: this fiscal year so far)', 'quarter, default the last one ended', 'days ahead (default 30, up to 180)', 'country, default the business's'), which is effectively per-mode when-to-use guidance. It also routes the display case to view_show. It stops short of explicit exclusions ('do not use for X, use sibling Y instead') and never contrasts with the other *_report tools.

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

books_reverse_entryReverse an entryAInspect

Undo an entry by booking its mirror image (entries are never edited or deleted). It is dated like the entry, or today when that period is locked, unless date is given. Bank lines matched to the entry wait to be matched again. Entries posted from invoices follow the invoice: void it, or record a refund. Costs $0.01 per call; nothing if it fails.

NameRequiredDescriptionDefault
dateNoYYYY-MM-DD
memoNo
entryYesThe entry number.

TDQS

A4.6/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: that entries are never mutated or deleted, how the reversal is dated including the locked-period fallback, that matched bank lines are unmated pending re-match, and that the call costs $0.01 with no charge on failure. This is exactly the side-effect and cost disclosure an agent needs 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.

Conciseness5/5

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

Five short sentences, each carrying distinct information, with the core purpose and its rationale front-loaded before the edge cases. No filler and no repetition of schema or annotation 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?

With no output schema and only hint annotations, the description covers dating, side effects, invoice interaction, and pricing well. It does not state what the call returns (e.g., the mirror entry's number) or what memo does, which are the remaining gaps for a write tool.

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

Parameters4/5

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

Schema coverage is 67% (entry and date documented, memo not). The description adds real meaning beyond the schema for date by explaining the default resolution order rather than just the YYYY-MM-DD pattern. The memo parameter is never explained in either place.

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 ("Undo an entry by booking its mirror image") and immediately clarifies the mechanism, so an agent distinguishes it from a delete or edit operation. The parenthetical "entries are never edited or deleted" explicitly separates it from a hypothetical deletion sibling like books_delete_asset.

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 conditional guidance on dating (entry's date, today if the period is locked, unless date is supplied) and routes invoice-originated entries to the correct alternative behavior (void the invoice or record a refund). It stops short of naming the sibling tools to call for those invoice paths, leaving the agent to infer them.

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

books_save_accountsAdd or change accountsA
Idempotent
Inspect

Add accounts or change them, matched by code: name, type (only while unused), description, a new code, archived (only with no balance and no role), a bank account's IBAN and BIC, and role. Roles are the accounts the books post to on their own: bank, cash, receivable, inventory, input_tax, sales_tax, payable, retained_earnings, opening_balances, sales, cost_of_sales, exchange, depreciation, accumulated_depreciation, asset_disposals, customer_credits, supplier_credits, expense_claims, import_vat. Giving a role moves it from the account that had it. Costs $0.001 per call; nothing if it fails.

NameRequiredDescriptionDefault
accountsYes

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses the upsert-by-code matching mechanism, the side effect that assigning a role removes it from the account that had it, the conditional restrictions on type and archived, and the per-call cost with the 'nothing if it fails' caveat. These are exactly the mutation and billing traits an agent cannot infer from readOnlyHint/idempotentHint 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?

Front-loaded and generally efficient, but roughly half the text is a verbatim enumeration of the 19 role values that already exist as a schema enum, so a large share of the description repeats structured data. The valuable parts (matching, restrictions, side effect, cost) are stated once and early.

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 batch upsert tool with no output schema and no structured parameter docs, the description covers matching, mutation constraints, side effects and cost. The one gap is what the call returns (per-account success/error, new codes applied), which an agent would want since there is no output schema to consult.

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 carries the weight and does so: it enumerates every accepted field and adds semantics the schema lacks, such as 'type only while unused', 'archived only with no balance and no role', IBAN clearing via empty string, and the meaning of roles as the accounts the books post to automatically. Only the batching limits and new_code interaction are left to the schema.

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

Purpose4/5

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

States a clear verb pair (add or change) on a specific resource (accounts) and names the matching key (code), so an agent immediately knows this is an upsert against the chart of accounts rather than the read-side books_list_accounts. It stops short of naming any sibling explicitly, so it is clear but not fully differentiated.

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

Usage Guidelines4/5

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

Gives concrete conditions that select behavior: 'type (only while unused)' and 'archived (only with no balance and no role)', plus the rule that assigning a role steals it from the previous holder. That is real guidance on when certain changes are permitted, though there is no explicit statement of when to call this versus books_setup or other account-related tools.

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

books_save_assetRegister a fixed assetAInspect

Put an asset the business bought in the register, like Xero's fixed assets: a van, a machine, a laptop, with its cost, purchase date and the asset account its purchase was booked to (registering books nothing). method: straight_line over its life down to residual, declining_balance at rate_percent of its book value at the start of each fiscal year, full (all of it in the month it starts, for something cheap enough to write off at once) or none (land). averaging: full_month counts the month it starts in full, actual_days counts days. Depreciation goes to the depreciation expense and accumulated depreciation accounts (made as 6950 and 1590 when missing) unless expense_account and accumulated_account say otherwise. An asset depreciated before the books started brings opening_accumulated. To change one, pass asset: once its depreciation is booked, only its name, description, serial number, warranty and tracking change. Costs $0.001 per call; nothing if it fails.

NameRequiredDescriptionDefault
costNoWhat it cost before tax, in the base currency.
nameNo
assetNoThe asset to change, by its number. Leave out to register one.
methodNostraight_line
numberNoA new asset's number. Default: the next FA-0001.
accountNoThe asset account its purchase was booked to, e.g. "1500".
residualNoWhat it is worth at the end of its life. Default 0.
trackingNoTracking options by category, e.g. {"Department": "Service"} (books_list_tracking).
averagingNofull_month
life_yearsNo
descriptionNo
life_monthsNo
rate_percentNoDeclining balance: the share of its book value a year.
purchase_dateNoYYYY-MM-DD
serial_numberNo
warranty_untilNoYYYY-MM-DD, "" for none.
expense_accountNoAn account code from the chart, e.g. "6600".
depreciation_startNoWhen it was first used, if after the purchase date.
accumulated_accountNoAn account code from the chart, e.g. "6600".
opening_accumulatedNoDepreciation booked before the books started.

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations: discloses that registering books nothing, that default accounts 6950/1590 are created when missing, that per-call cost is $0.001 and free on failure, and limits on what can be edited post-depreciation. This is exactly the operational context an agent needs for a non-idempotent, non-destructive write.

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

Conciseness5/5

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

Dense but front-loaded: the core action and examples come first, then the enum semantics, then defaults, then the edit caveat and cost. No filler sentences; each clause carries distinct information despite the run-on style.

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 20-parameter write tool with no output schema, the description covers the domain semantics (depreciation, averaging, account defaults, opening balances) thoroughly. It omits what a successful call returns (e.g., the created asset number) and which fields are effectively required, leaving a small 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 65%, and the description meaningfully compensates: it explains each method enum (straight_line, declining_balance at rate_percent of book value, full, none for land), both averaging options, and the role of opening_accumulated and the account overrides. Some params (name, life_years/life_months, number default) remain undocumented in both, keeping it 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 concrete verb+resource ("Put an asset the business bought in the register") with relatable examples (van, machine, laptop) and also covers the update path via the asset param. It distinguishes create vs. change behavior, but never names the neighboring tools (books_depreciate, books_dispose_asset, books_list_assets) to sharpen selection.

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?

Clear about when to register vs. when to edit ("To change one, pass asset:") and states the important constraint that after depreciation is booked only name, description, serial, warranty and tracking may change. It stops short of naming alternatives for depreciation/disposal, so routing to siblings is left implicit.

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

books_save_bank_ruleSave a bank ruleAInspect

A bank rule, like Xero's: which new bank lines it matches and how to book them, so lines that come every month (bank fees, rent, the phone bill) book themselves. when: conditions on the counterparty, description or reference (contains, equals, starts_with, ends_with; any case), all of them or any (match). Narrow it with direction (in, out), amount_min and amount_max (the line's size, no sign) and bank_account. Book to account with an optional tax split off, or split by percent across accounts (70% phone, 30% private), each part with its own tax. Rules are tried by position, lowest first; the first that matches is the line's first suggestion in books_bank_lines, and books_apply_bank_rules books every line a rule matches. Matched by name; only what you pass changes. Costs $0.001 per call; nothing if it fails.

NameRequiredDescriptionDefault
taxNoA tax by name (books_get lists them), e.g. "VAT 19%".
nameYesThe rule's name, e.g. "Bank fees".
whenNo
matchNoall
splitNo
accountNoAn account code from the chart, e.g. "6600".
new_nameNo
positionNo
trackingNoTracking options by category, e.g. {"Department": "Service"} (books_list_tracking).
directionNo
amount_maxNo
amount_minNo
descriptionNoThe memo of the entries it books. Default: the line's own text.
bank_accountNoOnly lines on this bank account (its code); "" for any.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond annotations, it discloses important behavior: rules are matched by name, only passed fields change, rule ordering by position controls first suggestion, and costs are incurred per call unless it fails. These are meaningful behavioral details not captured by readOnly/destructive 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 description is dense but front-loads the purpose and then proceeds through matching, scoping, booking, ordering, and cost. For a 14-parameter nested tool, the length is largely justified, though some sentences are packed and could be structured more cleanly.

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

Completeness4/5

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

Given the tool's complexity, nested schema, and lack of output schema, the definition covers the critical matching, booking, ordering, and cost behavior. Minor gaps remain around rename semantics, tracking, and what a successful save returns.

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 43% schema description coverage, the description compensates well by explaining when conditions, match all/any, direction, unsigned amount limits, bank account scoping, splits by percent, and position ordering. It still leaves new_name, tracking, and the memo description lightly covered.

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 defines a bank rule precisely with examples and distinguishes its effect from sibling tools like books_bank_lines and books_apply_bank_rules. Although the verb is carried by the tool title, the resource and behavior are 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 explains how saved rules participate in matching and booking, and names related tools that consume rules. It does not explicitly state create-vs-update or when not to use this tool, but the operational context is clear.

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

books_save_budgetSave a budgetAInspect

A budget, like Xero's budget manager: an amount per income or expense account for each month from start (12 months unless months says otherwise). Each line gives amounts (one per month), monthly (the same every month) or yearly (spread evenly); a line for an account already in it replaces that line, and remove takes one out. Hold it against what happened with books_report budget_variance. Matched by name. Not a team's spending budget at Conecto. Costs $0.001 per call; nothing if it fails.

NameRequiredDescriptionDefault
nameYesThe budget's name, e.g. "2026".
linesNo
startNoIts first month, like 2026-01.
monthsNo
new_nameNo

TDQS

A4/5.0
Behavior4/5

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

Beyond the annotations, it discloses real operational traits: existing account lines are replaced rather than appended, 'remove' deletes a line, the default span is 12 months, and each call costs $0.001 with no charge on failure. That pricing and failure-cost detail is exactly the kind of context annotations cannot carry. It does not confirm whether the write is reversible.

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

Conciseness4/5

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

Information-dense and front-loaded with the core concept before the operational details. It is a long run-on sentence chain, so a reader has to work a bit, but nearly every clause carries unique semantics rather than restating 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 5-parameter mutation tool with no output schema and only hint-level annotations, the description covers the domain model, line semantics, cost, and the natural follow-up report. Missing pieces are the meaning of new_name and what the call returns, but neither blocks correct invocation.

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 has to compensate, and it does for most params: it explains start as the first month, months as an override of the 12-month default, and clarifies the amounts/monthly/yearly/remove line variants. It leaves 'new_name' completely unexplained, which is the main gap for a rename path on a non-idempotent save.

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 thoroughly explains what a budget is and how its lines work, and the title 'Save a budget' supplies the verb. It clearly distinguishes this from books_list_budgets, books_delete_budget and books_report. The only shortfall is that the create-vs-update nature is left implicit in the body text rather than stated outright.

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 names the downstream comparison tool explicitly ('Hold it against what happened with books_report budget_variance') and blocks a plausible misuse case ('Not a team's spending budget at Conecto'). It also signals upsert semantics via 'Matched by name'. It stops short of enumerating when to use this versus books_save_accounts or books_setup.

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

books_save_taxAdd or change a taxA
Idempotent
Inspect

A tax rate the books use (VAT, GST, sales tax), matched by name. Tax charged on sales is owed on sales_account (default: the sales tax account); tax paid on purchases is reclaimed on purchase_account (default: the tax to reclaim account; null when it can't be reclaimed, and it stays part of the cost). A rate in use can't change: add a new tax and archive the old one. Invoices make the taxes they need on their own. kind makes a new tax one the business owes itself, like Xero's reverse charge rates: rc_eu (services from another EU country), rc_abroad (from outside it), rc_home (reverse charge at home) or eu_goods (goods from another EU country); on an expense or a bank line it books the VAT owed and reclaimed at once, the amount paid being without VAT. kind import is import VAT paid at customs, no rate: what is booked with it is the VAT itself, reclaimed whole on the import VAT account (1310, made with it), where an expense or a bank line counts with no tax named (box 62 in Germany, box 4 in the UK). Conecto gives no tax advice; the rates are the business's. Costs $0.001 per call; nothing if it fails.

NameRequiredDescriptionDefault
kindNoFor a new tax: VAT the business owes itself, or import VAT.
nameYes
rateNoPercent, e.g. 19.
archivedNo
new_nameNo
sales_accountNoAn account code from the chart, e.g. "6600".
purchase_accountNo

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; the description adds material context beyond them, including default account codes, that purchase_account is null when VAT is unreclaimable and then stays in cost, the immutability of in-use rates, and per-call pricing with no charge on failure. It does not contradict the hints — archiving is a reversible state change, not the destructive deletion the hint denies.

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 purpose is front-loaded, but the body is a dense semicolon-chained run-on that mixes tax doctrine, enum semantics, default accounts, and pricing into one paragraph. Every clause is informative, yet the lack of structure forces the agent to parse a wall of text to extract the operational bits.

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 7-parameter mutation tool with no output schema, the description covers the accounting semantics unusually well, but omits the meaning of new_name (the only way to rename a tax) and never indicates what the call returns on success. Those gaps sit on the two parameters an agent most needs to disambiguate when updating rather than creating.

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 only 43% schema coverage, the description does heavy lifting for kind (expanding all five enum values with reverse-charge and import-VAT behavior), sales_account, and purchase_account defaults/nulls. However, new_name is never mentioned at all and archived is only alluded to via 'archive the old one', while name and rate are left entirely to the schema — so it compensates unevenly rather than fully.

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 title 'Add or change a tax' plus the opening clause 'A tax rate the books use (VAT, GST, sales tax), matched by name' make the resource and the create-or-update action clear. It does not need sibling differentiation because there is no other tax-rate tool in the sibling list, but the description itself never states the verb directly, leaving the action to be inferred from title + body.

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 real usage rules: 'A rate in use can't change: add a new tax and archive the old one' tells the agent the correct two-step workflow, and 'Invoices make the taxes they need on their own' warns against pre-creating rates. 'Conecto gives no tax advice' scopes responsibility. No alternative tool is named, but no equivalent sibling exists to route to.

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

books_save_trackingSave a tracking categoryBInspect

A tracking category, like Xero's: a department, a region or a project line, with its options. Up to two at a time. Any line can then carry one option of each (tracking: {"Department": "Service"}): journal entry lines, expenses, bank lines booked to an account, invoice and bill lines; profit and loss splits by a category with books_report by_tracking, or keeps to one option with tracking. Matched by name: options adds options, rename renames them on every line, archive stops new use. Costs $0.001 per call; nothing if it fails.

NameRequiredDescriptionDefault
nameYes
renameNo
archiveNo
optionsNo
archivedNoArchive (or bring back) the whole category.
new_nameNo

TDQS

B3.2/5.0
Behavior4/5

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

Beyond annotations (readOnlyHint false, destructiveHint false), the description adds useful behavioral details: it costs $0.001 per call and nothing if it fails, options adds options, rename renames them on every line, and archive stops new use. It does not explain permissions or idempotency (though idempotentHint is false), but the cost and action semantics go well beyond the annotation set.

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 contains valuable information but is structured as a dense conceptual explanation rather than front-loading the tool's action. The opening sentence defines a tracking category instead of stating 'Creates or updates a tracking category', so the agent must read several clauses before understanding the operation.

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

Completeness3/5

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

For a mutation tool with six parameters, no output schema, and low schema coverage, the description provides good context about effects and cost but omits when-to-use guidance, the role of new_name versus rename, and any permission or reversal details. It is adequate but leaves gaps an agent must resolve by inference.

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

Parameters4/5

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

Schema coverage is only 17% (only archived is described in the schema), so the description must compensate. It explains that matching is by name, that options adds options, that rename renames them on every line, and that archive stops new use. It does not clarify the distinction between rename and new_name, leaving one parameter ambiguous, but it meaningfully documents most of the six parameters.

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 explains what a tracking category is ('like Xero's: a department, a region or a project line') and mentions actions ('options adds options, rename renames them', 'archive stops new use'), but never states a clear verb like 'Create or update' for the tool itself. The core action is buried in concept explanation, so an agent must infer that this is a save/mutation tool 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 siblings like books_list_tracking or books_report. The description provides context ('Up to two at a time', 'Any line can then carry one option') but does not say when to choose this save operation or what prerequisites exist.

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

books_setupSet up the booksAInspect

Start the business's double-entry books, or change their settings. The first call needs currency (the base currency of every report; it can't change once something is booked) and makes the chart: "starter" (cash, bank, receivables, tax, equity, sales and common costs, numbered 1000-8000) or "minimal" (only the eight accounts the books post to on their own). The books start on start_date (default: the start of this fiscal year); enter what the business owned and owed that day as one entry against the opening balances account (3900), unpaid invoices and bills from before included. With post_invoices (default on), sent invoices and supplier bills, their payments and voids post on their own, those from start_date on right away. payment_accounts says where payments land per method, in and out (default: the bank account, cash in the cash account); rates are standing exchange rates for currencies the European Central Bank doesn't publish. Costs $0.001 per call; nothing if it fails.

NameRequiredDescriptionDefault
chartNoOnly on the first call.
ratesNoCurrency -> one unit of it in the base currency, e.g. {"AED": "0.2486"}; null removes one. Used instead of the ECB's rate.
currencyNoISO 4217, e.g. "EUR".
start_dateNoThe first day the books cover.
post_invoicesNo
payment_accountsNoPayment method -> account code, e.g. {"card": "1020"}; null goes back to the default. Methods: bank_transfer, card, cash, check, online, other.
fiscal_year_startNoThe month the fiscal year starts. Default 1 (January).

TDQS

A4.7/5.0
Behavior5/5

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

Adds substantial behavior beyond annotations: currency cannot change once something is booked, chart is first-call-only, start_date defaults to fiscal-year start, opening balances post to account 3900, post_invoices is on by default, payment_accounts has defaults, rates override ECB rates, and the call costs $0.001 unless it fails. Annotations already mark it as a non-readonly, non-idempotent mutation, and the description supplies the operational consequences.

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

Conciseness4/5

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

Front-loads the purpose and first-call requirement, and nearly every clause carries useful setup information. It is dense with semicolon-separated accounting details and could be more scannable, but there is no 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 seven-parameter setup mutation with no output schema, the description covers initialization, defaults, accounting consequences, cost, and failure behavior. Return values need not be explained because no output schema exists.

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?

Although schema coverage is already 86%, the description adds real meaning beyond the schema: chart contents, currency as immutable base, start_date default, post_invoices default and effect, payment_accounts defaults, and the purpose of rates. fiscal_year_start is left to the schema, which documents it adequately.

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

Purpose5/5

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

Explicitly states that the tool starts double-entry books or changes their settings, separating it from sibling books operations such as books_get, books_list_entries, and books_save_accounts. The verb, resource, and initialization scope are specific.

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

Usage Guidelines4/5

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

Explains the first-call behavior: currency is required and the chart is created only then. It also gives default behavior for start_date, post_invoices, and payment_accounts, which tells an agent when this setup path applies. It does not explicitly name alternatives or when not to use it, so it falls short of a 5.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 61 tool updates
    • First observedaccount_add_approval_rule
    • First observedaccount_assign_team
    • First observedaccount_audit_log
    • First observedaccount_balance
    • First observedaccount_dashboard_link
    • First observedaccount_data_locations
    • First observedaccount_emit_event
    • First observedaccount_erase_person
    • First observedaccount_events
    • First observedaccount_export_all
    • First observedaccount_export_person
    • First observedaccount_find_person
    • First observedaccount_get_brand
    • First observedaccount_get_call
    • First observedaccount_get_limits
    • First observedaccount_list_approval_rules
    • First observedaccount_list_calls
    • First observedaccount_list_email_templates
    • First observedaccount_list_teams
    • First observedaccount_owner_link
    • First observedaccount_pause_team
    • First observedaccount_refund_topup
    • First observedaccount_request_limit
    • First observedaccount_save_team
    • First observedaccount_search
    • First observedaccount_set_brand
    • First observedaccount_set_email_template
    • First observedaccount_set_owner_email
    • First observedbooks_apply_bank_rules
    • First observedbooks_attach_receipt
    • First observedbooks_bank_lines
    • First observedbooks_close_year
    • First observedbooks_delete_asset
    • First observedbooks_delete_bank_rule
    • First observedbooks_delete_budget
    • First observedbooks_depreciate
    • First observedbooks_dispose_asset
    • First observedbooks_export
    • First observedbooks_get
    • First observedbooks_import_bank
    • First observedbooks_list_accounts
    • First observedbooks_list_assets
    • First observedbooks_list_bank_rules
    • First observedbooks_list_budgets
    • First observedbooks_list_claims
    • First observedbooks_list_entries
    • First observedbooks_list_tracking
    • First observedbooks_lock
    • First observedbooks_match_bank_lines
    • First observedbooks_record_entry
    • First observedbooks_record_expense
    • First observedbooks_repay_claims
    • First observedbooks_report
    • First observedbooks_reverse_entry
    • First observedbooks_save_accounts
    • First observedbooks_save_asset
    • First observedbooks_save_bank_rule
    • First observedbooks_save_budget
    • First observedbooks_save_tax
    • First observedbooks_save_tracking
    • First observedbooks_setup

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Double-entry books an agent keeps as the user, on your own Postgres or Supabase: invoices, VAT returns, bank reconciliation, financial statements and 130 country packs.
    41
    AGPL 3.0
  • F
    license
    B
    quality
    D
    maintenance
    MCP server for DACH accounting automation. Connect AI assistants to sevDesk and Lexoffice — create invoices, manage contacts, handle bookings and vouchers for German-speaking businesses.
    15
    25 npm
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables interaction with DATEV Online APIs to upload documents, reconcile account statements, and manage HR payroll data such as employees and absences.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources