Conecto Invoices
Server Details
Quotes and invoices numbered without gaps, sent as PDFs, paid online. Pay per action.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 52 tools
Most tools target distinct resources and actions (e.g., invoices_create vs invoices_send vs invoices_void), and detailed descriptions clarify subtle differences like invoices_record_payment vs invoices_use_credit. A few adjacent groups (invoices_report/summary/statement, account_export_all/person) could still be confused, but overall the set is separable.
Names follow a consistent snake_case prefix pattern (account_*, invoices_*) and are mostly verb_noun. Minor deviations are noun-only names like account_balance, account_events, and invoices_statement, but these remain predictable and readable.
52 tools is excessive for an invoicing-focused server; many account, team, GDPR, approval, and export tools expand the surface well beyond core invoicing. While some are useful, the set feels bloated and hard to navigate as a whole.
The invoicing lifecycle is well covered: create, update, send, void, credit notes, payments, prepayments, credits, repeating invoices, reminders, reports, and statements. Minor gaps exist (no dedicated customer/contact management or tax-rate CRUD within this server), but core workflows are complete.
Available Tools
52 toolsaccount_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.
| Name | Required | Description | Default |
|---|---|---|---|
| over | No | Calls with argument over this are held. | |
| tool | Yes | ||
| values | No | Calls with argument equal to one of these (any case) are held. | |
| argument | No | An argument of the tool (or total, for purchasing_create_bill). | |
| approvers | No | Who in approver_team approves. | managers |
| approver_team | No | A team (account_list_teams). | |
| approver_email | No | ||
| two_people_over | No | Calls whose argument is over this need two people; higher than over. | |
| approver_channel | No | A saved notify channel. |
TDQS
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.
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.
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.
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.
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.
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 teamAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Its id, slug, name, address or number; not needed for the chat. | |
| kind | Yes | ||
| team | Yes |
TDQS
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.
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.
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.
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.
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.
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 logARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| since | No | ||
| action | No | Only actions starting with this, like "key." or "tool.vault_". | |
| verify | No |
TDQS
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.
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.
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.
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.
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.
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 balanceARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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_dashboard_linkGet a link to an area at a glanceARead-onlyIdempotentInspect
A one-time link to a page showing one area as it is when the page opens, for when the person you work for asks to see it themselves: a recruiter looks at the applicants, a bookkeeper at what is due. Do the work and answer with the area's own tools first; a link never replaces that. When an answer would be a long list they would rather look through, offer a link and make it once they say yes. The page is made from the area's own reads as this key, so it shows only what this key may see. It opens once and keeps for an hour; an unopened link ends after 7 days. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| area | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover read-only/idempotent/no-destruction; the description adds substantial context beyond them: the link is single-use, expires in an hour, an unopened link dies after 7 days, and the page is scoped to what 'this key' may see. Those are exactly the behavioral traits an agent needs before generating a shareable artifact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core idea (one-time link to a snapshot of one area) and every sentence carries usable information about usage or lifecycle. The prose is conversational and slightly padded, but not wasteful enough to drop below 4.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does cover the essential return semantics (a link URL that opens once) and its expiry behavior. The remaining gap is the `area` enum meaning, which is the one thing an agent must get right to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required `area` parameter, and the description never explains that it selects among the ~51 product areas. The recruiter/bookkeeper examples loosely gesture at area selection but do not document the enum values or how to pick one. Marginal value over the schema's bare enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb+resource: it produces a one-time link to a page showing one area's current state. An agent can distinguish it from data-reading siblings because it explicitly says the link is a snapshot view, not an answer. It does not name the near-duplicate siblings (hiring_dashboard_link, hr_dashboard_link, analytics_view_link, view_link), which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('when the person you work for asks to see it themselves'), explicit when-not ('Do the work and answer with the area's own tools first; a link never replaces that'), and a concrete trigger ('when an answer would be a long list they would rather look through, offer a link and make it once they say yes'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
account_data_locationsSee where the data isARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| areas | No | Areas to show, like ["email", "phone"]; all when left out. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | ||
| kind | Yes | custom. and a name of lowercase letters, digits, dots, dashes and _. | |
| link | No | ||
| text | No | ||
| title | Yes |
TDQS
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.
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.
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.
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.
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.
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 dataADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| No | The person's email address. | ||
| phone | No | Their phone number in international format, like +1 503 555 0145. | |
| correspondence | No | Also delete their emails and tickets, when no law requires keeping them. |
TDQS
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.
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.
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.
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.
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.
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 eventsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | Only events after this event_id. | |
| kinds | No | Event names or areas ("hiring.*"); all when left out. | |
| limit | No |
TDQS
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.
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.
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.
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.
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.
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/.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| No | The person's email address. | ||
| phone | No | Their phone number in international format, like +1 503 555 0145. |
TDQS
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.
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.
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.
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.
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.
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 dataARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| No | The person's email address. | ||
| phone | No | Their phone number in international format, like +1 503 555 0145. |
TDQS
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.
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.
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.
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.
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.
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 lookCRead-onlyIdempotentInspect
The name, logo, colour and footer line the business's emails and published pages carry. Free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, 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.
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.
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.
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.
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.
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 callARead-onlyIdempotentInspect
One call by id: its status (queued, running, succeeded, failed), cost and result. Use it to poll a background call until it finishes. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| call_id | Yes |
TDQS
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.
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.
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.
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.
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.
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 limitsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 rulesBRead-onlyIdempotentInspect
The tools that wait for a person's approval, with their thresholds and approvers. Free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=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.
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.
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.
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.
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.
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 callsCRead-onlyIdempotentInspect
Recent calls on this account, newest first, optionally only failed or succeeded ones, or one area's. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | ||
| limit | No | ||
| status | No |
TDQS
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.
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.
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.
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.
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.
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 sayBRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, 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.
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.
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.
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.
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.
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 teamsBRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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_owner_linkGet a sign-in link for the ownerARead-onlyIdempotentInspect
A link that signs the business owner into their Conecto page, with no password: the balance, adding credit, auto-reload, limits, what the bots did, people, rentals and keys. page opens it where the owner is needed, like people for a role only the owner gives, or settings for joining by email domain. It works once, within 30 minutes; hand it to the owner. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | home |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds genuinely non-obvious traits the annotations don't carry: single use, 30-minute validity, passwordless, and no cost. That is exactly the operational detail an agent needs before handing a credential out. Minor tension: a credential-minting, single-use artifact sits oddly beside readOnlyHint/idempotentHint=true, though nothing persistent is mutated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The front-loaded 'a link that signs the owner in with no password' is strong, but the middle becomes a disorganized run-on ('the balance, adding credit, auto-reload, limits, what the bots did, people, rentals and keys') that reads as a page inventory rather than wording tuned to page selection. The trailing 'Free.' is a fragment that would be better merged.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the necessary work: it says the return is a link, that it expires in 30 minutes, that it is single use, and what the recipient does with it. It stops short of stating the return type/format explicitly or the consequence of requesting a second link.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single 'page' parameter has nine enum values, but the description only names two of them ('people' for role assignment, 'settings' for email-domain joins) and never addresses the 'home' default. It conveys that the page decides where the owner lands, which is real added meaning, but leaves most of the enum unmapped.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Identifies a specific resource (a passwordless sign-in link for the business owner) and its effect (signs the owner into their Conecto page). It never uses an action verb like 'generate' and never distinguishes itself from the sibling account_dashboard_link, which is the nearest ambiguity an agent will face.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Hand it to the owner' gives the downstream action, and the middle sentence hints at when to target a specific page (people, settings for domain join). But there is no explicit when-not guidance, no mention of account_dashboard_link or account_set_owner_email as alternatives, and no stated prerequisites (does the owner need to exist / have an email?).
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.
| Name | Required | Description | Default |
|---|---|---|---|
| team | Yes |
TDQS
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.
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.
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.
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.
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.
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-upADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| topup_id | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | Yes | The limit, as account_get_limits names it, or other. | |
| other | No | With limit other: which limit, like "rows in one table". | |
| amount | Yes | The number the business needs, in the limit's unit (5000 calls a minute). | |
| reason | Yes | What the business does that needs it, and why the current limit is too low. |
TDQS
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.
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.
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.
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.
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.
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 teamAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| areas | No | The areas its keys may work in (account tools always); null for every area. | |
| budget | No | hard refuses calls past the budget; soft only warns. | |
| erp_code | No | ||
| new_name | No | Renames the team; its keys, spend and budget stay with it. | |
| mailboxes | No | The Microsoft 365 or Google mailboxes its keys may act as; null for every mailbox the connection lists. | |
| read_only | No | Its keys only read, and get links that act for whoever opens them as "[redacted]". | |
| drafts_only | No | Every write of its keys waits for a person, and they get links that act for whoever opens them as "[redacted]". | |
| alert_percent | No | ||
| budget_period | No | What 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_on | No | The last day of a project budget, like 2026-12-31. | |
| sees_sensitive | No | false hides suppliers' bank details and HR notes and contracts from its keys; only the owner turns it on. | |
| monthly_budget_usd | No | null counts the spend without a cap. |
TDQS
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.
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.
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.
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.
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.
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_searchSearch everythingARead-onlyIdempotentInspect
One search over what this account holds: what its files say (PDFs, Word, Excel, PowerPoint, text), table rows, help center articles, CRM contacts, companies and deals, emails, tickets, quotes and invoices, book entries, stock items and project tasks. Every word must appear (any case); titles rank first, then the newest. Each result says which tool opens it. Narrow it with areas. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| areas | No | ||
| limit | No | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description's job is to add operational context, which it does: conjunctive case-insensitive matching, ranking (titles first, then newest), and the fact that each result names the tool that opens it. Pagination and result-count behavior remain unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then matching rules, ranking, and result format in tight sentences. The long enumeration of content types is informative but stretches the first sentence; nothing else is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, matching semantics, ranking, result shape, narrowing, and cost, which is enough to call it correctly even without an output schema. The only real gap is how many results come back by default and how limit interacts with the 50 maximum.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load; it defines query semantics ('Every word must appear (any case)') and the purpose of areas ('Narrow it with areas'), which the enum alone would not explain. The limit parameter, including its default and 50 cap, is left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('One search over what this account holds') and enumerates exactly what is searched, from files to CRM records to book entries. An agent can distinguish this cross-domain search from the many single-domain siblings 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Narrow it with areas' gives clear narrowing guidance, and 'Free' signals there is no cost barrier to calling it broadly. However, no alternative is named and no when-not-to-use case is given, despite siblings like account_find_person or account_list_calls that overlap with the CRM and email scopes.
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 lookAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| colour | No | Hex, like #1a73e8; empty for none. | |
| footer | No | ||
| remove_logo | No | ||
| sender_name | No | ||
| logo_file_id | No |
TDQS
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.
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.
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.
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.
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.
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 emailsAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Like booking_booked or invoice_sent. | ||
| opening | No | ||
| subject | No | ||
| headline | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes |
TDQS
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.
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.
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.
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.
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.
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.
invoices_connect_stripeConnect Stripe for invoicesAInspect
Connect the business's own Stripe account with a restricted key (a person makes it in Stripe: Developers, API keys, Create restricted key), so invoices can carry a Pay button (invoices_set_profile pay_online). A restricted key with write access to Checkout Sessions and Webhook Endpoints. Conecto registers a webhook on that account to learn when an invoice is paid. The money goes straight to the business; Conecto never holds it. Called without stripe_key, it answers with a link for the owner, who types the key on a Conecto page, so it never passes through the chat (from_a_terminal does the same from a terminal); account.credential_added says when it is connected, and the link costs nothing. The key is kept encrypted and never shown again. Costs $0.001 per call; nothing if it fails.
| Name | Required | Description | Default |
|---|---|---|---|
| stripe_key | No | A restricted key, rk_live_... Leave it out to get the link instead. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (which only state it is a non-read-only, non-destructive write). It discloses webhook registration, that money never passes through Conecto, that the key is encrypted and never shown again, that the link costs nothing, and the exact cost ($0.001 per call, free on failure). Rich operational context an agent cannot get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and enabling condition, and nearly every clause earns its place (key creation steps, webhook, money flow, encryption, cost). It is dense and runs long with nested parentheticals, so structure could be cleaner, but there is little pure filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation/connect tool with no output schema, the description supplies what the agent needs: what happens on success (account.credential_added), the credential-security model, cost, and the no-key fallback path. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter is already documented, so baseline is 3. The description adds meaningful semantics: what kind of key it is (restricted, rk_live, write access to Checkout Sessions/Webhook Endpoints), where the owner creates it, and the omit-to-get-a-link behavior, which explains the parameter's optionality beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (connect the business's Stripe account) and names exactly what it enables (a Pay button via invoices_set_profile pay_online). An agent can distinguish it from sibling invoice tools 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes the two invocation modes: pass stripe_key to connect directly, or omit it to receive a link for the owner. It also names the terminal alternative (from_a_terminal) and the downstream signal (account.credential_added). It stops short of saying when-not to use or prerequisites for other invoice flows, so not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoices_convert_quoteTurn a quote into an invoiceAInspect
Turn an accepted quote into a draft invoice with the same customer and lines, ready for invoices_send. If the customer accepted some other way (email, phone), pass mark_accepted: true to record it. Costs $0.01 per call; nothing if it fails.
| Name | Required | Description | Default |
|---|---|---|---|
| quote_id | Yes | The quote's invoice_id. | |
| mark_accepted | No | Record a sent quote as accepted first (the customer said yes). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it is a non-read-only, non-destructive, non-idempotent write; the description adds that it creates a *draft* (not sent) and discloses per-call cost of $0.01 with no charge on failure — useful for retry/rate decisions. It doesn't warn that calling twice on the same quote likely produces duplicate drafts, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, all front-loaded with the core action first, then the edge-case parameter, then the cost model. Nothing is redundant and each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There's no output schema, and 'draft invoice ... ready for invoices_send' conveys essentially what comes back and its state. Missing is an explicit statement of the return identifier and the duplicate-conversion caveat, the only things an agent would still need to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds real meaning by explaining *why* mark_accepted exists — the customer accepted out-of-band via email or phone — a scenario the schema text does not convey. quote_id is passed through implicitly, which is fine since the schema documents it fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource ('turn an accepted quote into a draft invoice') plus the mechanics (same customer and lines), which distinguishes it cleanly from invoices_create and invoices_send. It also names the follow-up sibling, so an agent knows exactly where this sits in the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the precondition (the quote must be accepted) and an explicit alternate path: if acceptance happened by email or phone, pass mark_accepted: true. It also points to invoices_send as the next step. It stops short of saying when to use invoices_create instead of converting a quote, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoices_createCreate a quote or invoiceAInspect
Create a quote or an invoice as a draft: the customer (a CRM contact or company, or a name and email), line items, currency and dates. Nothing is numbered or sent yet; change drafts with invoices_update and send them with invoices_send. Amounts are the business's money in the document's currency, rounded half-up line by line. Costs $0.01 per call; nothing if it fails.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| items | Yes | ||
| notes | No | Printed above the lines, e.g. "Thank you for your order" or a project reference. | |
| currency | No | ISO 4217, e.g. "USD", "EUR" or "JPY". | |
| customer | Yes | Who the document is for. Link a CRM record with contact_id or company_id, or give name and email (an email that matches a CRM contact links it). What is given here is printed as it is. | |
| due_date | No | Invoices. Default: issue date + the payment terms. | |
| e_invoice | No | Invoices and their credit notes as EN 16931 e-invoices (German B2B invoices must be from 2027): factur-x (Factur-X/ZUGFeRD, the XML inside the PDF/A-3) or xrechnung (XRechnung 3.0, its own XML beside the PDF), checked against the EN 16931 schema before sending. "" is the default: none, except that from 2027 an invoice from a German business to a German business above EUR 250 is a factur-x; "none" opts out (a business under the EUR 800,000 turnover allowance until 2028). Needs the customer's country. Default: the profile's. | |
| issue_date | No | Default: the day it is sent. | |
| supply_date | No | Invoices: the day the goods or services were supplied, or the first day of a period. Default: the issue date, which the invoice then states. | |
| valid_until | No | Quotes. Default: issue date + the profile's quote_valid_days. | |
| payment_link | No | An https link to pay this document. Default: the profile's payment_link. | |
| supply_until | No | Invoices: the last day of the supply period, e.g. a month of service. | |
| tax_exemption | No | Why lines with tax_rate 0 carry no tax, printed on the invoice as the law asks: exempt, zero_rated, reverse_charge (the customer accounts for the VAT), intra_eu (goods to a business in another EU country), export (goods leaving the EU), outside_scope, small_business (a business under its country's small-business VAT exemption, such as UStG §19 or art. 293 B CGI: no line may carry tax). Needed in the EU for any line without tax. Default: the profile's. | |
| vat_exchange_rate | No | For an invoice in another currency than the national one of the business's country: one unit of it in the national currency, for the VAT shown in both. Default in the EU: the European Central Bank's rate for the day of supply; UK businesses give it. | |
| payment_terms_days | No | Invoices: days to pay, instead of the profile's terms. | |
| tax_exemption_note | No | The wording printed for the exemption instead of the standard one, e.g. "Steuerbefreit als Kleinunternehmer nach § 19 UStG". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only cover readOnly/idempotent/destructive flags, and the description adds genuinely non-derivable traits: the result is an unnumbered draft, amounts are rounded half-up per line, the call costs $0.01, and nothing is charged on failure. It stops short of saying what the tool returns (e.g. the draft identifier), which matters for a create call with no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences: what it creates, the draft-state consequence, the rounding rule, and the cost. The most decision-relevant facts (draft, not sent) are front-loaded and nothing is repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 16-parameter, nested, no-output-schema create tool, the description covers the essentials an agent needs before calling: draft semantics, currency/rounding, cost, and next steps. The only meaningful gap is the return value (the created draft/id), which an agent would want given there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 88%, so baseline is 3; the description adds real value by clarifying that amounts are stated in the business's money in the document's currency and are rounded half-up line by line. It also summarizes the customer input modes (CRM contact/company vs name and email). It does not add meaning for the many tax/e-invoice/date parameters, but the schema already documents those richly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a precise verb and resource ("Create a quote or an invoice as a draft") and names the two lifecycle siblings, invoices_update and invoices_send. An agent can distinguish this from invoices_update, invoices_send, invoices_convert_quote and invoices_create_credit_note without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Nothing is numbered or sent yet; change drafts with invoices_update and send them with invoices_send" states the condition that selects this tool and explicitly routes the agent to the alternative for each follow-up step. No exclusions are left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoices_create_credit_noteCredit an invoiceAInspect
Issue a credit note against a sent invoice: all of it, some of its lines, or an amount. It takes the next credit note number (gapless, CN-0001...), gets a PDF and a page like an invoice, and is emailed to the customer unless email is false. It lowers what the customer still owes; refunded: true says the money went back to them instead, and the invoice records the refund. In much of the EU a sent invoice is corrected this way, not voided. When the account keeps books, the sale and its tax are reversed there. Costs $0.10 per call; nothing if it fails.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Email it to this address instead of the customer's. | |
| No | false: issue it without emailing anyone. | ||
| lines | No | Lines of the invoice to credit, at its prices. Leave out lines and amount to credit the whole invoice (or what is left of it). | |
| amount | No | A sum to credit, tax included, e.g. "50.00" off for a late delivery. Its tax follows the invoice's rates (or those of `lines`, when given too). | |
| method | No | With refunded: how the money went back. | other |
| reason | No | Printed on the credit note, e.g. "Returned: 1 bike rack". | |
| message | No | A short note in the email. | |
| refunded | No | true: the money went back to the customer (say how with method and reference). false: the credit lowers what they still owe. | |
| reference | No | With refunded: e.g. the bank transfer or refund id. | |
| invoice_id | Yes | The invoice_id invoices_create returned (quotes and credit notes have one too). | |
| link_hours | No | How long the PDF download link works, in hours (up to 168). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: gapless sequential numbering (CN-0001...), PDF/page generation, default emailing to the customer, the effect on the outstanding balance, the refund side effect recorded on the invoice, books reversal of sale and tax, and a stated price ($0.10 per call, free on failure). These are exactly the consequences an agent must know before spending money on a mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and its three modes, then progressively adds side effects, the EU/voiding context, books impact, and price. Every sentence carries new information and there is no restatement of the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a money-moving mutation with 11 params and no output schema, the description covers what gets created (numbered credit note, PDF, page, email), what changes on the invoice and in the books, and the failure billing behavior. Nothing material is left for the agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description still adds genuine meaning by explaining the mutual exclusivity/default of `lines` and `amount` ('Leave out lines and amount to credit the whole invoice') and the interaction of refunded with method/reference. It doesn't touch less obvious params like link_hours or to, but those are already well documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Issue a credit note against a sent invoice') and immediately enumerates the three scopes (whole, lines, amount). The clause 'a sent invoice is corrected this way, not voided' implicitly separates it from invoices_void, so an agent can distinguish the siblings 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a real decision rule ('In much of the EU a sent invoice is corrected this way, not voided') and explains the refunded vs. credit distinction, which is the main branch point between two modes. It never names invoices_void, invoices_use_credit, or invoices_list_credits explicitly, so routing between tools is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoices_delete_repeatingStop a repeating invoiceADestructiveIdempotentInspect
Stop a repeating invoice for good. The invoices it made stay as they are. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| repeating_id | Yes | From invoices_list_repeating. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint and idempotentHint, so the safety profile is partly covered; the description nonetheless adds genuinely new behavior: the action is permanent ('for good') and previously generated invoices survive untouched. 'Free' conveys a cost/plan detail absent from annotations, though its meaning (no charge vs. free plan) is not disambiguated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three very short sentences, front-loaded with the action and its permanence, then the side effect on existing invoices. 'Free.' is a fragment whose meaning is ambiguous, which is the only wasteful element.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive mutation with no output schema and annotations covering safety, the description supplies the two things an agent most needs: irreversibility and what happens to dependent records. It stops short of covering recoverability (any undo/restore path) or what the call returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema coverage is 100%, with the schema itself pointing at invoices_list_repeating as the source of repeating_id. The description adds nothing about the identifier beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: stop/delete a repeating invoice, with the added qualifier 'for good' that pins down the delete semantics. It does not name or distinguish itself from the near-identical sibling purchasing_delete_repeating_bill or position itself relative to invoices_save_repeating, so an agent must infer it from the resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is only implied: 'for good' signals a permanent action, which nudges toward using it only when no further invoices are wanted. There is no explicit when-to-use/when-not guidance, no mention of the alternative (editing via invoices_save_repeating), and no prerequisites such as plan or permission requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoices_getGet a quote or invoiceARead-onlyIdempotentInspect
One quote, invoice or credit note in full: lines with their amounts, totals and taxes, payments, credit notes, history, its public page and a fresh PDF link. Find it by invoice_id, or by number (with kind if documents of two kinds share it). Free.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| number | No | e.g. "INV-0042". | |
| invoice_id | No | The invoice_id invoices_create returned (quotes and credit notes have one too). | |
| link_hours | No | How long the PDF download link works, in hours (up to 168). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as read-only, idempotent, and non-destructive. The description adds useful behavioral context beyond that: it enumerates the full returned payload, mentions a fresh PDF link, and states that the operation is free, though it does not cover error behavior or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense but efficient sentences front-load the resource, returned contents, and lookup logic. The final “Free.” is terse and earns its place by disclosing cost behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned data: lines, totals, taxes, payments, credit notes, history, public page, and PDF link. Combined with annotations covering safety and schema descriptions covering parameters, an agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, and the description adds meaning by explaining that lookup can be by invoice_id or by number, with kind needed when two document kinds share a number. The link_hours parameter is left to its schema description, which is acceptable given the coverage level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact resource (one quote, invoice, or credit note) and lists the full contents returned, so it is clearly distinguishable from list/search siblings. It also states the two lookup paths, making the tool's purpose concrete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly explains when to use this tool for a single document and how to identify it by invoice_id or number, including the need for kind when numbers collide. It does not explicitly name alternatives such as invoices_list, but the single-document scope gives clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoices_get_profileGet the business detailsARead-onlyIdempotentInspect
The business details used on quotes and invoices, the next numbers, and what is still missing before documents can be sent. Free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds genuine value by enumerating the payload (business details, next numbers, missing setup items), which matters because no output schema exists. It does not describe the return structure or what happens when no profile is configured, and the trailing 'Free.' is ambiguous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single tight sentence that front-loads the payload description. The dangling 'Free.' fragment adds ambiguity rather than information and is the only wasted element.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read with no output schema, the description covers the important ground: what comes back and why an agent would care (readiness to send documents). What remains missing is minor – return shape and behavior when the profile is unset.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is nothing for the description to disambiguate; the baseline for zero-parameter tools is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description concretely names what the tool returns: business details used on quotes/invoices, next document numbers, and missing prerequisites before sending. That is more specific than the title alone. It does not, however, distinguish this read from the sibling invoices_set_profile, which an agent could easily confuse with it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied – the mention of 'what is still missing before documents can be sent' hints at a pre-send readiness check. There is no explicit instruction on when to call this versus invoices_set_profile, and no stated prerequisites or follow-up actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoices_listList quotes and invoicesARead-onlyIdempotentInspect
Quotes, invoices and credit notes, newest first, filtered by kind, status (also overdue, unpaid and expired), customer and issue date. Totals and balances come with each one. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| limit | No | ||
| offset | No | ||
| status | No | overdue: past due with a balance. unpaid: sent invoices with a balance. expired: sent quotes past valid_until. | |
| date_to | No | Issued on or before. | |
| customer | No | Part of the customer's name or email, or of the number. | |
| date_from | No | Issued on or after (YYYY-MM-DD). Drafts have no issue date yet. | |
| company_id | No | ||
| contact_id | No |
TDQS
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 new behavior: default newest-first ordering, that totals and balances are included per record, and that the call is free (no quota/cost). It says nothing about pagination or result size behavior despite limit/offset existing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences plus a one-word cost signal; the resource and ordering are front-loaded before the filter list. The trailing 'Free.' is terse and useful rather than filler, though the fragmentary style means no sentence explicitly frames the operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 optional params, no output schema and full annotation coverage, the description supplies the essentials: what is returned, ordering, filterable dimensions, and cost. Pagination behavior is the main gap, but for an unpaginated-optional list call this is close to sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 44%, so the description must carry weight; it does explain which dimensions are filterable (kind, status with the overdue/unpaid/expired nuance, customer, issue date) and adds the 'newest first' orientation. It leaves limit, offset, company_id and contact_id unmentioned, and the status detail largely restates the schema's own enum description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact resource set (quotes, invoices, credit notes) and the ordering (newest first), which lets an agent distinguish this from write-oriented siblings like invoices_create or invoices_get. It never uses an explicit verb such as 'list', but the enumerative phrasing plus 'filtered by...' makes the read-list intent unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the phrase 'filtered by kind, status..., customer and issue date', which signals this is the browse/search entry point for billing documents. However, no sibling is named as an alternative and no when-not condition is given (e.g., use invoices_get for a single document, invoices_list_repeating for recurring ones), so the agent must infer routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoices_list_creditsList customer creditsARead-onlyIdempotentInspect
Customers' credits, prepayments and overpayments, newest first: what each was, what is left, its VAT and how it was used or paid back. Filter by customer, or status (open, used, refunded, void, all; default open). Free.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| status | No | open | |
| customer | No | The customer: a CRM contact or company, or the email or name on their invoices. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, idempotent, non-destructive profile, and the description adds real context beyond that: 'newest first' ordering, the fact that it is free, and the payload contents (original amount, remaining balance, VAT, usage/repayment history). No permission or pagination behavior is disclosed, but the added value 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: contents and ordering first, then filtering and the free-cost note. No filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly spells out what each record contains, and it covers the key status filter. What is missing is pagination guidance (limit/offset semantics and defaults), a noticeable gap for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25%, but the description adds meaning for the status enum (open/used/refunded/void/all plus the default) and confirms customer filtering; limit and offset remain unexplained in both schema and description. Baseline 3 fits given the partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (customer credits, prepayments, overpayments) and a sort order (newest first), making the listing intent unambiguous. It does not, however, differentiate itself from related siblings such as purchasing_list_credits or invoices_use_credit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It mentions filtering by customer or status with the default (open), which implies how to narrow results, but never states when to use this tool versus alternatives like invoices_get or invoices_use_credit, nor any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoices_list_repeatingList repeating invoicesBRead-onlyIdempotentInspect
The repeating invoices: who each is for, its lines, how often, the next dates, whether it is drafted or sent, how many were made and the last one, and why one is paused. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful return-content context, including paused-reason visibility and the word 'Free', but it does not disclose pagination, ordering, permissions, or filtering behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single compact sentence that front-loads the resource and then lists the exposed fields. The trailing 'Free.' is a fragment that may be useful but is structurally abrupt.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because there is no output schema, the description should carry the return-value burden, and it does list many returned fields. However, it omits the status filter's meaning and does not explain ordering, pagination, or result limits, leaving gaps for an agent deciding how to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one optional status parameter with enum values, but the description never mentions status filtering at all. With schema description coverage at 0%, the description should compensate by explaining what the status filter does; it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resource, repeating invoices, and enumerates the details it exposes: recipient, lines, frequency, next dates, draft/sent state, generated count, last invoice, and pause reason. It is clear what the tool returns, though the verb is implied through the title rather than stated in the description itself and no sibling is explicitly contrasted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as invoices_list or invoices_get, nor any mention of prerequisites or exclusions. The only contextual cue is the implicit scope of listing repeating invoices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoices_record_paymentRecord a paymentAInspect
Record money received against a sent invoice: amount, date, method and reference. It becomes partially_paid, or paid when nothing is left. A payment can't be more than the balance, unless keep_excess keeps the rest as the customer's credit (an overpayment, like Xero's, for invoices_use_credit); a negative amount records a refund. When the account keeps books, it is posted to them. Costs $0.01 per call; nothing if it fails.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | When it was paid. Default today. | |
| note | No | ||
| amount | Yes | In the invoice's currency, e.g. "250.00". Negative for a refund. | |
| method | No | other | |
| reference | No | e.g. the bank transfer reference or the payment id. | |
| invoice_id | Yes | The invoice_id invoices_create returned (quotes and credit notes have one too). | |
| keep_excess | No | Paid more than the balance: keep the rest as the customer's credit. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: resulting states (partially_paid / paid), the balance ceiling and keep_excess escape hatch, refund semantics, posting to the books, and a per-call price with failure being free. That is exactly the kind of financial/side-effect disclosure 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then constraints, then cost — a sensible order with little waste. The 'like Xero's' aside is slightly noisy, but the density is earned for a money-moving tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description states the resulting invoice status and the cost/failure behavior, covering what an agent needs before calling. It omits what the call returns (e.g. payment id) and any repeat-call/idempotency guidance despite idempotentHint=false.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 71% and the description reinforces the two highest-risk parameters (negative amount = refund, keep_excess = customer credit via invoices_use_credit). The note parameter's purpose remains unexplained in both places, which keeps it off a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Record money received against a sent invoice') and enumerates the fields captured. It is clearly distinguishable from invoices_use_credit and invoices_record_prepayment, and even names the credit-use sibling for the overpayment case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the precondition ('against a sent invoice'), the refund path (negative amount) and the overpayment path (keep_excess). It does not explicitly say when to prefer invoices_record_prepayment or invoices_use_credit instead, so routing is clear but not fully disambiguated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoices_record_prepaymentRecord a prepaymentAInspect
Record money a customer paid before there is an invoice, like a deposit, as Xero's prepayments: it waits as their credit (CR-0001 on) until invoices_use_credit puts it on their invoice or pays it back. With tax_rate it carries its VAT, owed when the money came in (as the EU has it for advance payments); using it on the invoice takes that VAT back off, so the sale's VAT counts once. With books kept it is posted at once: the bank against Customer prepayments (2400, made when missing) and the tax owed. Costs $0.01 per call; nothing if it fails.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | When it came in. Default today. | |
| note | No | ||
| amount | Yes | What they paid, tax included, e.g. "3570.00". | |
| method | No | bank_transfer | |
| currency | No | ISO 4217, e.g. "USD", "EUR" or "JPY". | |
| customer | Yes | Who paid: a CRM contact or company, or a name and email. | |
| tax_rate | No | The VAT in it, in percent, e.g. 19. Default none. | |
| reference | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses the credit-holding behavior (CR-0001), the VAT carry-and-reclaim mechanics, the accounting postings against Customer prepayments (2400), and the cost of $0.01 per call with no charge on failure. This is unusually rich behavioral context for a write tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and lifecycle, and each sentence adds concrete value about VAT, postings, or cost. It is dense but not wasteful, though it could be slightly tighter for an 8-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema, the description does a thorough job explaining the tool's behavior, side effects, and cost. It does not describe what the tool returns (for example, a prepayment identifier), which is the main remaining gap for an agent invoking it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 63%, and the description adds meaningful semantics for tax_rate by explaining how VAT is carried and later reclaimed. However, it does not clarify the customer object, date, method, currency, or reference parameters, so it only partially compensates for the remaining schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Record money a customer paid before there is an invoice, like a deposit, as Xero's prepayments'. It distinguishes the tool from its sibling invoices_use_credit by naming it as the consumer of the credit, and the phrase 'before there is an invoice' implicitly separates it from standard invoice-payment tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly says when to use this tool: when money is received before an invoice exists, such as a deposit. It also names the alternative invoices_use_credit and describes the lifecycle, but it does not explicitly rule out invoices_record_payment or state what to do once an invoice exists, leaving some 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.
invoices_remindRemind about an unpaid invoiceAInspect
Email the customer a reminder about a sent invoice that still has a balance: the amount due, the due date and the links to pay. At most once a day per invoice. Costs $0.02 per call; nothing if it fails.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Send to this address instead of the customer's email. | |
| message | No | A short note in the email, e.g. "Just a friendly reminder." | |
| invoice_id | Yes | The invoice_id invoices_create returned (quotes and credit notes have one too). | |
| link_hours | No | How long the PDF download link works, in hours (up to 168). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds cost ($0.02 per call, free on failure) and a per-invoice daily rate limit, neither of which is expressible in the annotations. It also makes clear the tool sends a real external email carrying amount due, due date and pay links, supplementing openWorldHint=true with concrete consequence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and its precondition, then the limit and cost. No filler and nothing repeated from the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers preconditions, external side effect, rate limit and pricing for a mutation tool with no output schema. It leaves the failure response and whether reminders are logged/visible unspecified, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so invoice_id, to, message and link_hours are already fully documented. The description only implies what the email body contains, adding no parameter-level meaning beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: email a payment reminder for a sent invoice with an outstanding balance. It does not name invoices_remind_overdue, so the boundary against that sibling must be inferred from the word 'balance' versus 'overdue'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete precondition (invoice must be sent and still have a balance) and an operational limit (at most once a day per invoice). It stops short of naming the alternative for overdue cases or stating when not to remind at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoices_remind_overdueRemind everyone who is overdueAInspect
Email a reminder about every sent invoice at least days_overdue days past its due date that still has a balance, the longest overdue first, up to limit invoices: one call, or one weekly schedule (schedules_create), chases them all. Each invoice is reminded at most once a day; the ones that can't be (no customer email, emailed in the last 24 hours, the address bounced) are listed with why. $0.02 per reminder sent. Costs $0.02 per reminder sent; nothing if none are found.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| message | No | A short note in each email, e.g. "Just a friendly reminder." | |
| link_hours | No | How long the PDF download link works, in hours (up to 168). | |
| days_overdue | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing ordering (longest overdue first), a hard dedupe rule (each invoice at most once per day), the specific reasons an invoice is skipped (no customer email, emailed in past 24h, bounced address), that skipped invoices are reported with why, and the exact cost of $0.02 per reminder sent. These are real operating constraints an agent cannot get from the schema or annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The cost is stated twice in near-identical wording ('$0.02 per reminder sent. Costs $0.02 per reminder sent; nothing if none are found'), which is pure redundancy. The 'one call, or one weekly schedule (schedules_create), chases them all' clause is a run-on that reads awkwardly and slows parsing of an otherwise front-loaded description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully signals the return shape (skipped invoices listed with reasons) and the batching semantics of limit and days_overdue. It is close to complete; the only real omission is how this relates to the non-bulk invoices_remind sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, but the description compensates by explaining what days_overdue means (invoices at least that many days past due) and how limit caps the batch. message and link_hours are already documented in the schema, so the remaining gap is minor.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource with clear scope: email a reminder for every sent invoice past its due date with a remaining balance, longest overdue first. The scope is unambiguous, but the description never distinguishes this from the sibling invoices_remind, leaving the agent to infer that one is bulk and the other is single-invoice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions the schedule option (schedules_create) for weekly chasing, which is genuine usage context, and states that nothing is charged if no invoices are found. However it gives no explicit when-to-use versus invoices_remind or invoices_send, and the phrase 'one call, or one weekly schedule ... chases them all' is ambiguous about whether the schedule is created here or elsewhere.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoices_reportRun a receivables reportARead-onlyIdempotentInspect
aged_receivables: what each customer owes on as_of (default today), by how long past due: current (not due yet), 1-30, 31-60, 61-90 and over 90 days, per currency. sales: what was invoiced from-to (by issue date; default this month) per customer, less the credit notes issued in it: net, tax and total, and what was paid in it. To show a person, put it in a view (view_show). Free. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | YYYY-MM-DD | |
| from | No | YYYY-MM-DD | |
| as_of | No | YYYY-MM-DD | |
| report | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real context: the default date semantics and the exact measures each report returns, but says nothing about volume, pagination or whether historical re-runs are stable. The duplicated 'Free. Free.' is redundant rather than informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The two-mode structure is reasonable and the aging buckets are front-loaded, but the prose is a dense run-on and the trailing 'Free. Free.' is a duplicated, wasted sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only report tool with no output schema, the description enumerates the returned measures (current/1-30/31-60/61-90/90+, net, tax, total, paid) and the grouping keys, which is what an agent needs to pick the right report. Only the display/pagination mechanics are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description meaningfully extends the 75%-covered schema: it states that as_of defaults to today, that from/to are keyed on issue date and default to the current month, and it decodes the report enum into concrete semantics. That is the kind of meaning the enum and pattern fields cannot carry.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names both modes explicitly and describes the exact content of each: aged_receivables gives per-customer amounts bucketed by days past due and currency; sales gives invoiced/net/tax/total/paid per customer. This is specific verb+resource work, though it never distinguishes itself from near neighbours such as invoices_summary or invoices_statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the two report branches and their stated defaults (as_of = today, from-to = this month). The one routing hint, 'To show a person, put it in a view (view_show)', is a follow-up step rather than guidance on when this report beats the sibling reports.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoices_save_repeatingRepeat an invoiceAInspect
An invoice made again every so many weeks, months or years, like Xero's repeating invoices: the customer and lines as for invoices_create, every and unit, the start date, and an end_date or a number of times. action draft leaves each one for you to check and send; send emails it to the customer on its day. Descriptions and notes may hold [Month], [Year], [Quarter] or [Week], with an offset like [Month+1], filled in from each invoice's date. Each invoice is made by Conecto's worker as this key and costs what invoices_create and invoices_send cost. Change one by repeating_id: only what you pass changes; status paused stops it, active resumes it (dates it missed are skipped). Costs $0.001 per call; nothing if it fails.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Your own label, e.g. "Hotel service contract". | |
| unit | No | ||
| every | No | Default 1. | |
| items | No | ||
| notes | No | Printed above the lines, e.g. "Thank you for your order" or a project reference. | |
| start | No | The first invoice's date, today or later. Monthly and yearly invoices keep to its day of the month. | |
| times | No | How many invoices in all. | |
| action | No | Default draft. | |
| status | No | ||
| currency | No | ISO 4217, e.g. "USD", "EUR" or "JPY". | |
| customer | No | Who the document is for. Link a CRM record with contact_id or company_id, or give name and email (an email that matches a CRM contact links it). What is given here is printed as it is. | |
| end_date | No | No invoice after this date. "" for none. | |
| e_invoice | No | Invoices and their credit notes as EN 16931 e-invoices (German B2B invoices must be from 2027): factur-x (Factur-X/ZUGFeRD, the XML inside the PDF/A-3) or xrechnung (XRechnung 3.0, its own XML beside the PDF), checked against the EN 16931 schema before sending. "" is the default: none, except that from 2027 an invoice from a German business to a German business above EUR 250 is a factur-x; "none" opts out (a business under the EUR 800,000 turnover allowance until 2028). Needs the customer's country. Default: the profile's. | |
| payment_link | No | An https link to pay this document. Default: the profile's payment_link. | |
| repeating_id | No | From invoices_list_repeating. | |
| tax_exemption | No | Why lines with tax_rate 0 carry no tax, printed on the invoice as the law asks: exempt, zero_rated, reverse_charge (the customer accounts for the VAT), intra_eu (goods to a business in another EU country), export (goods leaving the EU), outside_scope, small_business (a business under its country's small-business VAT exemption, such as UStG §19 or art. 293 B CGI: no line may carry tax). Needed in the EU for any line without tax. Default: the profile's. | |
| payment_terms_days | No | Each invoice falls due this long after its date. Default: the profile's payment terms. | |
| tax_exemption_note | No | The wording printed for the exemption instead of the standard one, e.g. "Steuerbefreit als Kleinunternehmer nach § 19 UStG". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: discloses that a worker (not the call) generates each invoice, that draft leaves each for review while send emails on the day, that paused schedules skip missed dates, and that cost is $0.001 per call with no charge on failure. It is consistent with readOnlyHint=false and idempotentHint=false, and the partial-update semantics clarify why repeated calls with repeating_id are not idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but almost every clause carries information an agent needs (cadence, action, placeholders, update semantics, cost). It is a single run-on block with semicolons rather than front-loaded structure, which makes scanning harder than it needs to be, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the creation/update lifecycle, scheduling semantics and billing cost, which is a lot for an 18-parameter tool. The main gap is the return value: with no output schema, the description never says whether the created schedule's repeating_id is returned, even though it tells the agent to use repeating_id for later changes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 83%, so the schema already documents most fields; the description adds real value on top by explaining the end_date vs times interaction, the action draft/send meaning, and the placeholder grammar ([Month], [Month+1], [Quarter]) that applies inside descriptions and notes but is not captured in the schema. It says little about currency, tax_exemption or e_invoice, which the schema already handles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource ('an invoice made again every so many weeks, months or years') and anchors it to a known concept (Xero repeating invoices). It also differentiates the create path from the update path via repeating_id, so an agent can tell this apart from invoices_create and invoices_update 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly covers the two modes: omit repeating_id to create, pass repeating_id to change only the fields supplied, and use status paused/active to stop or resume. It does not name sibling alternatives such as invoices_create for one-off invoices or invoices_delete_repeating, and the 'as for invoices_create' phrase is about parameter shape rather than when-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoices_sendSend a quote or invoiceAInspect
Send a draft: it takes the next number (gapless), its PDF is made and kept in the file store, and the customer is emailed a link to its page (to view, pay or accept it) and to the PDF. On a document already sent it emails it again (to to, if given). email: false sends it without emailing anyone, to hand the link over yourself. When the account keeps books (books_setup), a sent invoice is posted to them. Before an invoice or credit note takes its number it is checked against the law of the business's country (in the EU, the UK and Switzerland: the business's address and VAT ID, the customer's VAT ID and address where needed, why a line has no tax, the VAT in the national currency); what is missing is refused for free, warnings come back. With e_invoice set it also goes out as an EN 16931 e-invoice (Factur-X inside the PDF, or an XRechnung XML beside it), validated against the official schema first. Costs $0.10 per call; nothing if it fails.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Send to this address instead of the customer's email. | |
| No | false: number it and make the PDF and the page, but email no one. | ||
| message | No | A short note in the email, e.g. "Thanks for your order!" | |
| invoice_id | Yes | The invoice_id invoices_create returned (quotes and credit notes have one too). | |
| link_hours | No | How long the PDF download link works, in hours (up to 168). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: numbering is gapless and therefore one-way, legal validation can refuse (free) or warn, e_invoice adds Factur-X/XRechnung validated against the official schema, cost is $0.10 per call and nothing on failure, and posting to books happens when books_setup is active. The irreversibility and the validate-before-number ordering are exactly the operational facts an agent needs and cannot get from readOnlyHint/destructiveHint alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main action is front-loaded in the first sentence and nearly every clause carries distinct information (numbering, PDF, email, validation, e-invoicing, pricing). It is delivered as one dense block with parenthetical sub-clauses, which slows parsing of the legal-check section, but there is little genuine waste to cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating, open-world tool with no output schema and only generic annotations, the description covers the full lifecycle: numbering, PDF persistence, delivery channels, legal gating, e-invoice output, bookkeeping side effect, and billing. It omits what the call returns (document id/URL) and any rate-limit or retry guidance, which are the remaining gaps an agent might want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description earns a bump by explaining the non-obvious semantics: email:false means 'number it and hand the link over yourself' and `to` only overrides on resend ('to `to`, if given'). `message`, `link_hours`, and `invoice_id` are left entirely to the schema, which is acceptable at this coverage level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Send a draft') and enumerates the concrete side effects: gapless numbering, PDF generation into the file store, and customer email with page and PDF links. It also covers the resend case and the email:false variant, so an agent can tell this apart from invoices_create, invoices_update, and invoices_remind without opening their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly frames the two entry conditions: a draft (numbers, renders, emails) versus an already-sent document (re-emails to `to` if given), plus the manual-delivery path via email:false. It stops short of explicit exclusions, though – it never says to use invoices_convert_quote for a quote→invoice path or invoices_void/remind instead, leaving the agent to infer those boundaries from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoices_set_expected_dateSet when a customer will payAIdempotentInspect
The day a customer said they would pay an invoice that is sent and not paid yet, like Xero's expected date: the cash flow forecast (books_report cash_forecast) counts the invoice on that day, even one already overdue, which it otherwise leaves out. null clears it. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | YYYY-MM-DD, or null to go back to the default. | |
| invoice_id | Yes | The invoice_id invoices_create returned (quotes and credit notes have one too). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses the downstream effect (the cash flow forecast counts the invoice on that day, including overdue ones it would otherwise omit) and that null reverts to default. Combined with idempotentHint=true and destructiveHint=false, the mutation's behavior is well covered; only reversion details for existing values are left implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence front-loads the purpose and effect, with no filler. The trailing 'Free.' fragment is terse to the point of being cryptic and adds minor noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter idempotent mutation with no output schema, the description covers prerequisites, reset semantics, and the reporting consequence. Sufficient to call correctly; only edge cases such as behavior on voided or unpaid-deleted invoices are undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning beyond the schema: it explains what the date represents and that null returns to default, which matters for overdue invoices. The invoice_id parameter is left 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource (set the expected payment day on an invoice) and scopes it precisely: invoices that are sent and not yet paid. The Xero 'expected date' analogy and the mention of books_report cash_forecast make the tool's identity unmistakable against siblings like invoices_update or purchasing_set_planned_date.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the precondition clearly (invoice must be sent and unpaid) and the reset behavior ('null clears it'). It does not name an alternative sibling to use for other cases, which keeps it short of a 5, but the usage context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoices_set_profileSet the business detailsAIdempotentInspect
Set the business details printed on quotes and invoices: legal name, country, address, tax ID, email, phone, logo, default currency, payment terms, tax rate, number prefixes and next numbers, payment instructions, an optional payment link and legal notes. Only the fields given change. Sending needs legal_name and country; in the EU, the UK and Switzerland an invoice also needs the address and tax ID, checked when it is sent. Costs $0.001 per call; nothing if it fails.
| Name | Required | Description | Default |
|---|---|---|---|
| No | Where customers write about invoices: printed, and the Reply-To of emails. | ||
| paper | No | Default: Letter for USD and CAD businesses, else A4. | |
| phone | No | ||
| footer | No | Payment instructions printed at the bottom of invoices, e.g. bank name, IBAN and BIC. | |
| tax_id | No | VAT, GST or tax number, printed with the address. | |
| address | No | Postal address, one line per row. | |
| country | No | ISO 3166-1 code of the country the business is established in, e.g. "DE". Needed to send: it decides what invoices must show (in the EU the VAT ID, addresses, the date of supply, why a line has no tax, VAT in the national currency) and is checked before each one goes out. | |
| currency | No | Default currency of new documents, ISO 4217. | |
| tax_rate | No | Default tax percent for new lines, e.g. 19. 0 for none. | |
| timezone | No | IANA time zone for dates, e.g. "America/New_York". Default UTC. | |
| e_invoice | No | Invoices and their credit notes as EN 16931 e-invoices (German B2B invoices must be from 2027): factur-x (Factur-X/ZUGFeRD, the XML inside the PDF/A-3) or xrechnung (XRechnung 3.0, its own XML beside the PDF), checked against the EN 16931 schema before sending. "" is the default: none, except that from 2027 an invoice from a German business to a German business above EUR 250 is a factur-x; "none" opts out (a business under the EUR 800,000 turnover allowance until 2028). Needs the customer's country. Default: the profile's. | |
| tax_label | No | What the tax is called on documents: "VAT", "GST", "Sales tax". Default "Tax". | |
| legal_name | No | The business name on documents; also the email sender name. | |
| pay_online | No | A Pay button on each invoice's page: Stripe Checkout on the business's own Stripe (connect it with invoices_connect_stripe); each payment is recorded and posted to the books on its own. $0.10 per invoice paid online. | |
| legal_notes | No | Printed at the foot of every quote, invoice and credit note: the company register and managing directors, a small-business VAT note, late-payment terms the law asks for (France: penalty rate and the EUR 40 indemnity). In France and Germany the country's default wording is filled in when the country is set and none is given; "" brings it back. | |
| logo_file_id | No | An image in the file store (PNG, JPEG, GIF, WebP or SVG, up to 1 MB). "" removes the logo. | |
| payment_link | No | An https link where customers pay, e.g. the business's own Stripe Payment Link. "" removes it. | |
| quote_prefix | No | Default "Q-". | |
| tax_exemption | No | Why lines with tax_rate 0 carry no tax, printed on the invoice as the law asks: exempt, zero_rated, reverse_charge (the customer accounts for the VAT), intra_eu (goods to a business in another EU country), export (goods leaving the EU), outside_scope, small_business (a business under its country's small-business VAT exemption, such as UStG §19 or art. 293 B CGI: no line may carry tax). Needed in the EU for any line without tax. Default: the profile's. | |
| invoice_prefix | No | Default "INV-": invoices are INV-0001, INV-0002... | |
| quote_valid_days | No | How long quotes stay open. Default 30. | |
| document_language | No | The language of the fixed words on quotes, invoices and credit notes (labels, dates, amounts); "" picks it by country: German in Germany and Austria, French in France, else English. The business's own text is printed as written. | |
| next_quote_number | No | ||
| credit_note_prefix | No | Default "CN-". | |
| payment_terms_days | No | Days from issue to due date. Default 14. | |
| tax_exemption_note | No | The wording printed for the exemption instead of the standard one, e.g. "Steuerbefreit als Kleinunternehmer nach § 19 UStG". | |
| next_invoice_number | No | The number the next invoice gets, e.g. to carry on from another tool. Never one already used. | |
| next_credit_note_number | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnly=false, idempotent=true, destructive=false): it discloses the partial-update rule, send-time validation requirements, the $0.001 per-call cost with no charge on failure, the $0.10/online-payment cost surfaced via pay_online, and legal e-invoicing/legal-notes defaulting behavior. This is material context an agent could not infer from 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and field scope, then adds prerequisite and cost sentences that earn their place. The long mid-sentence field enumeration partly duplicates the schema but is not wasteful enough to penalize heavily.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 28-parameter profile setter with no output schema, the description covers the partial-update contract, required-when-sending fields, legal validation behavior, costs, and defaulting rules. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 89%, so the schema already documents nearly all 28 parameters in detail; the description mostly re-lists the same field names without adding syntax or format meaning beyond it. Baseline 3 applies since the schema carries the semantic load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Set") and resource ("business details printed on quotes and invoices") and enumerates the scope of fields, from legal name to number prefixes and e-invoicing. An agent can distinguish this from the read counterpart invoices_get_profile 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: "Only the fields given change" establishes partial-update semantics, and "Sending needs legal_name and country; in the EU, the UK and Switzerland an invoice also needs the address and tax ID" states prerequisites and when validation is enforced. It does not explicitly route to alternatives (e.g. invoices_get_profile to read), which holds it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoices_statementMake a customer statementAInspect
A customer statement, like Xero's. outstanding (the default) lists every invoice the customer still owed on as_of (default today) with what was paid or credited, how late each is and the money owed by how late; activity starts from what they owed before from, lists each invoice, payment and credit note up to to (default this month so far) with the running balance, and ends with what they owed. One currency (default the one they are billed in most). It is a PDF in the file store in the business's look and document language; email: true also emails the customer a link to it in the business's name, under the rules every bot email follows and at most once a day per customer. $0.05. Costs $0.05 per call; nothing if it fails.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | YYYY-MM-DD | |
| from | No | YYYY-MM-DD | |
| kind | No | ||
| as_of | No | YYYY-MM-DD | |
| No | |||
| message | No | Your own words above the amount due. | |
| send_to | No | Another address to email it to. | |
| currency | No | ISO 4217, e.g. "USD", "EUR" or "JPY". | |
| customer | Yes | Whose statement: a CRM contact_id or company_id, or the email or the name on their invoices. | |
| link_hours | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotation hints, it discloses where the artifact lands (file store, in the business's look and document language), the email side effect and its guardrails (sent in the business's name, subject to the standard bot email rules, at most once per customer per day), and the cost model ($0.05 per call, free on failure). This is exactly the kind of non-obvious behavioral context that annotations cannot convey, and it is consistent with readOnlyHint=false / openWorldHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Almost every clause carries real information, but it is delivered as two very long run-on sentences where mode definitions, defaults, output location, email rules and pricing are all run together. The key distinction (outstanding vs activity) is buried mid-sentence rather than front-loaded, making it harder to parse than it needs to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter, nested-object tool with no output schema, the description covers the important ground: modes, defaults, artifact location, email behavior and pricing. What it never states is what the call actually returns to the caller (a file URL? an id? a status?), which matters when 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 70% schema coverage, the description still adds substantial meaning: it explains the two values of 'kind' in detail, supplies defaults for as_of ('today'), to ('this month so far') and currency ('the one they are billed in most'), and describes what 'from' anchors. Gaps remain for 'link_hours' and 'send_to', which are never mentioned despite link_hours having no schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact artifact ('A customer statement, like Xero's') and enumerates what it contains for both the 'outstanding' and 'activity' variants, so an agent knows precisely what it produces. It stops short of contrasting itself with sibling tools like invoices_report or invoices_summary, which a top score would require.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly explains when each mode applies: 'outstanding (the default)' gives a point-in-time debt view as of a date, while 'activity' gives a from/to transaction history with a running balance. Defaults for kind, as_of, to and currency are spelled out. No explicit exclusions or named alternatives ('use invoices_report when...') are given, 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.
invoices_summaryWhat customers oweBRead-onlyIdempotentInspect
What customers owe, per currency: outstanding, overdue and paid this month, plus quotes still open. Free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 that the figures are currency-partitioned and scope the buckets, but says nothing about period boundaries, whether 'paid this month' is calendar or rolling, or workspace-wide scope (no params implies everything). 'Free' is unexplained – it may mean no credit cost or unpaid invoices.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the key breakdown front-loaded, followed by a two-word tail. The trailing 'Free.' is cryptic and slightly wasteful without explanation, but nothing else is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no params and no output schema, the description must hint at the returned shape, and enumerating outstanding/overdue/paid/open quotes largely does that. Missing only a note on currency axis versus totals and on period definition; other invoice tools are left unmentioned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so there is nothing to disambiguate; the baseline applies. The description correctly signals a no-input, whole-account aggregate rather than implying filters exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States verb-less but specific scope: receivables broken down per currency into outstanding, overdue, paid-this-month, plus open quotes. That is more informative than the title and distinguishes it from detail-oriented siblings like invoices_list and invoices_get. It does not explicitly contrast with invoices_report or invoices_statement, which cover overlapping ground.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance, and no mention of the obvious alternatives (invoices_report, invoices_statement, invoices_list_credits) that could return overlapping figures. The agent must infer from the word 'summary' that this is the aggregate-first choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoices_updateChange a draftAIdempotentInspect
Change a draft quote or invoice: give only what changes; customer and items replace the old ones. A sent document can't change: void it with invoices_void and create a new one. Costs $0.01 per call; nothing if it fails.
| Name | Required | Description | Default |
|---|---|---|---|
| items | No | ||
| notes | No | Printed above the lines, e.g. "Thank you for your order" or a project reference. | |
| currency | No | ISO 4217, e.g. "USD", "EUR" or "JPY". | |
| customer | No | Who the document is for. Link a CRM record with contact_id or company_id, or give name and email (an email that matches a CRM contact links it). What is given here is printed as it is. | |
| due_date | No | YYYY-MM-DD, or null to go back to the default. | |
| e_invoice | No | Invoices and their credit notes as EN 16931 e-invoices (German B2B invoices must be from 2027): factur-x (Factur-X/ZUGFeRD, the XML inside the PDF/A-3) or xrechnung (XRechnung 3.0, its own XML beside the PDF), checked against the EN 16931 schema before sending. "" is the default: none, except that from 2027 an invoice from a German business to a German business above EUR 250 is a factur-x; "none" opts out (a business under the EUR 800,000 turnover allowance until 2028). Needs the customer's country. Default: the profile's. | |
| invoice_id | Yes | The invoice_id invoices_create returned (quotes and credit notes have one too). | |
| issue_date | No | YYYY-MM-DD, or null to go back to the default. | |
| supply_date | No | YYYY-MM-DD, or null to go back to the default. | |
| valid_until | No | YYYY-MM-DD, or null to go back to the default. | |
| payment_link | No | An https link to pay this document. Default: the profile's payment_link. | |
| supply_until | No | YYYY-MM-DD, or null to go back to the default. | |
| tax_exemption | No | Why lines with tax_rate 0 carry no tax, printed on the invoice as the law asks: exempt, zero_rated, reverse_charge (the customer accounts for the VAT), intra_eu (goods to a business in another EU country), export (goods leaving the EU), outside_scope, small_business (a business under its country's small-business VAT exemption, such as UStG §19 or art. 293 B CGI: no line may carry tax). Needed in the EU for any line without tax. Default: the profile's. | |
| vat_exchange_rate | No | For an invoice in another currency than the national one of the business's country: one unit of it in the national currency, for the VAT shown in both. Default in the EU: the European Central Bank's rate for the day of supply; UK businesses give it. | |
| payment_terms_days | No | ||
| tax_exemption_note | No | The wording printed for the exemption instead of the standard one, e.g. "Steuerbefreit als Kleinunternehmer nach § 19 UStG". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnly=false, idempotent=true, destructive=false): it discloses patch semantics ('give only what changes'), the destructive-subtle rule that customer and items replace the old ones wholesale, the draft-only guard, and a per-call cost with a failure-charge exemption. That is exactly the 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each load-bearing: what it changes, how the payload is interpreted, the blocking condition plus alternative, and the cost. Front-loaded with the action and the mutation model.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 16-parameter mutation with nested objects and no output schema, the definition covers the risky parts (draft-only, replace semantics, cost) that determine correct invocation. Only minor gap is that it says nothing about what a successful call returns or whether the invoice_id changes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 88%, so the baseline is 3; the description adds genuinely new semantics beyond it by clarifying that parameters behave as a partial patch and that 'customer' and 'items' are replace-not-merge. It does not touch the 16 individual fields, but the schema already documents those well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('change a draft quote or invoice') and immediately pins down the operation's nature as a partial update. An agent can distinguish this from invoices_create, invoices_send and invoices_void without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the exclusion ('a sent document can't change') and routes to the alternative workflow with the sibling named: 'void it with invoices_void and create a new one'. The when-to-use condition (draft only) is stated, not implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoices_use_creditUse or pay back a creditAInspect
Put a customer's credit (a prepayment or an overpayment) on one of their sent invoices, like Xero's allocate credit: invoice_id, and amount (default all it can: what is left on the credit or the invoice, the smaller); the invoice records it as a payment with method credit, and its share of the credit's VAT comes back off. Or refund: true pays what is left (or amount) back to the customer, with date and method; or void: true takes back a prepayment recorded by mistake while none of it is used. Same customer and currency only. Costs $0.01 per call; nothing if it fails.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | YYYY-MM-DD | |
| void | No | ||
| amount | No | ||
| credit | Yes | The credit's number, like "CR-0001" (invoices_list_credits). | |
| method | No | bank_transfer | |
| refund | No | ||
| reference | No | ||
| invoice_id | No | The invoice_id invoices_create returned (quotes and credit notes have one too). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses concrete side effects: the invoice records a payment with method credit, the credit's VAT share comes back off, refunds pay the customer with date and method, and void reverses an erroneous prepayment. It also states the per-call cost and that failures are free, with no annotation contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main allocation behavior is front-loaded, and every clause carries operational meaning despite the dense single sentence. It could be more scannable, but there is little filler and the cost note is appropriately separate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation tool with no output schema, the description covers the main modes, defaults, constraints, side effects, and cost. It is not fully complete because it does not explain the reference parameter or clarify partial-allocation return behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 38% schema description coverage, the description compensates well by explaining credit as a prepayment/overpayment, the invoice_id target, the amount default of the smaller remaining credit/invoice balance, and the refund and void flags. It still leaves the reference parameter unexplained and does not add meaning beyond the enum for method.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: "Put a customer's credit ... on one of their sent invoices," and it clearly covers allocate, refund, and void modes. It distinguishes the operation from a plain payment by explaining that the invoice records it as a payment with method credit and reverses the credit's VAT share.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly describes when to use allocation versus refund: true versus void: true, including the condition that void applies only while none of the prepayment is used. It also states the same-customer and same-currency constraint, giving clear boundaries for correct use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoices_voidVoid a quote or invoiceADestructiveInspect
Void a document. A sent one keeps its number (numbers stay gapless) but can no longer be paid, accepted or viewed; a draft is simply discarded. Refused while payments are recorded on it, on an invoice with credit notes and on a credit note (correct those with another credit note or a new invoice), and on an invoice that may be in the customer's hands (emailed, opened, or its PDF downloaded through a link): that one is cancelled with a credit note for all of it, as the law asks. An invoice posted to the books is reversed there. Costs $0.01 per call; nothing if it fails.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| invoice_id | Yes | The invoice_id invoices_create returned (quotes and credit notes have one too). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint=true annotation: it discloses that numbers stay gapless, that voided documents can no longer be paid/accepted/viewed, that drafts are discarded, that book-posted invoices are reversed in the ledger, and that the call costs $0.01 but is free on failure. These are exactly the behavioral facts the annotations don't carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action ('Void a document') and then packs refusal conditions, alternatives and pricing into dense but purposeful sentences. Slightly long and clause-heavy, but virtually every sentence carries operationally relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a mutation tool with no output schema, the description covers preconditions, side effects, ledger reversal and cost comprehensively. The only gap is what the call returns on success/failure and no mention of the optional reason parameter's role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: invoice_id is documented in the schema, but the 'reason' parameter has no schema description and the description never mentions it. The description does implicitly add value by clarifying that quotes and credit notes also carry an invoice_id, but the reason field remains undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (void) applied to specific resources (quote, invoice, credit note) and describes the different outcome per document state (sent keeps its number, draft discarded). This clearly separates it from siblings such as invoices_create_credit_note or invoices_update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly enumerates when the call is refused (payments recorded, invoice with credit notes, credit note, invoice possibly in customer's hands) and names the alternative remedy for each case ('correct those with another credit note or a new invoice', 'cancelled with a credit note for all of it'). An agent can decide when to use this vs. a credit note without inference.
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.
52 tool updates
- First observed
account_add_approval_rule - First observed
account_assign_team - First observed
account_audit_log - First observed
account_balance - First observed
account_dashboard_link - First observed
account_data_locations - First observed
account_emit_event - First observed
account_erase_person - First observed
account_events - First observed
account_export_all - First observed
account_export_person - First observed
account_find_person - First observed
account_get_brand - First observed
account_get_call - First observed
account_get_limits - First observed
account_list_approval_rules - First observed
account_list_calls - First observed
account_list_email_templates - First observed
account_list_teams - First observed
account_owner_link - First observed
account_pause_team - First observed
account_refund_topup - First observed
account_request_limit - First observed
account_save_team - First observed
account_search - First observed
account_set_brand - First observed
account_set_email_template - First observed
account_set_owner_email - First observed
invoices_connect_stripe - First observed
invoices_convert_quote - First observed
invoices_create - First observed
invoices_create_credit_note - First observed
invoices_delete_repeating - First observed
invoices_get - First observed
invoices_get_profile - First observed
invoices_list - First observed
invoices_list_credits - First observed
invoices_list_repeating - First observed
invoices_record_payment - First observed
invoices_record_prepayment - First observed
invoices_remind - First observed
invoices_remind_overdue - First observed
invoices_report - First observed
invoices_save_repeating - First observed
invoices_send - First observed
invoices_set_expected_date - First observed
invoices_set_profile - First observed
invoices_statement - First observed
invoices_summary - First observed
invoices_update - First observed
invoices_use_credit - First observed
invoices_void
Related MCP Connectors
Quotes with VAT lines and a validity date as A4 PDFs; an accepted quote becomes an invoice.
Quotes and estimates: VAT line items, a validity date, an A4 PDF, accept makes an invoice.
Quotes and estimates: VAT line items, a validity date, an A4 PDF, accept makes an invoice.
Professional invoicing: exact invoices and estimates, a client portal and reminders, from any agent.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables the generation of professional PDF invoices and their distribution via email using customizable templates. It allows users to create, manage, and send invoices with standard business fields like tax rates and line items through natural language.37 npm2MIT
- AlicenseAqualityBmaintenanceAI-powered invoice automation. Create PDF invoices, predict late payment risk 0-100, auto-send reminders, reconcile Stripe/PayPal payments, track cash flow. 10 MCP tools, 4 resources.1080 npmMIT
- MIT
- AlicenseNot gradedqualityBmaintenanceEnables drafting quotations and invoices from AI assistants like ChatGPT, Claude, and Gemini, with 133 templates, tax rules for 195 countries, and a link to the finished document.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.