mcp-office-suite
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-office-suiteStart a timer for the client presentation"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-office-suite
MCP server for small business accounting and paperwork: invoices, PDFs, spreadsheets, Word documents, time tracking and expenses. One install that exposes every tool of all 45 hosted servers, 418 of them.
Works with Claude Desktop, Claude Code, Cursor and any Model Context Protocol client. Runs on your own machine: this one has no hosted endpoint, so install it from the bundle or from source.
Install
Claude Desktop, one click. Download office-suite.mcpb from the latest release and double-click it.
From source. The mirror is self-contained: every @theluckystrike/* dependency is vendored, so a fresh clone builds with no extra setup.
git clone https://github.com/theluckystrike/mcp-office-suite.git
cd mcp-office-suite
npm install && npm run buildThen point your client at the built entry point:
{
"mcpServers": {
"office-suite": {
"command": "node",
"args": ["/absolute/path/to/mcp-office-suite/dist/index.js"]
}
}
}
@theluckystrike/mcp-office-suiteis not published on npm yet, so annpx -y @theluckystrike/mcp-office-suitecommand will fail. The three paths above are the working ones and each is exercised by CI.

Read-only mirror of mcp-servers/servers/office-suite. See MIRROR.md.
In the official MCP Registry (io.github.theluckystrike/office-suite-time-invoice-expense-excel-price).
One install for the whole freelancer office. This MCP server proxies all 31 sibling servers in this repository, so a client gets every one of their 292 tools behind a single config entry instead of 31. The child list is published at runtime as the office://tools_map resource, which is the only figure to trust: it is read from the running server, not from this file. Under the hood it starts each sibling as its own stdio child process, forwards tools/call, resources/* and prompts/* to whichever child owns the name, and merges their license state into one license_status / license_activate pair. Nothing is re-implemented: each child server runs exactly as it does standalone, with its own local JSON storage.
Every tool of time-tracker, price-tracker, spreadsheet and invoice, one claude mcp add.
Related MCP server: Multi MCP
60-second install
npm publish for @theluckystrike/mcp-office-suite (and its dependencies) is pending. Until then, the .mcpb one-click bundle or a clone+build is the working path -- both are verified below. This server is packaged as office-suite.mcpb on release v0.2.1 and is listed on the official MCP registry (io.github.theluckystrike/office-suite-time-invoice-expense-excel-price).
One-click (.mcpb): download office-suite.mcpb from the latest release and double-click it in Claude Desktop:
https://github.com/theluckystrike/mcp-servers/releases/latest
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"office-suite": {
"command": "npx",
"args": ["-y", "@theluckystrike/mcp-office-suite"]
}
}
}Claude Code:
claude mcp add office-suite -- npx -y @theluckystrike/mcp-office-suiteCursor (.cursor/mcp.json):
{
"mcpServers": {
"office-suite": {
"command": "npx",
"args": ["-y", "@theluckystrike/mcp-office-suite"]
}
}
}The npx form above starts working the moment the package is published. Until then, use the .mcpb bundle above, or
build from source with exactly these commands:
git clone https://github.com/theluckystrike/mcp-servers.git && cd mcp-servers
npm install
npm run buildnpm run build (no -w) is required here -- it builds mcp-license and every sibling server that office-suite spawns as a child, then office-suite itself. Then point your client's command at node with one arg: the absolute path to servers/office-suite/dist/index.js.
To run every server in Pro mode set MCP_LICENSE_KEY in the same config block, or call license_activate once with your key -- it is forwarded to every connected child. Activation is all-or-nothing: the reply is an error unless every child accepted the key, and it prints a per-child table (OK / FAILED with each child's own message) so a bundle that is half Pro cannot look like a success.
Why one server instead of thirty-one
Aggregation is what usage rewards in this category: the most-used server we track is a tool-aggregator gateway with 2,530 tools and 419,019 uses, 7.5x the next server and 30x the cohort median. A user who wants "office stuff" should not have to add thirty-one separate MCP servers to one client config. Installing this one gets every tool below.
Tools
Tool names are passed through unchanged from each child. If this bundle ever proxies two children that register the same tool name, both are exposed with a <child>_<tool> prefix instead -- the current renamed pairs are listed under Renamed tools below.
time-tracker
Tool | What it does |
| Start a stopwatch for a project; stops and logs any previous running timer |
| Stop the running timer and log it as a time entry |
| Show the running timer and today's total hours |
| Log time you already worked, with a start plus end or minutes |
| List logged time entries as a table (free: last 7 days) |
| Delete one time entry by id |
| Change fields of an existing entry |
| Set the hourly rate and currency for a project |
| Hours and money by project, day, task or tag (tag grouping is Pro) |
| Export the timesheet to a CSV file |
| Turn tracked billable time into invoice line items |
price-tracker
Tool | What it does |
| Check a product's current price right now |
| Start watching a product URL for price drops |
| List all watched products and their latest price |
| Stop watching a product |
| Re-check all watches (or one) immediately |
| Price history for one watched product |
| Record a price by hand, for sites that block fetching |
| Watches that dropped below their target price |
spreadsheet
Tool | What it does |
| Overview of a CSV/XLSX file: sheets, columns, row count |
| Read rows from a spreadsheet |
| Filter, group and sort rows |
| Per-column statistics (min, max, mean, sum, distinct) |
| Find text across a spreadsheet |
| Write rows into a spreadsheet |
| Add a computed column |
| Convert between CSV and XLSX |
invoice
Tool | What it does |
| Set your business profile: name, address, VAT id, IBAN, default currency and terms |
| Store a client so invoices can refer to them by name |
| List every stored client |
| Create an invoice from line items, with tax and discount |
| Create an invoice from hours worked at a rate |
| List invoices |
| Get one invoice by id or number |
| Record a payment against an invoice |
| Render an invoice as a PDF file |
| Invoices past their due date, by how many days (Pro) |
Bundle-wide
Tool | What it does |
| Free/Pro status of every proxied server, and the bundle upgrade link |
| Activate one Pro bundle key across every server at once. Returns an error with a per-child table unless all of them accepted it |
Resources and prompts registered by any child (for example time-tracker's timetracker://today resource and daily_standup prompt) are also proxied under their original names.
Renamed tools
Two children can register the same tool name -- invoice and docx both have business_set. The bundle then exposes both, prefixed with the server they came from (invoice_business_set, docx_business_set), names the renames once on startup, and rewrites the child's own answer so a response that said "Run business_set ..." says the name you can actually call. The full mapping is published as the office://tools_map resource: exposed name -> child.tool, with the renamed pairs listed separately.
Free vs Pro
Each child server keeps its own free tier exactly as documented in its own README (see each servers/<name>/README.md). This bundle changes nothing about those limits -- it only changes how many config entries it takes to reach all of them.
A single bundle Pro key ($39 one-time, lifetime) unlocks Pro on every server in the bundle, instead of buying each server's $19 key separately. Activate it once here and it is forwarded to every child.
Get Pro: https://mcp.zovo.one/buy/bundle
Child processes
Each child runs as its own stdio process. Two things the proxy does on their behalf:
Their stderr is drained into ours, one line at a time, tagged with the child it came from (
[invoice] ...). A child's stderr is a pipe with a small OS buffer; left unread, a child that logged more than that buffer blocked inwrite()and the tool call it was answering never returned.A child that dies rejects its in-flight requests before the suite tries to restart it, so a proxied call fails fast instead of hanging until the client's timeout, where a retry could repeat a mutation that had already been applied.
Privacy
Every child server stores its data locally, in ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/<name>/ per server. This bundle adds no storage of its own and sends nothing anywhere; it only pipes stdio between your MCP client and the child processes it starts on your own machine.
expense-tracker
TODO: servers/expense-tracker/dist does not exist yet in this repository. Once that server is built and shipped, add it to CHILDREN in src/index.ts, its dependency to package.json, its build step to the Dockerfile, and its tool table to this README.
Built by theluckystrike (https://github.com/theluckystrike).
Available Tools
117 toolsalerts_pendingPending alertsA
Answer whether anything you watch got cheaper: every watch at or below its target_price, or down 5% or more since the previous observation, with the change %. Reads stored data only: run watch_refresh first.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It clearly states 'reads stored data only', disclosing read-only behavior, and the dependency on watch_refresh. It also describes the output logic (change %), though it doesn't mention edge cases like empty responses or exact return format. Still, it provides key behavioral context that an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, tightly packed sentence that front-loads the core question, then specifies criteria and dependency. Every phrase adds value, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only tool with no output schema, the description fully explains what it does, how it selects data, and its dependency on watch_refresh. An agent can call it correctly without ambiguity; the only minor omission is specifying the exact return structure (e.g., list vs. boolean), but the criteria are so precise that this is unlikely to cause issues.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description doesn't add parameter-specific info (none exist), but that's expected. The empty schema is fully described, and the description adds meaning about the data transformation performed, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear purpose: 'Answer whether anything you watch got cheaper' and defines the exact criteria (at/below target_price or down 5%+). It distinguishes itself from siblings by explicitly referencing watch_refresh as a prerequisite, making its role as a query tool unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides an explicit instruction to run watch_refresh first, establishing when to use this tool (after refreshing data). It doesn't explicitly mention alternatives or when NOT to use it, but the prerequisite and 'reads stored data only' hint at its passive role, which is sufficient contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
business_daysCount business daysA
Count business days between two dates in a place, inclusive, with the calendar total and the weekend and holiday counts. It has NO holiday calendar: without holidays, only weekends are excluded.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | End date, YYYY-MM-DD (inclusive) | |
| from | Yes | Start date, YYYY-MM-DD (inclusive). A date that does not exist, such as 2026-02-30, is refused, never rolled forward | |
| zone | Yes | Place whose calendar to use | |
| holidays | No | Dates to exclude, strict YYYY-MM-DD. This tool has no national holiday calendar: unless you pass holidays here only weekends are excluded, so do not report the answer as a public-holiday-adjusted count |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It clearly discloses that this tool has no national holiday calendar and only excludes weekends unless holidays are passed. Also notes in the schema that invalid dates are refused. This is good behavioral disclosure for a counting 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?
Two sentences: the first states the operation and outputs, the second states the key caveat. Efficient, front-loaded, no wasted words.
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 complexity of a business-day calculator, the description covers the core behavior and its main limitation. It doesn't describe the exact return structure, but the mention of counts implies it. Lacks explicit details about worst-case behavior or timezone handling, but those are presumably in the schema. Overall 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 covers all parameters with descriptions (100% coverage), so the baseline is 3. The tool description adds nothing beyond what the schema already states about parameters; it mentions inclusivity but that's already in the schema. The holidays parameter has extra explanation in the schema, not the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: counting business days between two dates. Mentions inclusivity and the components (calendar total, weekend, holiday counts). Distinguishes itself from date/time tools like convert_time and now by focusing on business-day arithmetic.
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?
Does not explicitly name alternatives or conditions for using this tool vs others. The disclaimer about having no holiday calendar is a limitation note rather than usage routing. Implies usage when business-day counts are needed, but no explicit exclusions or sibling tools are referenced.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cache_statusRate cache statusA
Report the ECB rate cache here: which dates are held, how old they are and when they refresh. Reads only. Check it before trusting a rate after time offline; a cache that no longer parses is quarantined and named.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool is read-only, explains that it reports freshness and refresh timing, and discloses the quarantine behavior for a cache that no longer parses. It does not cover error cases or output format, but for a simple read-only report this is reasonable coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, with the primary purpose front-loaded in the first line. Every sentence earns its place: what is reported, read-only nature, the use case, and what happens when a cache fails to parse. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameter-less, no-output-schema status tool, the description covers everything an agent needs: resource, contents, read-only behavior, refresh insight, and operational guidance. Nothing required to call it 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 input schema is empty, so there are no parameters to document. Per the calibration rules, a 0-parameter tool earns a baseline of 4. The description adds semantic value by indicating what the report contains, which is enough for this no-argument tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Report the ECB rate cache') and the resource, then lists precisely what it reports: which dates are held, their age, and when they refresh. The 'Reads only' line plus the cache-status focus differentiates it from sibling conversion tools like rates_latest or fx_rates_for, even though no sibling is named.
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?
Clearly tells the agent when to use the tool: 'Check it before trusting a rate after a time offline.' This gives local context that ties to an actual decision point. It does not explicitly name alternatives or give when-not-to-use conditions, but the practical guidance is strong enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendars_listList imported calendarsA
List imported calendars: name, event-definition count, size, source, import time and free-tier use of the 2 slots. It also names stored .ics files with no calendar row. With none it prints the export steps.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses non-obvious behaviors: listing .ics files that lack a calendar row, and printing export steps when no calendars exist. However, it does not explicitly state that the operation is read-only or mention any side effects, permissions, or rate limits. The disclosure is partial but 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?
The description is two concise sentences. It leads with the core purpose, then efficiently lists the output fields and special cases. Every clause adds value, with no redundant or filler text. The structure is front-loaded and easy to scan.
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 parameterless list tool with no output schema, the description adequately covers what the agent needs to know: the fields returned, the handling of orphaned .ics files, and the fallback when no calendars exist. It does not describe the exact output format (e.g., JSON vs. text) but that is a minor gap for such a simple 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?
The tool has zero parameters, so the schema provides no information to complement. Per rubric, a baseline of 4 is appropriate. The description does not need to explain parameters, and it doesn't—it focuses on the output. There is nothing missing regarding 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 clearly states the verb 'List' and the resource 'imported calendars', then enumerates the exact fields returned (name, event-definition count, size, source, import time, free-tier slot usage). It also mentions handling of .ics files without calendar rows and the export-steps fallback, making the purpose unambiguous and distinct from sibling tools like events_list or free_busy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any explicit guidance on when to use this tool versus alternatives. It does not mention exclusions or conditions that would route an agent to another tool. The only contextual hint is the edge case 'With none it prints the export steps', but there is no direct comparison to siblings or when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clause_addAdd a clauseA
Save a reusable contract or proposal clause to the library. Returns the stored clause id, title, category, tags and the variables detected in its body, plus how many clauses of your own the library now holds.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The clause text. Use {{variable}} placeholders for the facts that change per client, for example {{client}}, {{fee}} or {{late_fee_percent}}; contract_assemble fills them at assembly time. Free tier: 10 clauses of your own on top of the 25 starters | |
| tags | No | ||
| title | Yes | Clause heading, for example 'Late Payment' | |
| category | Yes | Grouping. The known ones, in assembly order, are parties, scope, payment, expenses, ip, confidentiality, data, term, liability, warranty, disputes, general -- reuse one of these; any other name is accepted but sorts last in a category-based assembly | |
| language | No | ISO language code, default en | |
| variables | No | Declared variable names. Anything {{...}} in the body is detected anyway | |
| jurisdiction | No | Where the clause is meant to apply, for example 'PL' or 'England and Wales' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the behavioral burden. It discloses the primary side effect ('Save'), and explicitly states what the operation returns: stored clause id, title, category, tags, detected variables, and the updated count of owned clauses. This gives the agent a concrete model of the operation's effect, though it does not cover duplicate handling, permissions, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the action first and then the return value. Every phrase contributes useful information, and there is no filler, repetition, or unnecessary background.
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 provides a helpful list of return fields and gives the agent a clear sense of the operation's outcome. The input schema covers parameter details thoroughly. It is not fully complete because it omits the output format and any caveats about limits or duplicate titles, but those are not critical for selecting and invoking 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 description coverage is 86%, so the structured schema already documents most parameters well. The description adds only a small amount of parameter-related meaning by mentioning that variables are 'detected in its body,' which relates to the body placeholder behavior already covered in the schema. No further compensation is required.
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 uses a specific verb and resource: 'Save a reusable contract or proposal clause to the library.' This clearly indicates a creation/persistence operation and makes the tool understandable next to siblings like clause_update, clause_delete, and clause_get. However, it does not explicitly distinguish itself from clause_import or other similarly named tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for adding a new clause to the library, which is clear context for creation. It does not explicitly state when to prefer this over clause_update, clause_import, or contract_assemble, nor does it mention any exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clause_deleteDelete a clauseA
Delete one clause by id or exact title and report how many are left. There is no undo, and a deleted starter clause is not re-seeded. Use clause_update to change one you want to keep.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Clause id or exact title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that deletion is irreversible, mentions the count report, and notes that starter clauses are not re-seeded. This covers key behavioral traits, though it doesn't detail permissions or error handling, which is a minor gap.
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 three sentences, each adding value: the action, the irreversible consequence and result, and the alternative. Critical information is front-loaded with the purpose and side effects stated early. No wasted words.
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 delete tool with full schema coverage and no output schema, the description provides necessary safety warnings and post-condition (count remaining). It doesn't specify return format, but given the simplicity, it's adequately complete. The only minor gap is lack of explicit error scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the 'id' parameter as 'Clause id or exact title'. The description repeats this information and adds that it reports how many are left, but it doesn't clarify the format or ambiguity resolution. Baseline 3 is appropriate given full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool deletes a clause by id or exact title and reports the count remaining. It distinguishes itself from siblings like clause_update by explicitly mentioning the alternative. The verb 'Delete' and resource 'clause' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use clause_update if the user wants to keep the clause, providing a clear alternative path. It also states when not to use this tool implicitly. This is direct usage guidance that helps an agent decide between delete and update.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clause_exportExport clausesA
Call this tool to write the whole library to one file and return the path, format and count. It is written in contract order, so it re-imports the same way. markdown is free; json is Pro.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Destination file path. The clauses are written in assembly order, categories first | |
| format | Yes | json (a Pro feature) or markdown (works in the free tier) | |
| overwrite | No | Replace the destination if a file is already there. Without it an existing file is never touched |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the writing behavior, return values (path, format, count), and the contract-order preservation. The overwrite behavior is only in the schema param description, not in the tool description, but otherwise it is transparent about what happens.
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 useful: the main action, the contract-order behavior, and the format pricing. It is brief, front-loaded, and contains no filler or redundant restating of 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?
The description explains the purpose, the output fields, and the format implications. It does not explicitly state the overwrite safety net (already in schema) or edge cases like empty libraries, but the description is otherwise complete for a simple export tool with only 3 parameters and 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 description coverage is 100%, so the schema already explains path, format, and overwrite. The description adds only the phrase 'markdown is free; json is Pro', which essentially mirrors the schema enum description. It does not add new semantic depth; it earns the baseline of 3.
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 ('write'), a specific resource ('the whole library'), and the outcome ('return the path, format and count'). It clearly distinguishes from sibling tools by focusing on whole-library export rather than single-clause operations like clause_get or clause_list.
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 clear context: call when you want to export the whole library to one file, preserves contract order for re-import, and explains format pricing. It does not explicitly name alternatives like clause_import, but the intent is obvious; it lacks only an explicit when-not/alternative statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clause_getRead one clauseA
Return one clause in full by id or title: body, category, tags, jurisdiction, variables and the revision count, which stays 0 on free. A partial title matching several is refused with the candidates.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Clause id, for example late-fees | |
| title | No | Clause title; a partial title matches too |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It adds valuable nuances: the revision count stays 0 on the free tier, and ambiguous partial-title matches are refused and returned as candidates. It doesn't cover not-found or permission behavior, but for a simple read this is solid.
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 with the core purpose front-loaded and zero filler. Every clause adds useful 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?
The description summarizes the return payload and important edge cases, which is helpful given the lack of an output schema. It omits what happens on no match and does not explicitly state that id or title is required, but these are minor gaps for a straightforward getter.
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 meaningful matching semantics beyond the schema, especially the refusal behavior for ambiguous partial titles. It also implies id and title are alternative selectors, though it doesn't explicitly require at least one.
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 ('Return') and resource ('one clause in full by id or title'), and enumerates the returned fields. This clearly separates it from sibling tools like clause_list or clause_search.
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 context is clear: use it to retrieve a single clause by id or title. However, it never explicitly names alternatives such as clause_search or clause_list, nor does it state when not to use this tool. The distinction 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.
clause_importImport clausesA
Call this tool to load clauses from a .md or .json file, reporting added, replaced, skipped and capped counts. A duplicate title is skipped unless overwrite. json is Pro. Free: 10 of your own.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to a .md or .json file. Markdown form: '## Title', then optional 'category:' / 'tags:' / 'variables:' lines, a blank line, then the body. JSON form: an array of clauses. JSON import is a Pro feature; markdown import works in the free tier, within the free clause cap | |
| overwrite | No | Replace clauses whose title already exists instead of skipping them |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden for this mutating import tool. It does disclose meaningful behavior: duplicate titles are skipped unless overwrite is set, a 'capped' count signals a limit, JSON requires Pro, and the free tier caps at 10. This is genuine added value, though it stops short of covering response format details, error cases, or rollback behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight fragments with zero waste: the main action, the overwrite behavior, and the licensing constraint. The core purpose is front-loaded, and each clause earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter import tool with no annotations and no output schema, the description covers the essentials: supported formats, the reported counts (added/replaced/skipped/capped), and the free/pro cap. It reasonably compensates for the missing output schema by stating what results are returned, leaving only minor gaps around precise cap mechanics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents both parameters in detail, including the markdown/JSON file formats and the overwrite semantics. The tool description adds no parameter information beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('load'), a resource ('clauses'), and a source ('a .md or .json file'), and adds the outcome ('reporting added, replaced, skipped and capped counts'). This clearly separates it from siblings like clause_add (single inline clause) and clause_export (the inverse direction). An agent can distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on when to use the tool: loading clauses from files, and it documents the overwrite-vs-skip behavior that governs outcomes. It provides licensing guidance (json is Pro, free cap of 10) which helps an agent decide feasibility. However, it doesn't explicitly name alternatives such as clause_add for single-clause entry, so exclusions are only 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.
clause_listList clausesA
List the library as id, title, category, tags and variables, in contract order by category then title, which is the order contract_assemble uses. Narrow with category; use clause_search for words.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the return fields, the sort order, the optional category narrowing, and the relationship to contract_assemble's order. It does not mention pagination, limits, or access requirements, but for a simple list operation the disclosed behavior 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 description is a single front-loaded sentence that packs the key facts: output fields, sort order, filtering option, and the sibling to use instead. No redundant wording exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple one-parameter schema and no output schema, the description is largely complete: it names return fields, ordering, the filter parameter, and the alternative search tool. Slight gaps remain around whether all clauses are returned by default and potential pagination, but these are minor for this tool's complexity.
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 provides only 'category' as a string with no description, and schema coverage is 0%. The description adds the essential meaning 'Narrow with category', which tells the agent it is an optional filter. However, it does not specify whether matching is exact, how categories are formatted, or where valid values come from, so it only partially compensates for the missing schema documentation.
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 ('List the library as id, title, category, tags and variables'), defines the output fields, and explicitly distinguishes itself from clause_search by noting that search is for words. This fully separates it from siblings without requiring schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: it is for listing the library in contract order, can be narrowed by category, and should be abandoned in favor of clause_search when searching for words. It names the alternative explicitly and the condition that selects it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clause_searchSearch clausesA
Ranked search over clause titles, tags, categories and bodies. Title and tag matches outrank body matches. Jurisdiction filtering is free; the tag filter is Pro and is skipped rather than refusing the search.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Pro: every tag listed must be present. On free the search still runs, without this filter | |
| query | Yes | Words to look for, for example 'late payment interest' | |
| category | No | ||
| jurisdiction | No | Exact jurisdiction match. Free |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does meaningful work: it discloses ranking precedence, the Pro-only tag filter behavior, and the fallback of skipping rather than refusing. It does not cover output shape or authorization requirements, but the core non-obvious call behavior is surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with no filler. The most decision-relevant information (ranked scope, ranking priority, and free/Pro behavior) is front-loaded 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?
For a simple search tool, this is largely complete: it identifies the searchable resource, the ranking behavior, and the filter constraints. The main remaining gap is that the category parameter has no schema description and is only indirectly covered by the phrase 'categories', but this does not prevent a competent agent from invoking 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?
The schema already describes query, tags, and jurisdiction, so the description adds limited parameter-level meaning. It does clarify category's role by mentioning categories as a search target, and it reinforces the tag-skipping behavior, but it does not substantially go 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 object: 'ranked search over clause titles, tags, categories and bodies'. The ranking detail further distinguishes it from a plain list (clause_list) and from other clause tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the right tool when ranked keyword search over clauses is needed, and it explains filter availability. However, it does not explicitly say when to prefer clause_list or other clause tools instead, so usage guidance is mostly implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clause_updateUpdate a clauseA
Change the text, category, tags, variables or jurisdiction of a clause. In Pro the previous text is kept as a version; in the free tier the change is applied without history.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Clause id or exact title | |
| body | No | ||
| tags | No | ||
| title | No | ||
| category | No | ||
| language | No | ||
| variables | No | ||
| jurisdiction | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the responsibility of disclosing behavior, and it does add important context: Pro keeps a version of the previous text while the free tier overwrites without history. This is a meaningful behavioral caveat beyond the schema. It does not cover return values or permission requirements, but the key side-effect is stated.
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 concise sentences with no wasted words: the first states the operation and its targets, the second adds the critical versioning caveat. The information is front-loaded and easy to parse.
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 includes the core purpose and a notable behavioral distinction, but it leaves gaps around the full set of mutable fields and the actual meaning of 'text' versus 'body'. With no output schema and no annotations, an agent may not know what response to expect or how to set fields like language or title. This is a moderate gap rather than a severe one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 13% (only 'id' is described), so the description must compensate. It lists several updatable fields but uses 'text' where the schema property is 'body' and omits 'title' and 'language', leaving the parameter mapping ambiguous and incomplete. This is insufficient for an agent to confidently construct a full update request.
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 uses a specific verb ('Change') and resource ('clause'), and it names several mutable fields, which clearly conveys the update intent and distinguishes it from sibling tools like clause_add or clause_delete. However, it omits 'title' and 'language' from the field list, so its differentiation is slightly incomplete.
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 wording implies updating an existing clause rather than creating or deleting one, but there is no explicit statement of when to prefer this tool or avoid alternatives. With many sibling tools in the same domain, an agent has to infer the usage context from the action verb and field list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
client_addAdd a clientA
Store a client so invoice_create can refer to them by name. Re-adding the same name updates the stored address, email and VAT id; a record identical to a stored one is refused, naming the id that already holds it.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| No | |||
| vat_id | No | Client VAT id, printed for reverse-charge invoices | |
| address | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the non-obvious upsert behavior, that re-adding the same name overwrites address, email, and VAT id, and that an identical record is refused with the existing id named. Auth and return-value details are absent, but the mutating and overwrite semantics are clearly surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first front-loads the purpose, and the second gives exact update and refusal semantics. Every sentence contributes non-schema 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?
For a four-parameter tool with no annotations and no output schema, the description covers the essential call semantics: purpose, identity key, upsert behavior, and duplicate handling. The main omission is the success return value, but that is not critical because downstream invoice_create refers to clients by name.
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 25% of parameters are described in the schema, so the description compensates by establishing 'name' as the lookup key and identifying address, email, and vat_id as the fields updated on re-add. It does not provide formats or constraints for email/address, but the essential parameter semantics for calling the tool are present.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Store a client'), the resource, and the downstream purpose: enabling invoice_create to refer to the client by name. This clearly differentiates client_add from sibling tools like client_list and client_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on when to use the tool: before creating an invoice that needs to reference a client by name. It does not explicitly state when not to use it or name alternative tools, so it falls just short of fully explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
client_deleteDelete a clientA
Delete one stored client that nothing refers to. A client named on any invoice, quote, credit note, purchase order, deposit, statement or schedule is refused with those documents listed.
| Name | Required | Description | Default |
|---|---|---|---|
| client | Yes | Client name or id, exactly as client_list shows it |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It does disclose an important behavior: deletion is refused if documents reference the client, and it lists the document types. However, it does not explicitly state that deletion is permanent/irreversible or describe the success/failure response beyond refusal.
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 two tight sentences with no filler. The primary action is front-loaded, followed immediately by the key constraint, making it easy for an agent to parse quickly.
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 one-parameter delete operation with no output schema, the description covers the essential calling context: what can be deleted, what blocks deletion, and the document types that cause refusal. Minor gaps like success return value and explicit irreversibility do not prevent correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter description already explains that 'client' is a name or id exactly as shown by client_list. The tool description adds no additional parameter semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Delete one stored client'. It also distinguishes the operation by its referential-integrity condition, making it clear this is the removal tool rather than client_add or client_list.
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 clear context: use this tool only when the client has no references, and it tells the agent that referenced clients will be refused. It does not explicitly name alternative tools or say 'use client_list to find the exact id', but the usage boundary is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
client_listList clientsA
List every stored client with id, address, email and VAT id. No arguments, and it writes nothing. With none stored it says so: invoice_create also creates a client from the name you pass.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool writes nothing (read-only), takes no arguments, and reports when no clients are stored. It also adds the useful side note that invoice_create can create a client from a name, which helps the agent understand the relationship. It doesn't mention pagination or ordering, but for a zero-argument list tool this is adequate.
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 earning its place: the first states the action and output fields, the second clarifies no-args and no-writes, the third covers the empty case and a relevant alternative. No fluff, front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list tool with no output schema, the description is nearly complete. It covers the return fields, the empty case, and the no-write guarantee. The only minor gap is not describing the output format (e.g., array vs. object) or ordering, but that's not critical for a simple 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?
The schema has zero parameters and 100% coverage, so the baseline is 4. The description reinforces this by explicitly stating 'No arguments', which removes any ambiguity. It also adds meaning by describing what the output contains (id, address, email, VAT id), which is beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('every stored client'), and enumerates the exact fields returned (id, address, email, VAT id). It also distinguishes itself from sibling tools by noting it takes no arguments and writes nothing, which clearly separates it from client_add and client_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'No arguments' and 'writes nothing', which tells the agent when to use it (when you need a read-only list of all clients). It also mentions the empty-case behavior and points to invoice_create as an alternative for creating a client from a name, though it doesn't explicitly say 'use this instead when...' for other siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
conflictsFind double bookingsA
Find double bookings: every PAIR of timed events that overlap, with the minutes they collide, across all calendars unless you name one. Whole-day events are reported apart. Free: 31 days. free_busy shows gaps.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Last day, YYYY-MM-DD, included | |
| from | Yes | First day, YYYY-MM-DD | |
| calendar | No | One calendar name; default every imported calendar |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden and does substantial work: it reveals pair-wise output, collision minutes, all-day event separation, calendar scoping, and a 31-day free limitation. It stops short of discussing timezone handling or exact output shape, but the core behavior is transparent.
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 compact and front-loaded, placing the key semantics in the first clause and adding short, useful qualifications. The 'Free: 31 days' fragment is cryptic, but overall there is no wasted content.
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 lookup with three well-schema-documented parameters, the description supplies the essential selection and behavior information, including the free_busy alternative. Without an output schema, it could specify the returned pair structure more concretely, but an agent can still select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so from, to, and calendar are already documented with formats and defaults. The description adds little beyond restating the calendar scope ('unless you name one') and an ambiguous 'Free: 31 days' constraint, staying at the high-coverage 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?
The description names the operation directly ('Find double bookings') and defines it precisely: every pair of timed events that overlap, with collision minutes, across all calendars unless one is named. This clearly distinguishes it from event listing and free_busy sibling 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 provides a clear use case and explicitly routes to free_busy for gaps ('free_busy shows gaps'), giving the agent a useful alternative. It does not enumerate when not to use other event/calendar tools, but the overlap-vs-gaps framing is enough for correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contacts_listList saved contactsA
List saved contacts with their zone, local time now, working hours and whether they are inside them; weekends count as outside. It also prints YOUR zone from the shared business profile.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the weekend rule ('weekends count as outside') and that it prints the caller's zone, offering useful context beyond the function name. It does not mention any side effects, but as a list operation, none are expected. No contradictions.
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 concise sentences that front-load the core purpose and follow with the key distinguishing detail (zone printing). Every word adds value, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no parameters and no output schema, the description covers the essential functional behavior and edge case (weekends). It doesn't specify return format or pagination, but these are minor for such a basic operation. Overall, 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?
The tool has zero parameters and the schema coverage is 100% (empty properties). The description adds no parameter details because none exist, which is appropriate. Baseline for 0 params is 4; no additional explanation needed.
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 ('List') and resource ('saved contacts'), and enumerates the exact fields returned (zone, local time, working hours, inside/outside, weekends logic). It also adds a unique behavior (prints YOUR zone) that clearly distinguishes it from sibling tools like business_days or contacts_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?
The description clearly communicates what the tool returns, which implies when to use it (when you need contact time/zone information). It doesn't explicitly name alternatives or exclusions, but the clarity of its function is sufficient for an agent to select it over siblings. No misleading context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contacts_setSave a contact's zoneA
Save one person's zone and working hours so later calls can name them. Returns the resolved zone and their local time now. Saving the same name REPLACES that contact and says so. Free: 5 contacts.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Their name | |
| zone | Yes | Their place or IANA zone | |
| work_end | No | Local day end, default 17:00 | |
| work_start | No | Local day start, default 09:00 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the replacement/upsert behavior ('Saving the same name REPLACES'), the return payload (resolved zone and local time), and the 5-contact quota. These are genuinely useful non-obvious behaviors.
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 compact sentences, each earning its place: purpose, return behavior, and replacement/quota caveat. The most important information 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?
The input schema covers the parameters, and the description compensates for the missing output schema by stating what the call returns. Behavioral caveats like replacement and quota limits are also covered. Minor gaps like error handling do not undermine usability for a simple setter.
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?
All four parameters already have individual schema descriptions, so the baseline is 3. The description adds little beyond saying 'zone and working hours' and the fact that the name is the key for replacement, so it meets but does not exceed that 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 action ('save'), a specific resource ('one person's zone and working hours'), and the intended benefit ('so later calls can name them'). This clearly identifies the tool's job and distinguishes it from sibling tools like contacts_list.
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 for when to use it: when saving a contact's zone/working hours for later calls. It does not explicitly contrast with alternatives or name prerequisites, but the use case is clear enough to select this tool correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contract_assembleAssemble a contractA
Call this tool to build a contract from library clauses as .docx or markdown. A variable you omit stays as a bracketed prompt, never invented. clause_ids order is document order. Free: 8 clauses.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Document title, for example 'Service Agreement - Beta Corp' | |
| client | No | Client name; also fills the {{client}} variable | |
| format | No | docx (default) or markdown; the document opens with the not-legal-advice line either way | |
| values | No | Values for the {{variables}} in the chosen clauses, for example {"fee":"4500","late_fee_percent":"2"}. Any variable you leave out stays in the document as a bracketed prompt such as [late fee percent], never as an invented value | |
| out_path | No | Where to write the file. Default: the server data directory, under a name built from the client and the title | |
| overwrite | No | Replace out_path if a file is already there. Without it an existing file is never touched | |
| categories | No | Instead of ids: every clause in these categories, ordered by category. Free tier: up to 8 clauses per document | |
| clause_ids | No | Clause ids in the order they should appear; this is the document order. Free tier: up to 8 clauses per document |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that omitted variables become bracketed prompts ('never invented'), that clause_ids order determines document order, that the free tier is capped at 8 clauses, and that the document includes a not-legal-advice line regardless of format (via the format param). It also notes that overwrite=false protects existing files. These are meaningful behavioral traits beyond schema, though it doesn't mention output details or error handling.
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 brief (two sentences plus a short clause about free tier) and front-loads the main action. It avoids redundancy with the schema, though the list of free-tier limits could be organized more cleanly. It's structured well enough for an agent to parse quickly.
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 tool's complexity (8 params, nested object) and no output schema, the description covers key call‑time concerns: variable handling, ordering, format, overwrite safety, and free-tier caps. It does not explain the return value or error conditions, but for a file-writing tool that may be acceptable. Overall, it provides sufficient context for an agent to make a correct call.
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 value on top: it explains the consequence of omitting values (bracketed prompts), clarifies 'clause_ids order' as document order, and specifies that categories are an alternative to ids. It also gives examples for values and default out_path behavior, which are not fully in the schema. This lifts it above the 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?
The description states a specific verb ('build') and resource ('contract from library clauses') with output formats ('.docx or markdown'). It clearly differentiates from sibling tools, which focus on clause management, licensing, and variables, leaving assembly as the unique purpose.
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?
While it does not explicitly list sibling alternatives, the description's 'Call this tool to build a contract' establishes the primary use case, and the free-tier clause limit provides a practical constraint. The mention of 'clause_ids order is document order' clarifies assembly behavior, implicitly distinguishing from clause_export. It lacks explicit 'when not to use' guidance, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contract_createCreate a service agreementA
Call this tool to produce a freelance service agreement .docx. Returns the reference, the fee and the file path. It is a template skeleton for a lawyer to review, not legal advice. Free tier: 3 agreements per month.
| Name | Required | Description | Default |
|---|---|---|---|
| fee | Yes | ||
| client | Yes | The client's legal name | |
| clauses | No | Extra clauses to append, one paragraph each | |
| end_date | No | YYYY-MM-DD, omit for an open-ended engagement | |
| out_path | No | Where to write the .docx. Defaults to the data directory | |
| services | Yes | What you will do, one or two sentences. The document adds parties, term, fee and schedule, plus standard clauses on intellectual property, confidentiality, independent contractor status, liability, termination and governing law | |
| overwrite | No | Replace out_path if a file is already there. Default false: an existing file is never overwritten | |
| start_date | Yes | YYYY-MM-DD | |
| governing_law | No | e.g. 'the laws of Poland' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It discloses that the output is a template skeleton for lawyer review, explicitly states it is not legal advice, and mentions the free tier limit of 3 agreements per month. It does not detail file overwrite behavior, but the schema already covers that through the overwrite parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with a clear front-loaded action, followed by return value note, legal disclaimer, and usage limit. Every sentence contributes information without repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the key non-schema information an agent needs: what is produced, what is returned, the legal nature of the output, and a usage restriction. Since there is no output schema, the minimal return-value disclosure is helpful, though it could be more explicit about error cases or quota enforcement details.
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 input schema already documents most parameters in detail. The description adds little beyond mentioning that the fee and file path are returned, which does not directly clarify parameter semantics. It neither compensates for undocumented parameters nor adds meaningful input guidance 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?
The description states a specific action ('produce') and resource ('freelance service agreement .docx'), making the core purpose clear. It does not explicitly distinguish itself from related sibling tools like contract_assemble or proposal_create, but the type of document is specific enough to guide selection.
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 direct imperative ('Call this tool to produce...'), which clearly indicates the intended use case. However, it does not mention alternatives or when not to use it, and with siblings like contract_assemble nearby, the lack of routing guidance leaves some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convertConvert an amountA
Call this tool to convert an amount between any two ECB-quoted currencies, today or on a past date. Returns the converted amount, the cross rate to 6 decimals, the rounding applied and the rate date used.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Currency to convert into; defaults to the shared business profile's default_currency, so you are never asked what currency you invoice in. The result is rounded once, at the end, to this currency's own ISO 4217 minor units, so JPY comes back whole and BHD to three places | |
| date | No | ISO date YYYY-MM-DD. Omit for the latest published rate. A weekend or TARGET holiday falls back to the last rate published on or before it, and the answer says so. A date older than the free 90-day window is shortened to the oldest free day, not refused, and the answer names the date it really used | |
| from | Yes | Currency the amount is in. Cross rates go through the euro, the only pair the ECB publishes | |
| amount | Yes | Amount in major units of the from currency, e.g. 100 or 12.34 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it delivers: it discloses the converted amount, the cross rate to 6 decimals, the rounding applied, and the rate date used. The parameter descriptions further reveal important behaviors like default-to-currency, minor-unit rounding, weekend/holiday fallback, and the 90-day window fallback. This gives an agent a reliable picture of the tool's behavior, including edge cases.
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 two tightly written sentences: the first front-loads the call action and scope, the second compactly enumerates the return contract. Every clause adds value, and the parameter descriptions are detailed without being bloated.
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, but the description compensates by listing the returned fields: converted amount, cross rate to 6 decimals, rounding applied, and rate date used. Combined with complete parameter documentation and fallback behaviors, an agent has enough information to invoke the tool correctly and interpret the result.
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 input schema has 100% coverage, with rich descriptions for all four parameters including defaults, rounding behavior, date fallback, and the euro cross-rate path. The main description adds high-level context but does not need to restate parameter details; the schema already does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation ('convert an amount') with a clear resource scope: any two ECB-quoted currencies, today or on a past date. It is easily distinguished from sibling tools like convert_time or currency-rate lookups because it focuses on a single conversion and its output contract. The title and description reinforce each other without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The opening phrase 'Call this tool to convert an amount' gives a direct, actionable usage instruction, and the scope (single amount, ECB currencies, date choice) defines the context clearly. It does not explicitly name alternatives such as convert_many or fx_rates_for, so it stops short of a full 5, but the guidance is well implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_manyConvert one amount into several currenciesA
Convert one amount into many currencies off the SAME ECB rate date, each rounded to its own minor units. For several lines at once (mixed-currency invoice lines), call it once per line: every line then shares one rate date. Unknown targets are listed, never failed.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Target currencies | |
| from | Yes | ||
| amount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well: it discloses the consistent rate date, the per-currency rounding behavior, and that unknown targets are listed rather than causing failure. This is meaningful behavioral context beyond what the schema alone provides, though it does not cover every possible side-effect concern.
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 carrying a distinct necessary fact: core behavior with constraints, a usage pattern, and error handling. The description is front-loaded with the main action and has no filler words.
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 3-parameter tool with no annotations and no output schema, the description covers the core behavior, consistency guarantee, rounding rules, error handling, and a realistic use case. It does not describe the output structure or rate source details beyond 'ECB', but these are secondary to correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only 'to' has a description), so the description must compensate. It clarifies that 'amount' is a single amount converted into multiple currencies and that 'to' holds the target currencies, but it does not explicitly explain 'from' beyond being the source currency or specify formats beyond the schema pattern. 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 states a specific verb ('Convert') and a specific resource ('one amount into several currencies'), and adds distinguishing constraints (same ECB rate date, rounding to each currency's minor units). This makes it clearly distinct from the sibling 'convert' tool, which converts one amount to one currency.
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 provides a concrete usage rule: for several lines at once (mixed-currency invoice lines), call it once per line so all lines share one rate date. It does not explicitly name the alternative 'convert' tool, but the guidance strongly implies when this multi-currency variant is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_timeConvert a time between zonesA
Convert one time from from_zone into every zone in to_zones, marking any day change, plus the UTC instant. The time is wall-clock in from_zone unless it carries an offset or a trailing Z. '3pm tomorrow' works.
| Name | Required | Description | Default |
|---|---|---|---|
| gap | No | What to do with a time that does not exist because the clocks jumped forward: 'forward' takes the time after the jump, 'backward' the time before it. Without this, such a time is refused. | |
| fold | No | Which occurrence of a time that happens twice because the clocks went back. Default 'first'. | |
| time | Yes | '2026-09-10 15:00', '2026-09-10T15:00:00Z', '3pm tomorrow', 'now' | |
| to_zones | Yes | Places to convert into | |
| from_zone | Yes | Place the time is given in, e.g. 'Warsaw' or 'Europe/Warsaw' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden and does a solid job: it explains that the input is wall-clock unless it has an offset or trailing Z, that every zone in to_zones is produced, that day changes are marked, and that the UTC instant is included. It does not mention failure behavior for nonexistent times, though the schema's gap parameter covers that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler. The main behavior is front-loaded, the wall-clock caveat is second, and the example is last. Every sentence contributes either action, semantics, or an illustration.
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 moderate complexity of five parameters and no output schema, the description covers the essential behavioral contract: inputs, natural-language support, day-change marking, and UTC instant. It does not spell out the exact output shape, but it gives enough for an agent to understand what results to expect.
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 meaningful semantics beyond the schema: it clarifies the interpretation of the 'time' parameter ('wall-clock in from_zone unless it carries an offset or a trailing Z') and gives a natural-language example ('3pm tomorrow works'). It also makes explicit that to_zones is exhaustive ('every zone').
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 opens with a specific verb and resource: 'Convert one time from from_zone into every zone in to_zones.' It clearly distinguishes this from sibling tools like 'now' or 'overlap' by framing it as a timezone conversion with day-change and UTC-instant output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when the tool applies: converting an arbitrary wall-clock time across zones, including natural-language inputs. It does not explicitly name alternatives or exclusions, but its scope is evident enough that an agent can identify it as the conversion tool rather than the current-time or overlap tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cover_letter_createWrite a cover letter .docxA
Call this tool to write a one-page cover letter .docx from the stored profile and return the path, word count and bracketed prompts. Nothing from the posting is restated as yours. Free: 3 a month.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | ||
| tone | No | Default "formal". | formal |
| company | Yes | ||
| out_path | No | Where to write the .docx. Defaults to <data dir>/documents/<company>-<role>-cover-letter.docx, numbered -2, -3, ... if that exists. | |
| overwrite | No | Replace an existing file at out_path. Default false: the call fails and nothing is written. | |
| highlights | No | Points to lead with. Each is checked against the profile; anything not found there is returned as a bracketed prompt, not printed as fact. | |
| hiring_manager | No | ||
| job_description | No | Paste the posting. Used only to pick which of your own skills to lead with; no figure from the posting is ever restated as yours. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the behavioral burden and does well: it states the file is written, what is returned, that posting content is never restated as the user's, and the free quota of 3/month. It does not cover failure modes like overwrite conflicts, but those are exposed through the input 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?
Three short sentences, no filler. The core behavior and return values are front-loaded, and the critical guardrail and quota are stated concisely in the following sentences.
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 tool with no output schema and no annotations, the description includes the core behavior, outputs, the source data, a critical privacy/accuracy constraint, and a usage limit. An agent can reasonably predict the tool's behavior and invoke it successfully.
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 semantic context for the less obvious parameters: job_description is only used to select skills and never copied as facts, and highlights that cannot be verified surface as bracketed prompts. The basic fields (role, company, tone) are self-explanatory and mostly covered by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific action, 'write a one-page cover letter .docx', and names the data source and return values ('path, word count and bracketed prompts'). This cleanly distinguishes the tool from siblings like resume_create and tailor_to_job.
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?
'Call this tool to write...' clearly indicates when the tool should be invoked, and the one-page cover-letter scope makes it distinct from resume-related siblings. The description does not provide explicit when-not-to-use conditions or name alternatives, so it is clear but not fully contrastive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
currencies_listCurrencies the ECB quotesA
Every currency in the ECB daily set with its rate against the euro and its decimal places. This is the whole domain: a code not on this list cannot be converted, quoted or historised here.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose key behavior: the list is exhaustive and authoritative, and contains rates and decimal places. However, it does not mention freshness, ordering, or whether the rates are live or static.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver the full purpose and domain scope without redundancy. The key constraint is placed in the second sentence, making the description easy to parse.
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 list tool, the description is complete: it defines the contents, the authoritative scope, and the practical consequence of a missing code. No output schema is present, but the listed fields are enough for an agent to understand the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline of 4 applies. The description adds meaningful context about what each listed item contains, compensating for the lack of schema detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exposes every currency in the ECB daily set, including its euro rate and decimal places. It also frames the resource as the authoritative domain list, distinguishing it from conversion and history tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: to validate whether a currency code is supported before attempting conversion, quoting, or history retrieval. It does not explicitly name sibling alternatives, but the domain boundary is clearly communicated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
doc_createCreate a Word documentB
Call this tool to write a real .docx file from structured sections. Returns the file path, the number of blocks written and the layout used. Free and unlimited.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date line for the letter layout, default today | |
| style | No | Layout, default plain. plain is the title and the body; letter adds a sender block top right, a date and the addressee; proposal adds a letterhead band and a cover title | |
| title | Yes | Document title, used as the top heading and the file name | |
| out_path | No | Where to write the .docx. Defaults to the data directory | |
| sections | Yes | Sections in order. Each one may carry a heading, paragraphs, a bullet or numbered list and a table | |
| overwrite | No | Replace out_path if a file is already there. Default false: an existing file is never overwritten | |
| recipient | No | Addressee block for the letter layout |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description only mentions output (file path, block count, layout) and claims 'Free and unlimited'. It does not disclose side effects like file overwriting behavior (default false), the possibility of errors, or what happens if the file exists. This is a transparent gap.
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 brief and front-loads the core purpose. However, the phrase 'Free and unlimited' is extraneous and adds noise without aiding tool selection, preventing a perfect score.
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 moderately complex nested schema (sections with headings, paragraphs, lists, tables), the description is sparse. It does not illustrate the concept of 'structured sections' or how the layout styles (plain, letter, proposal) affect output. While the schema fills many gaps, the description alone is not fully self-contained.
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 every parameter already has a descriptive comment. The tool description adds no additional meaning about parameters beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('write') and resource ('a real .docx file') and clarifies the input format ('structured sections'). It also lists the return values, making the tool's purpose unmistakable. This clearly distinguishes it from siblings like doc_from_markdown or doc_read.
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 explicit guidance is given on when to use this tool versus alternatives such as doc_from_markdown or doc_fill_template. The description does not mention scenarios or conditions that would prefer this tool, leaving the choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
doc_fill_templateFill a Word templateA
Call this tool to replace {{placeholders}} in a .docx and write a new file, reporting what was filled, unfilled or ignored. Call it with no values to list them. Free: templates up to 10 placeholders.
| Name | Required | Description | Default |
|---|---|---|---|
| values | No | Placeholder name to value, e.g. {client: "Acme", fee: "EUR 4,500.00"} | |
| out_path | No | Where to write the filled .docx. Defaults to <template>-filled.docx | |
| overwrite | No | Replace out_path if a file is already there. Default false: an existing file is never overwritten | |
| template_path | Yes | Path to the .docx template containing {{placeholders}}. Every style, table, header, footer and image of the original is kept. Placeholders split across runs by Word's editor are handled, because the substitution runs on the joined text of each paragraph |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool writes a new file, reports filled/unfilled/ignored placeholders, lists placeholders when called without values, and imposes a free-tier limit of 10 placeholders. These are meaningful behavioral traits beyond what the schema already expresses.
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 three concise sentences, front-loaded with the primary action and followed by the no-values behavior and the free-tier constraint. Every sentence earns its place and there is no repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderately complex tool with no output schema, the description covers the main behavior, the alternative no-values invocation, and the key free-tier limitation. Parameter defaults and path behavior are handled by the schema. The only minor gap is the exact return format, though the filled/unfilled/ignored report is mentioned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds extra semantic value by explaining that omitting values triggers placeholder listing, which directly clarifies the optional values parameter. It also frames the meaning of placeholders in context, going slightly beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: replace {{placeholders}} in a .docx and write a new file. It also clarifies that calling with no values lists placeholders, which is a distinct behavior. This clearly separates it from sibling doc tools like doc_create, doc_read, or doc_from_markdown.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to call the tool: to replace placeholders or to list placeholders with no values. It gives clear usage context, though it does not mention alternatives or exclusions such as 'use doc_from_markdown instead when creating a document from scratch.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
doc_from_markdownMarkdown to WordA
Call this tool to turn markdown into a .docx, returning the file and a count of blocks by type. Headings, lists, GFM tables and code fences are honoured. Empty markdown is refused, and so is overwriting without the flag.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | ||
| title | No | Document title; defaults to the first heading in the markdown | |
| markdown | Yes | The markdown source. ATX headings, paragraphs, bullet and numbered lists, GFM pipe tables and fenced code blocks as monospace are honoured, as are **bold**, *italic* and `code` inline | |
| out_path | No | Where to write the .docx. Defaults to the data directory | |
| overwrite | No | Replace out_path if a file is already there. Default false: an existing file is never overwritten |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full burden and does well: it discloses the return shape (file plus block count), supported syntax features, the empty-markdown refusal, and the overwrite-requires-flag safety gate. It stops short of explicitly stating that a file is written to disk as a side effect, but the overwrite mention strongly implies 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?
Three sentences with zero filler: the core action and return value are front-loaded, followed by feature support and then refusal conditions. Every sentence earns its place and the most critical behaviors appear first.
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 5-param conversion tool with 80% schema coverage and no output schema, the description is nearly complete: it covers the return value, supported syntax, and both refusal/error branches. The only gap is an explicit statement of the disk-write side effect and default destination, though out_path's default is in the 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 80%, so the schema already documents markdown, title, out_path, overwrite, and the style enum. The description adds genuine behavioral context beyond the schema—empty markdown is refused and overwrite requires the flag—but does not elaborate parameter semantics further. This is a standard baseline-3 case where the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource pair: 'turn markdown into a .docx,' and states the exact outcome (returns the file and a count of blocks by type). This cleanly distinguishes it from the likely sibling doc_to_html (markdown to HTML instead of Word) without needing the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly says 'call this tool to turn markdown into a .docx,' giving a strong trigger condition. However, it never names alternatives or exclusion cases, despite relevant siblings like doc_to_html, doc_create, and doc_fill_template existing. The reader must infer when this tool is preferable to its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
doc_readRead a Word documentA
Call this tool to extract the text of an existing .docx. Returns an outline of the headings and the full text in document order, or the block structure. Free and unlimited.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the .docx file. Files produced by Word, Google Docs or this server all work; legacy .doc and .rtf do not | |
| format | No | text (default) returns the readable text, json returns the block structure: headings with their levels, paragraphs, list items and tables, in document order |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It discloses the return behavior: outline of headings, full text in document order, or block structure, and notes that usage is free and unlimited. 'Extract' also implies a non-destructive read operation, though it does not explicitly state 'does not modify the file.'
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 short, front-loaded with the invocation guidance, and delivers the output behavior in a singlefollow-up sentence. The 'Free and unlimited' note is brief and adds useful operational context without bloating the 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 simple two-parameter read tool with 100% schema coverage and no output schema, the description provides the essential decision and invocation information: what file type to target, what the tool returns, and the two output flavors. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both 'path' and 'format.' The description's mention of outline/headings and block structure loosely maps to the format enum, but it does not add meaningful parameter semantics 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?
The description uses a specific verb and resource: 'extract the text of an existing .docx.' It clearly differentiates this tool from siblings like doc_to_html, pdf_text, and resume_read by specifying the .docx text-extraction behavior and the outline/block-structure output.
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 opening phrase 'Call this tool to extract the text of an existing .docx' gives explicit guidance on when to use it. It does not name alternative tools or exclusion cases, but the context is clear enough for an agent to select it for reading .docx text.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
doc_to_htmlWord document to HTMLA
Call this tool to convert a .docx to semantic HTML you can open in a browser and print to PDF. Returns the path of the .html file. This is the supported PDF route; no PDF is rendered here. Free and unlimited.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the .docx file to convert | |
| out_path | No | Where to write the .html. Defaults next to the source file. Open the result and print it to PDF; direct PDF output is not offered here | |
| overwrite | No | Replace out_path if a file is already there. Default false: an existing file is never overwritten |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden. It discloses that the tool returns a path, does not render PDF directly, and is 'free and unlimited.' This gives useful behavioral context, though it doesn't cover all edge cases.
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 two sentences, concise, and well-structured. It covers purpose, output, and a key usage hint without fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with three well-documented parameters, the description provides enough context: converts docx to semantic HTML, returns path, supports PDF workflow, and is free/unlimited. It lacks an output schema but doesn't need one. Minor gaps like error behavior are not critical.
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 already fully describes all three parameters (path, out_path, overwrite) with clear descriptions. The tool description adds context about the conversion purpose but does not add new meaning to the parameters themselves, matching the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool converts .docx to semantic HTML, mentions the output is a file path, and highlights its use for printing to PDF. This is specific and distinct from sibling 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 explicitly says 'This is the supported PDF route; no PDF is rendered here,' which directs when to use this tool (when HTML is needed for PDF output) and what to avoid (expecting direct PDF). While it doesn't name alternative tools, the condition is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
docx_business_setSet your business detailsB
Store the sender details printed on every proposal, contract and letter, plus the currency, VAT, terms and prefix defaults. It writes the SAME shared profile as the invoice server's business_set.
| Name | Required | Description | Default |
|---|---|---|---|
| vat | No | Alias for default_tax_rate | |
| bank | No | Bank name / BIC | |
| iban | No | IBAN or account number for payment | |
| name | Yes | Your business or freelancer name, printed on the letterhead of every proposal, contract and letter | |
| No | Your own email address, printed on every letterhead. Leave it out unless the user gave it: a document that shows an address nobody supplied is worse than one that shows [add: email] | ||
| phone | No | Your own phone number. Same rule as email: only if the user gave it | |
| vat_id | No | VAT / tax registration id | |
| address | No | Postal address, newlines allowed | |
| tax_rate | No | Alias for default_tax_rate | |
| timezone | No | IANA zone you work in, e.g. Europe/Warsaw. Shared with time-tracker and timezone as your home zone | |
| vat_rate | No | Alias for default_tax_rate | |
| logo_path | No | Path to a PNG or JPG logo for the letterhead (Pro) | |
| brand_color | No | Letterhead colour as a hex code, e.g. 1F3864 (Pro) | |
| invoice_prefix | No | Reference prefix used by mcp-invoice; this profile has the same field shape as mcp-invoice, so one profile serves both | |
| default_currency | No | ISO code, e.g. EUR, USD. Default EUR | |
| default_tax_rate | No | Default VAT percent, quoted on proposals | |
| payment_terms_days | No | Default days until payment is due. Default 14 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral disclosure burden. It does disclose that this tool writes to a shared profile and that the stored details appear on every relevant document, but it does not mention that the profile is overwritten, whether auth is required, or that the effect is global and irreversible. Partial transparency, but not a 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 description is only two sentences with no filler words. The second sentence connects this tool to the invoice server's business_set, a valuable structural note, and the whole text fits in a small space while conveying the key purpose.
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 17 parameters and no output schema, the description gives an appropriate high-level summary, and the schema carries the per-parameter detail. However, it does not state what happens to existing documents or existing profile values, nor does it clarify whether the write is a full overwrite or partial update. For a global settings setter, these caveats matter to agents.
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 description coverage is 100%, and each parameter already has a rich description (e.g., the email rule). The tool description only adds a high-level category summary (currency, VAT, terms, prefix) and does not introduce new parameter semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool stores sender details and defaults that appear on proposals, contracts, and letters, and it references the shared profile relationship with the invoice business_set. However, it does not explicitly distinguish when to prefer this tool over a sibling like invoice_business_set, so it falls short of a fully differentiated purpose 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?
There is no explicit when-to-use or when-not-to-use guidance. The description implies the tool is for docx-generated documents but does not contrast with invoice_business_set or offer alternatives, leaving an agent without enough context to avoid the wrong sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dst_changesDaylight-saving changesA
The clock changes in a place for a year, with the exact UTC instant and the offset before and after. Use it to check whether a recurring call moves for one of you in March or October.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Calendar year, default this year | |
| zone | Yes | Place or IANA zone |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden of explaining behavior. It discloses the key output traits: exact UTC instant and offsets before/after the change. This is meaningful for an agent. It could say more about empty results or return shape, but for a simple query tool this is reasonably transparent.
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 concise sentences. The first states the output content, and the second provides a practical use case. Every sentence earns its place, and 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?
For a low-complexity, two-parameter tool with no output schema, the description gives enough context: what is returned, the time detail, and the intended use. It could be slightly richer by noting what happens when a zone has no daylight-saving changes, but nothing critical is missing for normal use.
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%, with clear descriptions for year ('Calendar year, default this year') and zone ('Place or IANA zone'). The description adds no extra parameter meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies what the tool provides: daylight-saving clock changes for a place/year, with UTC instants and before/after offsets. It does not use a strong verb like 'returns' or 'lists', but the resource and output content are specific. It is distinguishable from time-related siblings by focusing on DST transitions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit use case: checking whether a recurring call moves for one participant in March or October. This is practical and helps an agent know when this tool is relevant, though it does not name alternatives or explicitly say 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.
entry_addAdd time entryA
Log time already worked as one entry and return its id, duration and amount. Give start plus end or minutes. rate is hourly in MAJOR units and is frozen on the entry, so a later rate change never moves it.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ISO 8601 end time (or use minutes) | |
| note | No | Optional note | |
| rate | No | Hourly rate for this entry; a number (90) or the words the user said ('90 euros an hour') | |
| tags | No | Optional tags | |
| task | No | What the work was | |
| start | Yes | ISO 8601 start time, e.g. 2026-09-02T09:00:00 | |
| minutes | No | Duration in minutes (alternative to end) | |
| project | Yes | Project or client name. A partial name that matches exactly one existing project is used as that project. | |
| billable | No | Default true; set false for non-billable work | |
| currency | No | Currency of the rate: EUR, USD, GBP, PLN, or words like 'euros'. Defaults to the project currency, else USD. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses a key behavioral detail (rate is frozen on the entry) and the return values, but omits prerequisites, error handling, side effects, or any state changes beyond creation. Partial disclosure only.
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 compact—two sentences with no fluff. It front-loads the purpose and integrates the critical rate behavior efficiently. Slightly dense, but appropriately sized for the tool's complexity.
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 10 parameters, no output schema, and no annotations, the description is thin. It doesn't mention required fields (project, start), the conflict if both end and minutes are provided, default billable behavior, or error handling. It covers the essentials but leaves significant gaps for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by clarifying the start+end vs. minutes alternative and explaining that 'rate' is in MAJOR units and frozen, which goes beyond the schema's property descriptions. This is a meaningful addition.
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 action ('Log time') and the resource ('one entry'), and distinguishes from timer tools by specifying 'already worked'. It also lists return values (id, duration, amount), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'already worked' implies this is for completed time vs. ongoing timers (timer_start), but it never explicitly names alternatives or conditions for using entry_edit or when not to use this tool. No explicit when-to-use or when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entry_deleteDelete time entryA
Delete one logged entry by id and report the project and hours removed. It never touches a running timer. A billed entry goes too, losing the invoice record, so correct one with entry_edit instead.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Entry id from entry_list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses two key behaviors: it never touches a running timer, and it deletes billed entries with loss of invoice record. It also indicates a return report. However, it doesn't explicitly state that deletion is irreversible, though that is implied by the delete verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary action and immediate caveats. No filler, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete tool with no output schema, the description covers the essential usage, side effects, and alternative. It is complete enough for an agent to invoke correctly without additional information.
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 the single parameter (id) with a description. The tool description restates 'by id' but adds no new semantic detail. Baseline 3 for high schema coverage is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the action (delete), the resource (logged entry), the identifier (by id), and differentiates from siblings by noting it doesn't touch a running timer and that billed entries are affected, contrasting with entry_edit. This clearly distinguishes it from entry_edit and timer 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?
Explicitly warns against using on billed entries because it loses the invoice record, directing to entry_edit instead. Also clarifies it doesn't affect running timers, so it's safe in that context. This gives clear when-to-use and when-not-to-use guidance with a specific alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entry_editEdit time entryA
Change one logged entry by id; only the fields you pass move. minutes keeps start and moves end, an end at or before start is refused, tags REPLACES the list, and rate is hourly in MAJOR units.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Entry id from entry_list | |
| end | No | ISO 8601 | |
| note | No | ||
| rate | No | Hourly rate override for this entry, a number or words like '90 euros' | |
| tags | No | ||
| task | No | ||
| start | No | ISO 8601 | |
| minutes | No | New duration in minutes, keeps start | |
| project | No | ||
| billable | No | ||
| currency | No | Currency of the rate, e.g. EUR |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it discloses important non-obvious behaviors: minutes adjusts end, invalid end times are refused, tags replace rather than merge, and rate is in major currency. It does not mention permissions or response behavior, but the mutation-related surprises are largely surfaced.
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 entire description is one efficient sentence that front-loads the target and scope, then adds the important behavioral caveats. There is no filler or repetition of obvious schema content; every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 11 parameters, no annotations, and no output schema, this description is fairly complete. It covers the tricky mutation semantics: which fields move, what is rejected, what is replaced, and what units are used. A brief note about the return value would have made it fully self-contained, but the definition is sufficient for correct use.
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 only 55%, so the description meaningfully compensates by explaining the relationships among start/end/minutes, the replace behavior of tags, and the units for rate. Many simpler fields like note, task, project, and billable remain without schema descriptions, but the description's coverage of the ambiguous parameters is strong.
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 a specific verb and resource: change one logged entry by id. It also distinguishes this from siblings by clarifying patch semantics ('only the fields you pass move'), which separates it from entry_add, entry_delete, and entry_mark_billed. This adds real value beyond 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 gives clear guidance on how to use the tool: target an existing entry by id and pass only the fields to update. It does not explicitly name alternatives or state when not to use it, but the context is strong enough that an agent can choose it over add/delete/mark tools without much risk.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entry_listList time entriesA
List logged entries as a table of id, day, start, project, task, hours, billable, tags and note, newest first, with total hours. Free reads the last 7 days and says so; Pro reads the whole history.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ISO date/time upper bound | |
| from | No | ISO date/time lower bound | |
| limit | No | Maximum rows, newest first (default 50) | |
| project | No | Filter by project name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It explains the output shape, sort order, total hours, and plan-based read limits, which is meaningful transparency beyond a generic 'list entries' statement. It stops short of stating authentication, rate limits, or whether the operation is read-only, though 'reads' strongly implies non-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?
Two sentences deliver the essential information with no filler. The output format, ordering, total hours, and plan limitation are front-loaded in a compact, scannable structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description compensates by describing the returned columns and key behaviors. It is complete enough for a straightforward listing tool, with only minor gaps such as default range semantics when no from/to parameters are supplied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters already carry adequate documentation. The description adds no extra semantics about how from/to bounds interact with the default range or how limit interacts with total hours, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists logged entries and specifies the output fields, ordering, and total hours. It is unambiguous against mutation siblings like entry_add or entry_delete, though it doesn't explicitly differentiate itself from export_csv or other read-style tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for listing time entries, and the free/Pro history limitation gives useful context about when results are restricted. However, it does not explicitly state when to prefer this tool over alternatives such as export_csv or timer_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entry_mark_billedMark time entries as billedA
Close the loop after an invoice is issued: stamp the tracked hours that went on it with the invoice number, so report and invoice_summary stop offering them and the same hours are never billed twice.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ISO date/time end of the billed period, used with project | |
| ids | No | Exact entry ids, normally the entry_ids invoice_summary returned. Pass either ids or project plus from and to. Entries already billed are left alone and listed back to you. | |
| from | No | ISO date/time start of the billed period, used with project | |
| project | No | Project or client, used with from and to instead of ids; every billable entry in that range is stamped. | |
| billed_at | No | ISO timestamp of the stamp, defaults to now | |
| invoice_number | Yes | The invoice these hours were put on, e.g. INV-2026-0001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the main behaviors: entries get stamped, reports and invoice_summary stop offering them, and double-billing is prevented. The ids parameter description adds that already-billed entries are left alone and listed back, which is useful idempotency behavior. It does not detail reversibility or permissions, but the core mutable effect is transparent.
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 one tight sentence that front-loads the purpose and consequence. Every clause earns its place, with no repetition of the title or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and no annotations, it covers what it does, when to run it, why it exists, and how to select entries. Minor gaps are an explicit statement of what is returned for successfully billed entries and whether the change can be undone, but the tool is callable with the information provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions already cover parameters, so the baseline is 3. The description adds meaningful selection semantics: 'Pass either ids or project plus from and to' plus the typical source 'entry_ids invoice_summary returned'. This clarifies the two mutually exclusive calling modes and helps an agent avoid passing conflicting 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 uses a concrete verb and object ('stamp the tracked hours ... with the invoice number') and explains the business purpose ('so report and invoice_summary stop offering them and the same hours are never billed twice'). This clearly differentiates it from siblings like invoice_mark_paid, which marks an invoice paid rather than the underlying time entries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit trigger condition ('after an invoice is issued') and references invoice_summary as the source of entry ids, making the workflow placement clear. It does not enumerate exclusions or alternatives, but an agent can infer when this tool is the right step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
event_exportExport events to a .ics fileA
Call this tool to write chosen events to a new .ics file you can send or import elsewhere. Pass either ids (from events_list) or a from/to window. Times are written in UTC so the file lands correctly in any client.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Last day, YYYY-MM-DD, included | |
| ids | No | Event ids from events_list, events_search or next_event | |
| from | No | First day, YYYY-MM-DD (alternative to ids) | |
| calendar | No | With from/to: limit to one calendar | |
| out_path | Yes | Where to write the .ics file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of explaining behavior. It discloses that a new .ics file is written, that UTC times are used, and that the file is intended for sending or importing elsewhere. It does not describe error cases or what happens if both ids and from/to are supplied, but the core behavior is transparent.
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 focused sentences, no filler. The purpose and key usage distinction are front-loaded, and the timezone detail is placed where it matters. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a straightforward export tool, but gaps remain: it does not clarify what happens when both ids and from/to are omitted or supplied together, and it only references events_list as the source for ids while the schema also allows events_search and next_event. With no output schema, a bit more detail about expected results would strengthen completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaningful cross-parameter guidance by presenting ids and from/to as mutually exclusive alternatives, and explains why UTC matters for the output. This goes beyond simply restating the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'write chosen events to a new .ics file'. It clearly separates this from siblings like export_csv or ics_create by focusing on exporting existing events into an .ics file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly tells the agent how to scope the operation: pass either ids or a from/to window. It does not explicitly name sibling tools to avoid, but the context of sending or importing the .ics elsewhere is clear enough for correct use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
events_listList events in a windowA
Every event between two dates, recurring expanded to occurrences, sorted by start. Times shown in your zone (profile's, else this machine's) unless zone passed. Each id works for event_export or event_to_time_entry.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Last day, YYYY-MM-DD, included | |
| from | Yes | First day, YYYY-MM-DD | |
| zone | No | Show local times in this zone or city instead of your own | |
| calendar | No | One calendar name; default every imported calendar |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It usefully communicates recurrence expansion, sorting by start, timezone fallback behavior, and ID reusability. It does not describe response shape or pagination, but still provides meaningful behavioral context beyond a simple 'list events' statement.
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, information-dense sentences: the first states scope and ordering, the second clarifies timezone behavior, and the third explains useful downstream tool compatibility. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with no output schema, the description covers the essential behavioral context: date window, recurrence expansion, sorting, timezone handling, and ID usefulness for related tools. It does not detail the response envelope, but the gap is modest given the clear scope and title.
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 already documents all four parameters with 100% coverage, so the description does not need to define them. It adds one useful nuance about the 'zone' parameter and local time display, which goes slightly beyond the schema, but the schema remains the primary source of 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 core behavior is clear: 'Every event between two dates, recurring expanded to occurrences, sorted by start' names the resource and the operation. It does not explicitly contrast with sibling tools like events_search, so differentiation 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?
The description implies this tool is for retrieving all events in a date range and notes that resulting IDs work for event_export or event_to_time_entry. However, it does not explicitly say when to use events_list versus events_search, free_busy, next_event, or other calendar-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
events_searchSearch eventsA
Find events whose title, description, location or attendees contain a phrase. Searches every imported calendar. Without from/to it looks a year back and a year forward on Pro, and the free window either side of today.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Last day, YYYY-MM-DD, included | |
| from | No | First day, YYYY-MM-DD | |
| query | Yes | Words to look for, case-insensitive |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses plan-dependent default time ranges, giving some insight into behavior, but it does not explicitly state that the operation is read-only or describe any side effects, rate limits, or data sensitivity.
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 two concise sentences, with the main purpose stated upfront and additional behavior details in the second sentence. No fluff or redundancy is present.
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?
In the absence of an output schema, the description does not clarify the return format (e.g., list of event objects, count, metadata). While 'find events' implies a result set, the lack of detail on what the response contains could leave an agent uncertain about downstream processing.
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 description adds meaningful context by explaining how from/to behave when omitted (default windows) and what fields are searched. This goes beyond the schema's simple date and query definitions, providing practical usage 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 uses a specific verb ('find') and clearly identifies the resource (events) and the search scope (title, description, location, attendees). It distinguishes this from a plain listing tool by emphasizing the phrase search across imported calendars.
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 that it searches every imported calendar and describes default date windows based on plan, but it does not explicitly mention when to prefer this over sibling tools like events_list or how it differs from them. Guidance on when-not-to-use or alternatives is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
event_to_time_entryTurn a meeting into a time entryA
Take one event and return the exact arguments for the time-tracker's entry_add, so a meeting that already happened becomes billable time without retyping it. Writes nothing: pass the JSON straight to entry_add.
| Name | Required | Description | Default |
|---|---|---|---|
| rate | No | Hourly rate for this entry; a number (120) or the words the user said ('120 euros an hour') | |
| project | Yes | Project or client the meeting is billed to | |
| currency | No | Currency of the rate: EUR, USD, GBP, PLN, or the word the user said ('euros'). Without it the time-tracker falls back to USD. | |
| event_id | Yes | Event id from events_list, events_search or next_event |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Explicitly states 'Writes nothing', which is a key side-effect disclosure given the lack of annotations. It also clarifies that it returns arguments rather than performing the entry creation, but doesn't mention potential validation or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no redundant wording. The key information—what it does, its side-effect-free nature, and the follow-up action—is front-loaded and efficiently communicated.
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?
Sufficient for a tool with 4 straightforward parameters. It tells the user exactly what to do with the output ('pass the JSON straight to entry_add'), though a bit more detail about the return shape would have been helpful given the absence of an 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?
The schema already covers all parameter meanings (event_id source, project/client, rate format, currency fallback). The description adds no extra parameter detail, so it stays at the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it takes an event and returns the exact arguments for entry_add, with the specific purpose of converting a past meeting into billable time. This distinguishes it from sibling tools such as entry_add or events_list.
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?
Indicates when to use it ('a meeting that already happened becomes billable time') and directs the user to pass the result to entry_add. It doesn't explicitly contrast with every alternative, but the use case is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_csvExport entries to CSVA
Call this tool to export the timesheet to a CSV file (excel-friendly) you can hand to a bookkeeper: one row per entry with hours, billable, rate, currency and amount. Returns the file path written.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ISO date/time upper bound. On the free tier the export is clamped to the last 7 days; Pro exports the full history. | |
| from | No | ISO date/time lower bound. On the free tier the export is clamped to the last 7 days; Pro exports the full history. | |
| path | No | Target file path; a relative path resolves against the working directory. Defaults to a timestamped file in the local data directory, and the full path is returned. | |
| project | No | Optional project filter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the write behavior ('Returns the file path written'), the output content, and the format. It does not mention overwrite or clamping behavior, but the input schema already documents the free-tier/pro clamping for date ranges.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary purpose, and every sentence adds essential information: what it exports, for whom, the row structure, and the return value. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly explains the return value ('file path written') and the file content. It covers the essentials for an agent to select and invoke the tool. Minor omissions like file overwrite behavior or encoding are acceptable given the schema richness and simple nature of the export operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with clear descriptions for all four parameters (to, from, path, project). The description does not add parameter-specific meaning, but the baseline of 3 is appropriate because the schema fully covers the 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 ('export'), resource ('the timesheet'), output format ('CSV file, excel-friendly'), and purpose ('hand to a bookkeeper'). It also specifies the row structure ('one row per entry with hours, billable, rate, currency and amount'), which clearly distinguishes it from other export-related siblings like clause_export or event_export.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use the tool ('Call this tool to export the timesheet to a CSV file...') and for whom ('hand to a bookkeeper'). It does not name alternative tools or state when not to use it, but among the siblings there is no direct alternative for timesheet CSV export, so the guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_meeting_slotsFind meeting slotsA
Rank the times when every participant is inside their own working hours. Returns each slot as a UTC instant with the local time for every participant and a fairness score, best first.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | How many days ahead to search, default 5, at most 366. Free tier: a search longer than 5 days is shortened to 5, not refused | |
| limit | No | How many slots to return, default 8. Slots are ranked by fairness: the score is the WORST participant's distance in hours from 13:00 local, so a slot that is 07:00 for one person never outranks one that suits everybody | |
| recurring | No | Pro: also report the weekly recurring times that work on every searched weekday | |
| participants | Yes | Who has to attend. A zone is OPTIONAL per person: a saved contact supplies their own, and anyone left without one (you, typically) takes the timezone on your shared business profile, so never ask the caller what timezone they are in - include yourself by name and let the server resolve it. Every slot returned is inside all of their hours; weekends in the first participant's zone are skipped. Free tier: up to 3 participants | |
| earliest_date | No | First date to consider, YYYY-MM-DD, default today | |
| duration_minutes | No | Meeting length in minutes, default 60, at most 1440 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It does disclose return content (UTC instant, local time per participant, fairness score) and ordering, but it leaves side-effect/read-only status implicit and does not mention behaviors like saved-contact resolution or free-tier truncation, although some of those appear in the schema descriptions.
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 concise sentences lead with the core action and then describe the output shape and ordering. No filler, no repetition of schema content, and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description usefully summarizes the return values, and the rich parameter schema covers the inputs thoroughly. It is complete enough for correct invocation, though explicit usage guidance and side-effect disclosure would make it fully self-sufficient without 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 description coverage is 100%, so the schema already explains every parameter. The description adds context about output format and ranking but no additional parameter-level meaning, matching the baseline of 3.
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 uses a specific verb ('Rank') and clear resource ('times when every participant is inside their own working hours'), and separates this tool from siblings like free_busy or conflicts by describing the fairness-ranked slot output. The title and description together leave no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: the tool clearly exists for finding mutually workable meeting times across participants. However, it does not explicitly say when to choose this over alternatives like free_busy, conflicts, or overlap, nor does it state 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.
forecastRevenue forecastA
Expected invoiced revenue per calendar month per currency from active schedules. Invoiced and skipped periods are excluded and paused schedules listed apart. Free: 3 months; Pro: up to 120.
| Name | Required | Description | Default |
|---|---|---|---|
| months | No | Months ahead including this one, default 12 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It discloses important behaviors: invoiced and skipped periods are not included, paused schedules are shown separately, and plan limits are free vs. Pro. It does not mention response shape or update timing, but for a read-only forecast tool these are less critical.
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 deliver highly relevant information with no filler. The main purpose is front-loaded, and the additional constraints are packed into the following sentences without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description covers the key usage context well: what is forecast, what is excluded, how paused schedules are handled, and plan limits. A more explicit note about response shape would make it stronger, but the tool is simple enough that the description is adequate.
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 fully covers the only parameter with name, type, min, max, and default. The description adds value beyond the schema by stating plan-specific limits (Free: 3 months; Pro: up to 120) and clarifying that the horizon is measured in months, which helps an agent pick a meaningful value.
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 opens with a specific verb and resource:
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this tool to obtain a revenue forecast from active schedules, with a timeframe controlled by the plan limit. It does not explicitly name or compare alternatives among the sibling tools, but no sibling serves the same forecasting purpose, so the lack of explicit exclusions is not a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
free_busyBusy blocks and free windowsA
Merged busy blocks and the free gaps inside your working hours over a day range. Events marked free do not count; whole-day events block the day. Free: 31 days. Use conflicts for overlapping pairs.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Last day, YYYY-MM-DD, included | |
| from | Yes | First day, YYYY-MM-DD | |
| zone | No | Zone the working hours and the output are in; default your own | |
| work_end | No | End of your working day, HH:MM, default 17:00 | |
| calendars | No | Calendar names; default all of them | |
| work_start | No | Start of your working day, HH:MM, default 09:00 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It does well by explaining the treatment of free events and whole-day events, and the 31-day limit appears to be a hard constraint (likely an API limit). However, it doesn't disclose details like whether the tool requires authentication, rate limits, or how it handles time zones beyond what the zone parameter implies. The 'Free: 31 days' is ambiguous—could mean the max range is 31 days, which is useful but not fully explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, three substantial sentences, and front-loads the core output ('Merged busy blocks and the free gaps inside your working hours') before diving into constraints. The sentence about free events and whole-day events is critical and placed early. The 'Free: 31 days' and 'Use conflicts for overlapping pairs' add value without bloat. It earns a 4 for being tight and informative.
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 tool has 6 parameters but only 2 required, and no output schema, the description gives enough for basic usage: date range, working hours, calendars, and time zone. It clearly communicates the core output. However, it lacks details on the output format (e.g., does it return blocks in a specific structure?), error handling, or edge cases (e.g., what if no free gaps exist). For a scheduling tool, these could be relevant for agents, but the complexity is moderate, so a 3 is fair.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is described in the schema. The description adds some semantics by explaining that 'free' events don't count and whole-day events block the day, which relates to the 'calendars' and 'work_start'/'work_end' parameters. However, it doesn't add detail about formats or default values beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: it provides merged busy blocks and free gaps within working hours over a date range. This distinguishes it from sibling tools like conflicts and events_list, though it doesn't explicitly contrast with them. The verb 'Merged' and resource 'busy blocks and free gaps' are specific enough to convey purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use this tool: for checking busy blocks and free windows over a day range, with important exclusions (events marked free don't count, whole-day events block the day). It also gives a hint to use 'conflicts' for overlapping pairs, which is an explicit alternative suggestion. However, it doesn't cover all possible alternatives or negative use cases in depth.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fx_rates_forFX rates in the shape expense-tracker wantsA
Call this tool when a rebill or an invoice spans more than one currency, instead of asking the user for rates. Returns the fx_rates object expense_to_invoice takes, plus the rate date to write on the invoice.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | The currency the invoice will be issued in; defaults to the shared business profile's default_currency. Pass it on as target_currency alongside the fx_rates object | |
| currencies | Yes | The other currencies present, e.g. ["EUR", "GBP"]. Direction: each returned rate means 1 unit of that key = X units of the target, so {"EUR": 1.08} is 1 EUR = 1.08 of the target. The target needs no rate of its own |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It discloses the return value and its purpose, but does not explicitly state read-only/non-mutating behavior, rate source, freshness, or error conditions. It is adequately transparent for a lookup, 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?
Two compact sentences, front-loaded with when to use, followed by the return contract. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with a thorough schema, the description covers when to call it and what it returns. The main gap is that the output shape is defined only by reference to 'expense_to_invoice', which may be ambiguous if that concept isn't known to the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with good detail about target, currencies, direction, and defaults. The description adds no additional parameter meaning beyond what the schema already explains, 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?
clear and specific: it is a call-to-get FX rates for multi-currency invoices/rebills, returning a shaped object and rate date. It does not explicitly contrast itself with sibling rate tools like rates_latest or convert, so it stops short of full sibling differentiation.
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 trigger condition (rebill or invoice spans more than one currency) and an explicit alternative (asking the user for rates). It lacks comparison to sibling FX rate tools, so it doesn't fully cover when-not-to-use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ics_createWrite a calendar inviteA
Call this tool to write a .ics for one meeting and return the path plus the start in UTC and in your zone. Times are stored in UTC so it lands correctly in any client. Free: 3 files a month.
| Name | Required | Description | Default |
|---|---|---|---|
| gap | No | What to do with a time that does not exist because the clocks jumped forward: 'forward' takes the time after the jump, 'backward' the time before it. Without this, such a time is refused. | |
| fold | No | Which occurrence of a time that happens twice because the clocks went back. Default 'first'. | |
| zone | Yes | Place the start time is given in | |
| start | Yes | Start time, read in `zone` unless it carries an offset | |
| title | Yes | Event title | |
| location | No | Where, or a meeting link | |
| out_path | No | Where to write the .ics file; default meeting.ics in the data dir. Times are stored in UTC, so the invite lands at the right local time in every attendee's calendar with no time zone block to go stale | |
| attendees | No | Attendees. An entry with an email is invited (ATTENDEE:mailto:...); a name with no email is listed in the description instead, because a calendar cannot invite a name. | |
| description | No | Body text | |
| organizer_name | No | Your display name for the ORGANIZER line | |
| organizer_email | No | Your email address, written as the ORGANIZER so replies have somewhere to go. Leave it out and your shared business profile's email is used; with neither, the ORGANIZER line is omitted rather than filled with an address you improvised | |
| duration_minutes | Yes | Length in minutes, at most 1440 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden. It reveals that the tool writes a file, returns a path and start time, stores times in UTC, and has a monthly quota of 3 files. It does not mention overwrite behavior or edge cases like DST refusal, but the core behavioral traits are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences carry the essential usage instruction, return-value summary, timezone rationale, and quota limitation. Every sentence earns its place and the main action 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?
The rich input schema covers all parameters, and the description supplies the missing return-value and timezone context. There is no output schema, and the description does not specify the exact output format beyond 'path plus the start in UTC and in your zone', but it is still sufficient for an agent to call the tool successfully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 12 parameters in detail. The tool description adds no parameter-specific meaning beyond the overall write-an-.ics behavior, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'write a .ics for one meeting' and states the return values (path plus start time in UTC and local zone). This clearly distinguishes it from siblings like ics_import and events_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description begins with 'Call this tool to...' and clearly identifies the use case: writing a single calendar invite. It does not name alternative tools for importing or exporting events, so it lacks explicit exclusions, but the context is unmistakable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ics_forgetForget a calendarA
Remove one imported calendar by name and delete this server's local copy of its .ics, freeing a slot. Your own calendar and the source file are untouched. ics_import replaces a name in place.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The calendar name from calendars_list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses key side effects: deleting the local .ics copy, freeing a slot, and preserving both the user's own calendar and the source file. It does not mention irreversibility or error behavior, but the main behavioral traits are transparent.
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 earning its place: the action and side effect in the first, the boundary of what is untouched in the second, and the relevant sibling behavior in the third. 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?
For a single-parameter tool with no output schema, the description is complete: it tells what is removed, what is deleted, what is preserved, and that names can be replaced via ics_import. An agent has everything needed 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?
The schema already fully describes the 'name' parameter as 'The calendar name from calendars_list', so the description adds little parametric meaning beyond clarifying that it identifies an imported calendar. This matches the baseline 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Remove one imported calendar by name and delete this server's local copy of its .ics'. It clearly distinguishes this from sibling tools by specifying 'imported calendar' and noting that 'Your own calendar and the source file are untouched'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it applies to imported calendars and frees a slot, while explicitly contrasting behavior with ics_import ('replaces a name in place'). It does not fully enumerate when-not-to-use or all sibling alternatives, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ics_importImport a calendar (.ics)A
Call this tool to read a calendar export and keep it under a name. Give path (.ics file), text (contents), or url (public .ics/webcal feed; Pro). Google, Apple, Outlook exports read. Re-importing a name replaces it.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Public https:// or webcal:// .ics feed. Fetched once, only because you asked; Pro feature | |
| name | Yes | What to call this calendar, e.g. "work" or "family" | |
| path | No | Path to a .ics file on this machine | |
| text | No | The .ics file contents, pasted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It usefully discloses that re-importing a name replaces the existing entry and that URL feeds are a Pro feature, but it does not describe the return value, success/failure behavior, or persistence semantics beyond 'keep it under a name.'
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 compact sentences, front-loaded with the main action and no filler. Each sentence contributes a distinct piece of information: the operation, the input modes, provider compatibility, and overwrite 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?
Inputs and the important replace-on-reimport behavior are covered, and the schema documents all four parameters. However, because there is no output schema and no annotations, the agent is left without any stated return value or error semantics, which is a meaningful gap for an import operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The main description adds helpful context by naming path, text, and URL as input alternatives and noting Pro for URLs, but it does not clarify whether exactly one source is required or what happens if multiple are supplied.
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 action: read an .ics export and store it under a name. It clearly identifies the resource and avoids tautology, though it does not explicitly differentiate itself from sibling calendar tools like ics_create or ics_forget.
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?
Opens with a direct 'Call this tool to...' directive, so the primary use case is clear. It names the three input modes and flags the Pro requirement for URLs, but gives no explicit when-not-to-use guidance or routing among the many calendar-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoice_business_setSet your business detailsA
The ONE business profile for the whole suite: name, address, VAT id, bank details and defaults (currency, tax rate, terms, prefix, timezone). Saved to the shared profile every other server reads. Call it once, first.
| Name | Required | Description | Default |
|---|---|---|---|
| vat | No | Alias for default_tax_rate | |
| bank | No | Bank name / BIC | |
| iban | No | IBAN or account number for payment | |
| name | Yes | Your business or freelancer name | |
| No | Your own email address. Leave it out unless the user gave it: no server ever fills an email from anything but this profile or an explicit argument | ||
| phone | No | Your own phone number. Same rule as email: only if the user gave it | |
| vat_id | No | VAT / tax registration id | |
| address | No | Postal address, newlines allowed | |
| tax_rate | No | Alias for default_tax_rate | |
| timezone | No | IANA zone you work in, e.g. Europe/Warsaw. Shared with time-tracker (entries are stamped in it) and timezone (your home zone) | |
| vat_rate | No | Alias for default_tax_rate | |
| logo_path | No | Path to a PNG or JPG logo (Pro) | |
| invoice_prefix | No | Invoice number prefix, default INV (custom prefix is Pro) | |
| default_currency | No | ISO code, e.g. EUR, USD, JPY. Default EUR | |
| default_tax_rate | No | Default VAT percent applied to items without their own rate | |
| payment_terms_days | No | Default days until due. Default 14 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It does disclose a genuine side effect — persistence to a shared profile consumed suite-wide — and the one-time intent ('Call it once, first'). However, it does't state whether a subsequent call with only a subset of fields merges into or overwrites previously stored values, nor does it mention any return/confirmation, both of which matter for a write tool with 15 optional 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?
Two sentences with the scoping claim front-loaded. The content list, persistence fact, and usage directive each earn their place, and there is zero filler. The emphatic 'ONE' may be stylized but it functionally reinforces differentiation from sibling tools.
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-time setup call, the description covers scope, contents, persistence, and invocation order, and the rich schema covers parameter details. The remaining gaps are partial-update semantics on re-invocation (merge vs overwrite) and explicit routing relative to docx_business_set; with no output schema there is no hint at the return either.
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 baseline is therefore 3. All 16 fields are already documented in the schema, including alias relations (vat/tax_rate/vat_rate → default_tax_rate) and the conditional email/phone rules. The description adds only high-level category grouping (name, address, VAT id, bank details, defaults) and no per-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 clearly identifies the resource — the single suite-wide business profile — and enumerates its contents (name, address, VAT id, bank details, defaults). It differentiates from siblings by declaring itself 'THE ONE...for the whole suite' and stressing that 'every other server reads' it, which separates it from docx_business_set and prophile_set/prophile_get, though it never naes those alternatives.
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?
'Call it once, first' is an explicit temporal instruction placing this tool before any other invoicing work, and the claim that the profile is what 'every other server reads' tells the agent this is the shared setup entry point. No when-not-to-use guidance or naed alternatives are given, so it doesn't quite reach a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoice_createCreate an invoiceA
Create an invoice from line items and return the record with its next, never-reused number. unit_price is in MAJOR units; lines are rounded then summed. One currency per invoice. Free: 3 a month.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Line items. Amounts are held as integer minor units and every line is rounded first, then summed, so the printed lines can never disagree with the total. A line may carry its own currency | |
| notes | No | Free text printed under the totals | |
| client | Yes | Client name or id. Unknown names are added automatically | |
| currency | No | Invoice currency, 3-letter ISO code. Defaults to the one currency every item agrees on, else your business default. Every line on one invoice must agree with it; a mix is refused with the exact conversion argument to pass rather than billed as if it were one currency | |
| due_days | No | Days until due, defaults to your payment terms | |
| issue_date | No | YYYY-MM-DD, defaults to today | |
| discount_percent | No | Discount percent applied to every line before tax, 0-100 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It explains important non-obvious behavior: never-reused numbers, major-unit pricing, line rounding before summation, one-currency enforcement, and the 3-per-month free quota. It does not discuss broader side effects or permissions, but the core behavior is well covered.
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 with no filler. The purpose is front-loaded, followed by the most decision-relevant constraints: pricing units, rounding behavior, currency, and quota.
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 input schema is rich and covers all parameters, and the description names the key return behavior (the record with its never-reused number). There is no output schema and no annotations, so a bit more detail about the response shape or quota enforcement would make it fully complete, but what is present is sufficient for correct invocation in most cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description restates major units, rounding, and one-currency constraints that already exist in the unit_price, items, and currency schemas, adding no new parameter-level meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: "Create an invoice from line items" and adds the key output trait of a never-reused invoice number. This clearly distinguishes it from read/manage siblings like invoice_get, invoice_list, and invoice_from_hours.
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 phrase "from line items" gives clear context: this tool is for explicit itemized invoicing rather than hour-based invoicing, which separates it from invoice_from_hours. It does not explicitly name alternatives or state when-not-to-use, 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.
invoice_from_hoursInvoice from hoursA
Shortcut for the common case: bill one client for N hours at an hourly rate. Creates and returns a single-line invoice, converting the rate into target_currency when you supply fx_rates, and echoing back any entry_ids.
| Name | Required | Description | Default |
|---|---|---|---|
| rate | Yes | Hourly rate in major units, expressed in currency (or the business default currency) | |
| hours | Yes | ||
| notes | No | ||
| client | Yes | ||
| currency | No | Currency the rate is in. Without target_currency this is also the invoice currency | |
| due_days | No | ||
| fx_rates | No | Conversion rates, the same pair expense_to_invoice takes: fx_rates maps the RATE's currency to the number of target units one of it buys, meaning 1 unit of that currency = X units of target_currency, e.g. {"EUR": 1.1578} with target_currency "USD". You supply the rate; nothing here fetches or guesses one | |
| tax_rate | No | ||
| entry_ids | No | Time-tracker entry ids these hours came from (the entry_ids invoice_summary returns). Echoed back with the new invoice number so you can call entry_mark_billed | |
| issue_date | No | ||
| description | No | Line description, default 'Consulting services' | |
| round_total | No | D-R46: when converting with fx_rates, round the line's TOTAL to the exact converted amount instead of rounding the hourly rate to cents first. Default false keeps the D-R24 basis (unit price x hours always equals the printed line, so a rounding_note explains any drift from the exact conversion); true removes the drift but unit_price x hours may then be a cent or two off the printed total. | |
| target_currency | No | Issue the invoice in this currency instead, converting the rate. Needs fx_rates for the rate currency | |
| discount_percent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It clearly states the side effect ('Creates... an invoice') and the result behavior ('returns a single-line invoice, converting the rate... and echoing back any entry_ids'). This gives an agent a solid sense of what will happen, though it could also mention that the invoice is not automatically marked billed until entry_mark_billed is called.
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 essential use case, then the key behavioral details. Every sentence adds value without unnecessary elaboration or restating the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite a rich schema, the tool has 14 parameters, no annotations, and no output schema, so the description alone is not enough for an agent to fully understand the return shape or the full behavior across optional parameters. It explains the core case well but leaves significant context to be inferred from the 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?
The description adds meaning for the core fields client/hours/rate and the relationships around fx_rates and entry_ids, but schema coverage is only 50% and many optional parameters (notes, due_days, tax_rate, discount_percent, issue_date) are not addressed in the description. It partially compensates for the schema gap but does not fully carry the burden for all 14 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?
States a specific operation: 'Creates and returns a single-line invoice' for bill one client for N hours at an hourly rate. Differentiates from sibling tools like invoice_create by framing it as a 'Shortcut' for the common case, making its scoped purpose clear.
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 clear context for when to use it: 'Shortcut for the common case: bill one client for N hours at an hourly rate.' It also notes the conversion behavior when fx_rates is provided. It falls short of explicitly naming alternatives or saying when not to use it, but the context strongly implies its intended niche.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoice_generate_dueGenerate the invoices that are dueA
Create a real invoice in the invoice server for every schedule occurrence on or before as_of that has not been invoiced yet, and render each PDF. Returns what was created, what was skipped and what is still due.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of | No | YYYY-MM-DD, defaults to today. Every occurrence on or before this date that has not been invoiced is billed. Idempotent: one invoice per schedule per period, keyed by the occurrence date, so running it twice creates nothing the second time | |
| dry_run | No | List what would be created without creating anything. Default false. One run creates at most 60 invoices, oldest period first | |
| schedule_id | No | Only this schedule. Free and unlimited on every tier |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing side effects, and it does: it creates 'real' invoices, renders PDFs, and returns a summary of created, skipped, and still-due items. The parameter descriptions add idempotency, dry-run, and limit details, further improving transparency.
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 two tight sentences: it leads with the core behavior and follows with the return summary. No redundant phrasing or filler, and it is well-structured for quick agent parsing.
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 tool has no output schema, but the description names the three return categories and the parameter descriptions cover defaults, idempotency, dry-run, and the 60-invoice cap. This is sufficient for an agent to invoke the tool correctly, though return structure details are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already fully documented in the schema. The main description does not add parameter-level meaning beyond the schema, which matches the baseline of 3 for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: create real invoices for schedule occurrences on or before as_of that haven't been invoiced, and render PDFs. This clearly identifies the resource and behavior, distinguishing it from siblings like invoice_create or invoice_from_hours by focusing on schedule-driven batch generation.
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 implied: this is for generating due invoices from schedules, especially in bulk. However, it does not explicitly state when to choose this over alternatives like invoice_create or invoice_from_hours, nor does it mention any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoice_getGet one invoiceA
Return the full stored record for one invoice number, including every line, tax breakdown, and the balance still open after any credit note issued against it (see credited_minor).
| Name | Required | Description | Default |
|---|---|---|---|
| number | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does well by disclosing not just that it returns a record but also the nested richness of that record, including the unusual credit-note-adjusted open balance. It does not discuss error cases or permissions, but the read-only nature is clear from 'Return'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence that efficiently conveys the core purpose and key return-value details. The parenthetical '(see credited_minor)' is somewhat cryptic and unexplained, slightly reducing clarity, but overall there is no wasted wording.
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 single-parameter get operation with no output schema, the description covers the essential information an agent needs: what it returns, the scope ('one invoice number'), and notable computed fields. It could be more complete with explicit not-found behavior, but the core call context is adequately covered.
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 only documents 'number' as a string with zero description coverage. The tool description adds that it identifies the invoice, which is minimal but useful; it does not specify format, uniqueness requirements, or how to discover valid invoice numbers.
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 uses a specific verb ('Return') with a clear resource ('the full stored record for one invoice number'), making the tool's purpose unmistakable. It also highlights distinctive content (line items, tax breakdown, credit-note-adjusted balance) that separates it from siblings like invoice_summary or invoice_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you have an invoice number and need the full record rather than a summary. However, it does not explicitly contrast it with alternatives such as invoice_summary, invoice_list, or invoice_pdf, leaving routing decisions partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoice_listList invoicesA
List invoices by number: client, dates, currency, subtotal, discount, tax lines, total, status, paid, credited and the balance still due after any credit note. Filter by status, client and date range.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | YYYY-MM-DD inclusive | |
| from | No | YYYY-MM-DD inclusive | |
| client | No | ||
| status | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full responsibility for behavioral disclosure. It does convey that this is a read-only listing action and details the output fields including the computed 'balance still due after any credit note.' However, it omits operational behavior such as pagination, ordering, default range when no filters are given, and whether results are limited. This is acceptable but not thorough.
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 split into two informative sentences: one for the returned fields and one for the filter usage. It front-loads the core purpose and contains no filler or obvious redundancy. The phrase 'by number' is slightly confusing but the overall structure is still efficient and scannable.
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 low complexity (four optional, simple parameters; no nested objects; no output schema), the description covers the returned fields and filter combinations well enough for an agent to form a basic call. It does not mention pagination, sorting, or defaults, but for a straightforward list tool these omissions are not fatal. The description compensates for the absence of an output schema by documenting the response fields.
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 acknowledges the three filter dimensions (status, client, date range) in a way that maps to the schema parameters, adding some context beyond parameter names. Yet it does not clarify the `client` format or the meaning of the `status` values beyond what the schema enum already shows, and the phrase 'List invoices by number' confusingly suggests a filter that does not exist among the 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 clearly states 'List invoices' as the verb and resource, and enumerates the returned fields (client, dates, currency, subtotal, discount, tax lines, total, status, paid, credited, balance). It does not explicitly distinguish this from sibling tools like invoice_get or invoice_pdf, so it falls short of a full 5, but the purpose is not ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for basic usage: list invoices and filter by status, client, and date range. However, it does not explain when to prefer this tool over alternatives such as invoice_get, invoice_pdf, or overdue_report, nor does it provide any exclusion criteria. The intended usage is implied rather than fully spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoice_mark_paidMark an invoice paidA
Record a payment on one invoice. amount is in MAJOR units and ADDS to what is paid, never replaces it; omit it to settle the rest. An overpayment is refused, naming the open balance.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | Amount received in major units, ADDED to what is already paid on this invoice. Omit to pay off the remaining balance in full | |
| method | No | How it was paid, e.g. bank transfer, card. Stored on this payment's row | |
| number | Yes | ||
| paid_date | No | YYYY-MM-DD, defaults to today | |
| reference | No | Bank reference or transaction id for this payment. Stored on this payment's row |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it delivers: it discloses the major-units convention, the additive (never replace) semantics, the omit-to-settle behavior, and the overpayment-refusal error including that the open balance is named. This is rich behavioral disclosure for a mutating tool with zero annotation coverage, though it stops short of describing what a successful call returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero filler. The core action is front-loaded, and the most decision-relevant clarifications (units, add semantics, refusal behavior) are packed into the two supporting sentences. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutating tool with no output schema, the description covers the payment semantic well (which is the riskiest part of the call) but does not mention the return shape of a successful payment or what information the agent gets back (e.g., remaining balance). The call semantics are adequately complete; the response semantics are left open.
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 high at 80%, and the schema already documents the additive/omit-to-settle behavior of 'amount'. The description re-asserts the additive semantics and adds the major-units convention and the overpayment-refusal nuance, which is genuine added value, but most parameter meaning is already carried by the schema, so it lands at baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action — 'Record a payment on one invoice' — with a clear verb, resource, and scope. It is unambiguous against siblings like invoice_create, invoice_get, invoice_list, and invoice_pdf, which all perform clearly different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No alternatives are named and no explicit when-to-use vs when-not-to-use guidance is given. The 'one invoice' scoping implies single-invoice behavior, but nothing tells the agent when to reach for this tool over related siblings or how it relates to invoice_create (which could also affect invoice state).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoice_pdfRender invoice PDFA
Call this tool to write one stored invoice as an A4 PDF and return the path: issuer, BILL TO, dates, items, taxes and totals. Free stamps a credit line and no logo; Pro renders it unbranded with your logo.
| Name | Required | Description | Default |
|---|---|---|---|
| number | Yes | Invoice number to render, as returned by invoice_create | |
| out_path | No | Where to write the PDF; defaults to <data dir>/pdf/<number>.pdf. The page carries the issuer block, the BILL TO client block, dates, an item table with wrapped descriptions, subtotal, discount, one tax line per rate, the total, payment details and notes, and every money value on it carries its currency code. Use a .pdf path: the bytes written are always PDF |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It reveals that the tool writes a PDF file, returns the path, and includes branding differences between Free and Pro plans. However, it does not disclose overwriting behavior, error conditions (e.g., nonexistent invoice), or any side effects beyond file creation, leaving some behavioral aspects undocumented.
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 two sentences with zero filler. The first sentence front-loads the primary purpose and content, and the second adds the branding distinction. Every word earns its place, making it highly concise and well structured.
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 tool's simplicity (2 params, no output schema) and the rich schema descriptions, the description provides sufficient context: what it does, what the PDF contains, and the output path. It omits edge-case behaviors like file overwrite, but for initial selection and correct invocation of a file-writing operation, this is reasonably 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 input schema already covers 100% of parameters with detailed descriptions: 'number' is specified as returned by invoice_create, and 'out_path' includes defaults, content details, and a .pdf requirement. The description only echoes the content list and adds no parameter-specific nuance beyond what the schema provides. With complete schema coverage, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('write one stored invoice as an A4 PDF') and the resource (stored invoice), and enumerates the PDF content (issuer, BILL TO, dates, items, taxes, totals). This clearly distinguishes it from sibling tools like invoice_get or invoice_create, which handle data retrieval and creation rather than file generation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to call the tool ('to write one stored invoice as an A4 PDF'), providing clear context. It does not mention alternatives or exclusions, but the primary purpose is unambiguous enough that an agent would not confuse it with other invoice-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoice_summaryInvoice summaryA
Turn tracked billable time into invoice lines for one project: hours, hourly rate, amount per task and the total, one line per rate so two rates never average. Hours already marked billed are left out. Free: last 7 days.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | ISO date/time end of the billing period. Free covers the last 7 days; Pro invoices any period from the full history. | |
| from | Yes | ISO date/time start of the billing period. Free covers the last 7 days; Pro invoices any period from the full history. | |
| project | Yes | Project or client to invoice | |
| unbilled_only | No | Default true: hours already put on an invoice (entry_mark_billed) are left out, so the same hours are never billed twice. Pass false to see the whole period including invoiced work. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it discloses non-obvious behavior: already-billed hours are excluded, rates are never averaged, and the free plan is limited to the last 7 days. It does not state auth expectations or explicitly confirm read-only status, but it provides enough safety-relevant behavior for an agent to avoid misuse.
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 front-loaded sentences deliver the core action, scope, output shape, and constraints with no filler. The fragment 'Free: last 7 days' is compact but informative.
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?
Without an output schema, the description compensates by naming the output fields and aggregation rule. It does not spell out pagination or exact response formatting, but the core invocation details are recoverable from the description plus the fully described input 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 description coverage is 100%, so the parameters are already fully documented. The description adds high-level context such as the free-period limit and line-per-rate output, but no per-parameter meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening phrase 'Turn tracked billable time into invoice lines for one project' names a concrete verb, resource, and scope. The additional behavior — one line per rate so two rates never average — clearly distinguishes it from broad reporting or export siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never states when to use invoice_summary versus siblings like entry_list, report, or export_csv. It describes what the tool does but gives no when-to-use, when-not-to-use, or alternative routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
license_activateA
Activate one Pro key on every connected server in a single call and return which accepted it. Any rejection fails the whole call, because one server on Pro and another free is invisible to the user.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | License key from the checkout confirmation page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It explicitly reveals atomicity ('Any rejection fails the whole call'), the reason for that design, and the fact that the tool returns which servers accepted the key. It could mention side effects or permissions, but the key behavioral trait is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The first sentence front-loads action, scope, and result; the second justifies the failure behavior. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description fully explains what happens, what the call returns, and the failure semantics. The rationale for the all-or-nothing design is a strong contextual addition that helps the agent predict 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?
The schema already describes the key parameter fully ('License key from the checkout confirmation page'), so the baseline is 3. The description adds 'Pro' context and the activation scope, but does not add new meaning about the parameter itself beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Activate'), names the exact resource ('one Pro key'), defines the scope ('every connected server'), and states the outcome ('return which accepted it'). This clearly distinguishes it from sibling tools like license_status, which is a status check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the activation use case obvious and explains the all-or-nothing behavior, but it does not explicitly name alternatives or state when not to use it. A clear context is present, but there are no exclusionary guidelines.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
license_statusA
Report the licence tier of every server connected to this bundle, one row each, plus the single checkout URL that upgrades them all. A server that failed to start is reported with its error.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool returns one row per server, includes a single checkout URL, and reports errors for servers that failed to start. This is meaningful behavioral context beyond a simple 'get status' statement. It doesn't mention whether the operation is read-only or has side effects, but the description's wording ('Report') strongly implies a read 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?
Two sentences, no filler. The core output is front-loaded ('licence tier of every server'), followed by the unique checkout URL detail and the error-reporting behavior. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless status tool with no output schema, the description covers the key output elements: per-server rows, the upgrade URL, and error reporting. It doesn't specify the exact format of the license tier values or the response structure, but given the tool's simplicity and zero parameters, the description is largely complete. A minor gap is not stating whether the checkout URL is always present or only when upgrades are available.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema provides no parameter documentation. The description compensates by explaining what the output contains (per-server license tier, checkout URL, error messages), which is the relevant semantic content for a parameterless tool. Baseline 4 for 0 params is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Report') and resource ('licence tier of every server connected to this bundle'), and clearly distinguishes itself from siblings like license_activate by focusing on status reporting rather than activation. It also adds the unique detail of a single checkout URL and error reporting for failed servers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when you need a status overview of all servers' license tiers and the upgrade URL. It doesn't explicitly name alternatives or exclusions, but the context of sibling tools (license_activate) makes the use case clear enough. A brief 'use this instead of license_activate for status' would push it to 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
next_eventNext eventA
The first event not yet started, within the next 366 days, across every imported calendar or one you name. Returns title, times in your zone, how long until it starts, location, attendees and its id.
| Name | Required | Description | Default |
|---|---|---|---|
| calendar | No | One calendar name; default every imported calendar |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it specifies the selection criterion (not started, within 366 days), scope (all imported calendars or named one), and return contents including timezone behavior. It does not address edge cases like 'no event found' or error handling, but the core behavior is clearly disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence states the core behavior first, then the optional scope, then the return fields. There is no filler or redundancy, and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only tool with no output schema, the description covers the core details an agent needs: what event is selected, how calendar scoping works, and what fields come back. It omits failure behavior and exact time formatting details, but those are not essential for this tool's straightforward use.
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% for the single calendar parameter, so the schema already documents what the parameter does. The description adds only the phrase 'or one you name,' which restates the schema's meaning without providing new semantic detail. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description precisely defines what the tool returns: the first event not yet started within 366 days, either across all imported calendars or a specified one. It also enumerates the returned fields. This clearly distinguishes it from sibling tools like events_list and events_search, which handle broader listing and searching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the obvious use case—get the next upcoming event—but it does not explicitly say when to choose this tool over events_search, events_list, or free_busy. No alternatives or exclusions are mentioned, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nowCurrent time in zonesA
The current time in one or more places, each with the zone it resolved to and the local date, time and offset, under one UTC instant. Accepts IANA zones, cities, countries and abbreviations.
| Name | Required | Description | Default |
|---|---|---|---|
| zones | No | Places or IANA zones, e.g. ['Warsaw','New York','India'] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden alone and does a good job: it discloses that zones are resolved, that all results share one UTC instant, and what local fields are returned. It could note what happens for invalid/unrecognized places, but for a simple read-only current-time tool this is solid.
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 concise sentences front-load the core behavior and output shape, then add input flexibility. 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?
For a simple read-only tool with one optional parameter and no output schema, the description covers the return contents and accepted input forms. It does not state what happens when zones is omitted or when an input is unrecognized, 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 covers the single parameter with a clear example, and the description adds value by listing accepted input forms (IANA zones, cities, countries, abbreviations) and explaining that multiple places can be queried at once.
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 what the tool does: returns the current time for one or more places, with each place's resolved zone, local date, time, offset, and a shared UTC instant. This is specific and distinguishes it from conversion or DST tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the use case obvious ('current time in one or more places') and clarifies accepted input types (IANA zones, cities, countries, abbreviations), but it does not explicitly contrast it with siblings like convert_time or dst_changes, so an agent must infer when to pick this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
overdue_reportOverdue reportA
List every invoice not paid in full whose due date has passed, worst first, with days overdue and the amount, then a total per currency. Free. Use invoice_list for everything still open.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of | No | YYYY-MM-DD, defaults to today |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It clearly states the tool is a free listing operation and discloses output structure (worst-first ordering, days overdue, amount, total per currency). It could be more explicit about having no side effects, but 'List' strongly implies a read-only report.
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 two short sentences. The first sentence front-loads the core behavior, and the second adds cost and sibling guidance. No redundant phrases or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single optional parameter, no output schema, and no annotations, the description is complete. It covers the scope, ordering, displayed fields, total structure, cost, and the relevant sibling alternative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the only parameter 'as_of' already has a clear description and default. The tool description adds no extra parameter detail, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('every invoice not paid in full whose due date has passed'), with clear output details. It also distinguishes itself from invoice_list by directing open invoices to that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names the alternative tool ('Use invoice_list for everything still open') and implies when this tool is appropriate: overdue, unpaid invoices. This gives the agent a clear routing rule without needing to inspect schemas.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
overlapDaily working-hours overlapB
The window each day when every listed place is inside working hours. Computed on a real date, so a DST week that widens or narrows the overlap is reflected.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date to compute on, YYYY-MM-DD, default today | |
| zones | Yes | Places, e.g. ['Warsaw','New York','Bangalore'] | |
| work_end | No | Local working day end, default 17:00 | |
| work_start | No | Local working day start, default 09:00 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the important behavioral trait that computation uses a real date so DST changes are reflected. However, it does not mention what happens when no overlap exists, whether holidays are considered, or the output format, leaving notable gaps.
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 two sentences with no filler. The core definition is front-loaded, and the DST nuance is a meaningful addition. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The core concept is clear and the schema covers all parameters, but there is no output schema and no annotation coverage. The description does not explicitly state the return shape or edge-case behavior for impossible overlaps, so it is adequate but not fully 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?
Schema description coverage is 100%, so the parameters are already well documented with names, defaults, and examples. The description adds only the interpretation that 'listed place' corresponds to the zones parameter. This meets the baseline but does not go beyond it.
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 defines what is computed: the daily window when every listed place is within working hours. It is specific about the resource and scope, and the DST qualifier adds precision. It lacks an explicit verb and does not contrast with sibling time tools, so it barely misses 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?
No guidance is given about when to use this tool versus alternatives such as find_meeting_slots, free_busy, or business_days. The agent must infer from the description that this is for working-hours overlap across zones. No exclusions or alternative conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pdf_countCount pages in several PDFsA
Page count per file plus the total, for any number of PDFs, with how many were readable. A file that cannot be read is reported on its own row and the others still count. Read-only. Free and unlimited.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | Paths to the PDF files |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It explicitly states the operation is read-only, describes how unreadable files are handled (reported on their own row without blocking others), and notes the service is free and unlimited. This gives an agent a solid behavioral model even without annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it opens with the core result, then covers failure behavior, then the safety and pricing traits. Every sentence adds information, and there is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, low-complexity tool, the description covers the essential operational details: per-file counts, total, readable count, and behavior on unreadable files. It does not specify the exact return format, but no output schema exists and the described behavior is sufficient for an agent to predict the result correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers the single parameter fully with the description 'Paths to the PDF files'. The tool description reinforces that any number of PDFs is supported but does not add new semantic details about path format or file handling, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: counting pages in PDFs, and specifies the exact outputs: per-file page count, total, and readable count. It does not explicitly differentiate this tool from sibling tools like pdf_pages or pdf_info, but the batch and aggregate behavior is clear enough that the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: when you need page counts for many PDFs at once, including a total and resilience to unreadable files. However, it does not name alternatives such as pdf_pages or pdf_info, nor state when not to use this tool, so the usage guidance remains implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pdf_infoInspect a PDFA
Call this tool to inspect a PDF: page count, page sizes in points/mm, paper name, metadata (title, author, producer, dates) and whether it is encrypted. Read-only, never modifies the file. Free tier: unlimited.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the PDF file. ~ is expanded; a relative path is resolved against the working directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states 'Read-only, never modifies the file,' which is critical for safe agent decisions. It also mentions the output scope and encryption detection, giving useful behavioral context beyond a bare instruction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff. The direct 'call this tool' instruction is front-loaded, followed by a compact list of result categories and a clear safety guarantee. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only inspection tool, the description is largely complete: it specifies the input, the output content, and the safety behavior. There is no output schema, so a bit more detail about the returned structure could help, but the listed fields are sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'path' is fully documented in the schema with 100% description coverage, so the baseline of 3 applies. The tool description does not add additional parameter detail, but none is necessary because the schema already explains path resolution and expansion.
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 uses a specific verb ('inspect') and a clear resource ('a PDF'), then enumerates the exact information returned: page count, page sizes, paper name, metadata, and encryption status. This distinguishes it from sibling PDF tools like pdf_merge, pdf_split, or pdf_text, which perform different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The opening line, 'Call this tool to inspect a PDF,' explicitly states when to use it. It does not name exclusions or explicitly compare to alternatives such as pdf_count, but the scope is clear enough that an agent can reliably choose it for read-only inspection rather than transformation or text extraction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pdf_mergeMerge PDFs into one fileA
Call this tool to join several PDFs into one, in the order given. Page sizes are kept as-is, so a merged file may have mixed sizes, and the answer says so. Inputs are never modified. Free tier: up to 5 files per merge.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | The PDFs to join, in the order they should appear | |
| out_path | Yes | Where to write the merged PDF | |
| overwrite | No | Replace out_path if a file is already there. Default false: an existing file is never overwritten |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses key behaviors: 'Page sizes are kept as-is', 'Inputs are never modified', and 'Free tier: up to 5 files per merge'. It does not mention error handling or output details, but these are less critical for a merge 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 concise, consisting of three sentences that cover purpose, behavior, and constraints without unnecessary details. It is well-structured and front-loaded with the primary action.
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 merge tool, the description provides enough context for an agent to call it correctly: it specifies the order, the output file, and the free tier limit. It lacks details on error conditions or file format specifics, but these are not essential for a basic operation and the schema covers parameter-level details.
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% for all three parameters (paths, out_path, overwrite). The main description does not add additional meaning beyond the schema; it only reinforces the order for paths. Since the schema fully documents each parameter, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with the verb 'join' and the resource 'PDFs', specifying that it combines several PDFs into one in the given order. This distinguishes it from sibling tools like pdf_split, pdf_rotate, or pdf_stamp.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context by saying 'Call this tool to join several PDFs into one' and notes the order of files. However, it does not explicitly compare with alternatives or state when not to use it, though the purpose is sufficiently distinct from siblings like pdf_split.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pdf_pagesExtract pages into a new PDFA
Call this tool to pull selected pages into one new PDF, in the order written: "2,4-6" gives four pages. Asking for a page twice copies it twice. The input is never modified. Free tier: files up to 30 pages.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | The source PDF | |
| pages | Yes | 1-based pages and ranges to keep, in output order, e.g. "2,4-6" or "5,1,1" | |
| out_path | Yes | Where to write the extracted PDF | |
| overwrite | No | Replace out_path if it exists. Default false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden of behavioral disclosure. It usefully states that the input PDF is never modified, that duplicate page requests are copied twice, and that the free tier supports files up to 30 pages. These are genuinely helpful behavioral traits beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, all substantive: purpose, ordering example, duplicate behavior, input safety, and a size limit. The primary action is front-loaded, and no word 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?
For a four-parameter tool with no output schema, the description covers the essential operational semantics: how page selection works, why duplicates matter, and that the source is untouched. The optional overwrite flag is already explained in the schema. It does not discuss failure modes, but that is acceptable given the tool's simplicity.
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 each parameter already has a description. The description adds value on top by illustrating the count interpretation ('2,4-6' gives four pages) and emphasizing duplicate copying behavior for the pages parameter. This reinforces and clarifies the schema rather than simply repeating it.
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 opens with an explicit verb and resource: 'pull selected pages into one new PDF'. This clearly states the action and distinct scope, differentiating it from merge-all or split-into-multiple tools like pdf_merge or pdf_split. The detail 'in the order written' further clarifies a unique behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a direct call-to-action ('Call this tool to pull selected pages into one new PDF') and a concrete page-range example, so the agent knows exactly when to invoke it. It does not explicitly name alternative tools or exclusion criteria, but the context is clear enough to route the call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pdf_reorderReorder the pages of a PDFA
Call this tool to write a new PDF with pages in the order you give. The order must name every page exactly once, so nothing drops by accident; use pdf_pages for a subset. Pro.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | The source PDF | |
| order | Yes | The 1-based page numbers in their new order, e.g. [3,1,2] for a three-page file. Every page must appear exactly once | |
| out_path | Yes | Where to write the reordered PDF | |
| overwrite | No | Replace out_path if it exists. Default false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals that a new PDF is written and warns that every page must appear exactly once to avoid drops. But with no annotations, it does not disclose failure behavior, whether the original file is left untouched, or whether out_path can overwrite an existing file. The core behavior is clear, but the mutation safety profile is incomplete.
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 short and front-loaded with the key purpose and constraint. The trailing 'Pro.' appears to be a truncated or meaningless fragment, which slightly hurts polish, but the overall structure is efficient and scannable.
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 reorder operation, the description gives the essential information: write a new PDF, preserve all pages exactly once, and use pdf_pages for subsets. However, with no output schema or annotations, it leaves gaps around return values, error cases, and out_path behavior. It is adequate but not fully 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?
Schema coverage is fair: path and order have useful descriptions, and order is well explained. The description adds the idea of 'write a new PDF' but does not clarify out_path semantics beyond what the schema's type implies. It does not explain overwrite behavior or whether out_path may equal path.
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 uses a specific verb and resource: 'write a new PDF with pages in the order you give.' It clearly identifies the function and distinguishes it from pdf_pages, which handles subsets. The purpose is unambiguous and easy to act on.
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 when to call the tool and directs the agent to pdf_pages for subset operations. It also clarifies the exact ordering constraint. However, it does not mention other alternatives like pdf_merge or pdf_split, though those are less directly related.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pdf_rotateRotate pagesA
Call this tool to turn pages by a multiple of 90 degrees, clockwise for positive. Rotation is added to whatever the page already had, for a sideways scan. Writes a new file. Free tier: files up to 30 pages.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | The source PDF | |
| pages | No | Which pages to turn, e.g. "1" or "2,4-6". Omit for every page | |
| degrees | Yes | 90, 180, 270 or -90. Positive turns clockwise. Added to the page's existing rotation | |
| out_path | Yes | Where to write the rotated PDF | |
| overwrite | No | Replace out_path if it exists. Default false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It explicitly says rotation is added to existing rotation, that a new file is written rather than modifying the source, and it adds the free-tier 30-page limit. It does not mention error behavior or return value, but the core side effects are well covered.
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, front-loaded with the primary purpose, and each sentence adds distinct value: action/sign, use case, output behavior, and free-tier limit. No filler or redundant restating of 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 5-parameter tool with no annotations and no output schema, the description covers the essential behavioral facts needed to select and call it: cumulative rotation, new-file output, and page limit. It could go further on overwrite behavior and return values, but the schema already documents overwrite and the invocation requirements are adequately covered.
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 already documents all five parameters and their meanings, so the baseline is 3. The description mostly repeats degrees and cumulative rotation that the schema already states; it adds only the general note that a new file is written.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: turn PDF pages by multiples of 90 degrees, with clockwise positive. It also conveys the key semantic that rotation is additive to existing page rotation, which distinguishes it from page-reordering or splitting tools, though it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete context: fixing a sideways scan. This is clear enough for an agent to decide when rotation is needed, but it does not name alternative tools or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pdf_splitSplit a PDF into several filesA
Call this tool to write one new PDF per range. Ranges are 1-based and may be open-ended: "1-3,5,7-" gives pages 1-3, page 5, and 7 to the end. The input is never modified. Free tier: files up to 30 pages.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | The PDF to split | |
| ranges | Yes | Comma-separated 1-based page ranges, e.g. "1-3,5,7-". An open-ended range runs to the last page | |
| overwrite | No | Replace existing outputs. Default false: nothing is overwritten and nothing is written at all if any target exists | |
| out_path_pattern | Yes | Output path with a placeholder: {n} is the part number (1, 2, 3...), {range} is the range itself (e.g. 1-3), {name} is the input file name without .pdf. Example: ~/out/{name}-{range}.pdf |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden: it discloses that the input is never modified, that it writes one new PDF per range, that overwrite defaults to false, and that nothing is written if any target exists.
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 short, front-loaded with the action, and uses compact examples. No redundant sentences.
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 tool with no output schema, the description is complete: it defines range syntax, output naming with placeholders, overwrite behavior, and constraints. An agent has enough information to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every parameter has a meaningful description: ranges syntax, overwrite default, and out_path_pattern placeholders with an example. This exceeds the baseline for covered 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 explicitly says 'write one new PDF per range', a specific action on a specific resource, and the 1-based range examples make the split behavior unambiguous. This distinguishes it from siblings such as pdf_merge and pdf_reorder.
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 to call the tool ('to write one new PDF per range') and gives a concrete range example. It does not explicitly contrast with alternative PDF tools, so it falls short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pdf_stampStamp text on a PDFA
Call this tool to draw a word such as PAID or DRAFT across the pages, in a colour and position you choose. Writes a new file; input untouched. Free tier: the PAID and DRAFT presets in their preset colours.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | The source PDF | |
| text | Yes | What to stamp. PAID and DRAFT are presets with their own colour; any other text is Pro | |
| color | No | Hex code such as #1b7f3b, or a name: red, green, blue, black, gray, orange, purple. Pro | |
| pages | No | Which pages to stamp, e.g. "1" or "2,4-6". Omit for every page | |
| opacity | No | 0 to 1. Default 0.35 in the centre, 0.85 in a corner | |
| out_path | Yes | Where to write the stamped PDF | |
| position | No | Where on the page. Default center, which is drawn on the 45-degree diagonal like a real stamp | |
| font_size | No | Point size. By default the stamp is sized to fit the page width | |
| overwrite | No | Replace out_path if it exists. Default false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the disclosure burden and handles the main safety trait well: it writes a new file and leaves input untouched. It also reveals the free-tier restriction on PAID/DRAFT presets. It does not mention overwrite consequences or billing behaviour for custom text, though the schema partially covers those.
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, with the core action front-loaded and no filler. The free-tier sentence earns its place because it changes how the caller should pick 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 9-parameter tool with no annotations and no output schema, the description covers the primary use case and the key non-destructive behaviour, while the schema documents all parameters. It could be more complete about return values and what happens when overwrite is false, but the high schema coverage keeps it 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?
Parameter coverage in the schema is 100%, so the description only needs to add non-schema context. It adds useful framing around text presets and colours, but largely restates what the text/colour parameter descriptions already say. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete action: draw a word such as PAID or DRAFT on PDF pages with chosen colour and position. It clearly identifies the resource and operation, but it does not explicitly differentiate it from the similar sibling pdf_watermark_business, so it misses the top bar.
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?
"Call this tool to draw..." gives a direct use context, and the free-tier note tells the agent when preset behaviour applies. It does not state exclusions or name alternatives such as pdf_watermark_business, so it is clear but not fully routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pdf_textRead the text of a PDFA
Call this tool for best-effort text extraction from standard-font PDFs. Returns nothing for a scan (no OCR), or glyph indices for a custom-encoded font, and says which case applies. Read-only. Free tier: unlimited.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | The PDF to read | |
| pages | No | Which pages, e.g. "1" or "2,4-6". Omit for every page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It states the tool is read-only, indicates it returns nothing for scans, describes how custom-encoded fonts produce glyph indices, and notes that it reports which case applies. It also discloses the free-tier limit, giving an agent good expectations about behavior and constraints.
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 compact and front-loaded: it opens with a direct instruction, then adds the key limitations and the safety attribute. Every sentence contributes information relevant to invoking the tool correctly or understanding its outputs. The free-tier note is brief and does not bloat the 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?
Given the simple two-parameter schema and no output schema, the description covers the essential edge cases: scans, custom-encoded fonts, and read-only behavior. It could be slightly more explicit about the exact return format, but 'says which case applies' partially addresses that. Overall, this is a complete enough description for an agent to select and invoke 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?
The input schema has 100% description coverage for both parameters: 'path' is described as the PDF to read and 'pages' includes an example format and defaults to every page if omitted. The description adds no additional parameter-level meaning, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('best-effort text extraction') and the resource ('standard-font PDFs'), and clarifies it is read-only. This distinguishes it from sibling PDF tools like pdf_info, pdf_merge, or pdf_pages by focusing on extracting text content. The title and description together leave no ambiguity about the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to call the tool ('for best-effort text extraction from standard-font PDFs') and gives clear exclusions by noting scans return nothing and that no OCR is performed. It does not explicitly name an alternative tool to use for scanned or non-standard PDFs, but the context is clear enough for an agent to select this tool appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pdf_watermark_businessStamp your business details in the footerA
Call this tool to put your business name and VAT id in the footer of every page, from the shared profile mcp-invoice and mcp-docx write. Use it before sending a document out. Pro.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | The source PDF | |
| pages | No | Which pages, e.g. "1". Omit for every page | |
| out_path | Yes | Where to write the footed PDF | |
| overwrite | No | Replace out_path if it exists. Default false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does add useful context: the data source (shared profile from mcp-invoice and mcp-docx), the placement (footer), and page coverage (every page). However, it does not disclose whether the source file is modified vs. a new file is written, and the trailing 'Pro.' hints at licensing/feature gating without explaining it — a meaningful transparency gap for a write 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 core guidance is compact — two substantive sentences plus a one-word tail. However, 'Call this tool to' is filler that restates the title, 'from the shared profile mcp-invoice and mcp-docx write' is grammatically tangled, and the standalone 'Pro.' contributes nothing actionable. The useful information is front-loaded but the presentation is sloppy.
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 writing tool with no annotations and no output schema, the description covers the core what and when adequately, and the shared-profile sourcing explains where the business data comes from. Gaps remain: the ambiguous 'Pro.' licensing implication, no reassurance about whether the source PDF is left untouched, and no contrast with pdf_stamp for generic watermarking needs. It is sufficient for a capable agent to invoke correctly, but not 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?
Schema description coverage is 100%, so the schema fully documents all four parameters (path, out_path, pages, overwrite), establishing a baseline of 3. The description adds the high-level semantic context that the watermark content is business name and VAT id, but it adds no per-parameter meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (put business name and VAT id in the footer of every page) and identifies a clear resource (PDF documents). The business-specific scope and the shared-profile source implicitly differentiate it from sibling pdf_stamp, though that contrast is not explicit. The awkward phrasing of 'from the shared profile mcp-invoice and mcp-docx write' and the cryptic trailing 'Pro.' slightly cloud an otherwise clear 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?
The description gives explicit usage timing: 'Use it before sending a document out.' It also implies the condition for use — documents that should carry the business identify from the shared profile. It does not name alternatives (e.g., pdf_stamp) or state when not to use this tool, 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.
price_add_manualRecord a price by handA
Call this tool to store a price you read yourself where a shop blocks fetching: it creates the watch if new and returns the amount and the observation count. An unreadable price is refused. Free: 3 watches.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Product page URL | |
| label | No | Short name for this item | |
| price | Yes | Price as shown, for example 1299.00 or 1.299,00 | |
| currency | No | ISO code such as USD or EUR |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full disclosure responsibility. It clearly states side effects (creates the watch if new), return data (amount and observation count), failure behavior (unreadable price refused), and a quota (3 watches). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver purpose, use case, side effects, failure mode, and quota. Front-loaded with the action, 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 usage, side effects, return values, failure mode, and quota. Minor gap: it does not explicitly state whether adding a second price for an existing watch overwrites or creates a new observation, though 'observation count' implies the latter.
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 each parameter already has a description. The tool description adds no direct parameter-level meaning beyond that, which meets the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource ('store a price') and distinguishes this tool from automatic fetching by saying it is for prices you read yourself when a shop blocks fetching. It also clarifies watch creation behavior.
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 condition for use: manual entry when the shop blocks fetching. It also states that unreadable prices are refused. It does not explicitly name an alternative sibling, but the context is strong enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
price_checkCheck a price nowA
Call this tool for any product URL; fetching the page with a generic web tool returns raw HTML without the price. Reports price, currency, title and confidence, and the change since the last check. It creates no watch.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Product page URL, including https:// |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, but the description itself discloses the core behavior: it fetches the page, extracts and reports price/currency/title/confidence, computes the change since the last check, and creates no watch. This covers side effects and output expectations, far beyond a bare 'check price' statement.
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 earning its place: the call instruction and comparison, the output list, and the key side-effect. The most important usage directive is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema and no annotations, this description gives an agent everything needed to invoke it correctly and interpret results. It names return fields, states the non-persistent side effect, and explains why the tool exists despite generic web fetching.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already describes the url parameter as 'Product page URL, including https://'. The description adds only generic framing ('any product URL') without new syntax or format details, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Call this tool'), a concrete resource ('any product URL'), and enumerates the returned data (price, currency, title, confidence, change since last check). The closing note 'It creates no watch' differentiates it from watch-related siblings, and the output list separates it from price_history/price_add_manual.
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 instructs when to call it: whenever a product URL needs a price, and contrasts it with a generic web tool that returns raw HTML. It does not name specific siblings as alternatives (e.g., 'use watch_add if you want monitoring'), so it gets a 4 not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
price_historyPrice historyA
Call this tool to list one watch's stored observations, oldest to newest, each with price, currency, source and confidence, plus min and max. Nothing is fetched. Free shows the last 30.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Watch id | |
| url | No | Watch URL | |
| limit | No | Maximum observations to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure, and it does: it states data is stored rather than fetched, defines ordering, lists returned fields, includes min/max, and mentions the free 30-observation limit. It could add what happens when both id and url are omitted, but the disclosed behavior 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?
Three short sentences, all information-bearing, with the primary purpose front-loaded. There is no repetition of schema field names or filler 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-only history tool with no output schema, the description covers return content, ordering, storage behavior, and free-tier limits. Minor gaps remain around parameter selection (id vs. url) and exact limit behavior, but overall the agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds minor context beyond the schema, such as implying id/url identify one watch and clarifying the free 30-observation limit, but it does not substantially enrich 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 clearly states the tool lists one watch's stored observations with a specific ordering (oldest to newest) and enumerates the returned fields (price, currency, source, confidence, min, max). It also distinguishes itself from current-price fetching tools by explicitly saying 'Nothing is fetched.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to call it ('to list one watch's stored observations') and notes a free-tier behavior. It does not explicitly name alternative tools or state when not to use them, but the context is unambiguous enough for an agent to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
profile_getShow the stored profileA
Return the stored CV profile exactly as resume_create, cover_letter_create and tailor_to_job will use it, plus the variant read and every stored variant name. Call it before any rewrite.
| Name | Required | Description | Default |
|---|---|---|---|
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It adds useful context: the returned profile is exactly what downstream tools will use and includes variant data. It does not state side effects, output shape, or error behavior, though 'Return' implies a read 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?
Two concise, purposeful sentences with no filler. The main behavior is front-loaded, and the usage instruction follows immediately.
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 one optional parameter and no output schema, the description covers the return contents and when to call it. It would benefit from explicit variant parameter semantics and a statement about side effects, but the essentials are 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. It mentions variant data and stored variant names, hinting at the meaning of the variant parameter, but it does not clearly explain how the optional variant input affects the response or what values are 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?
The description uses a specific verb ('Return') with a clear resource ('stored CV profile') and explains how the result is used by downstream tools. It also differentiates from siblings by mentioning variant information, which separates it from resume_read and profile_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?
'Call it before any rewrite' gives explicit contextual timing for when to use this tool. It does not name alternatives or state when not to use it, so it falls just 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.
profile_setStore your CV factsA
Store the profile every resume and cover letter is built from: contact details, summary, skills, roles with bullets, education, certifications and languages. Returns a count of what was stored.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Your own name. Leave it out and the shared business profile's name is used, so you are never asked for a name the suite already holds | |
| No | Your own email address. Leave it out and the shared business profile's email is used; with neither, letters and letterheads show "[add: email]" and say so. Never invent one | ||
| links | No | Portfolio, LinkedIn, GitHub | |
| merge | No | Update the stored profile: fields you pass replace their stored value, fields you leave out are kept. Required when a profile already exists, unless you pass replace | |
| phone | No | Your own phone number. Defaults to the shared business profile's phone | |
| skills | No | ||
| replace | No | Discard the stored profile and store exactly what this call carries. Required when a profile already exists, unless you pass merge | |
| summary | No | Two or three lines. Used verbatim as the fit paragraph of a cover letter. | |
| variant | No | Name a second profile, e.g. "backend". One profile per data directory on the free tier; named variants are Pro only. | |
| location | No | ||
| education | No | ||
| languages | No | ||
| experience | No | Roles in any order you like -- profile_set sorts and stores them newest-first (an open role with no `end` first, then by `end` descending, then by `start` descending) before saving, since page-budget trimming and cover-letter bullet ranking both trust array order to mean recency. | |
| accent_color | No | Letterhead colour, six hex digits, e.g. 1F3864. Pro only. | |
| certifications | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the behavioral burden. It discloses that the tool persists profile content and returns a count of what was stored, but it does not describe update-versus-merge-versus-replace semantics or what happens to an existing profile; that is left to the schema's merge/replace parameter descriptions. The description is minimally transparent and nowhere contradicts the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, with the core action and content categories front-loaded and the return-value statement adding useful operational information. There is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema is rich, covering defaults, required flags, ordering constraints, and Pro-only restrictions, so the description does not need to repeat those details. The description supplies the missing high-level context and return behavior; only an explicit note about merge/replace preconditions would make it fully self-contained.
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 already documents the majority of parameters, including name/email defaults, merge/replace requirements, experience ordering, and Pro-only fields. The description groups facts at a higher level (contact details, skills, education, roles with bullets) but adds little field-specific meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Store the profile' and lists the fact categories it accepts (contact details, summary, skills, roles, education, certifications, languages). It also connects the tool to its downstream purpose, 'every resume and cover letter is built from,' which clearly distinguishes it from read-side and document-generation siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to call: it populates the shared profile that all resumes and cover letters are built from, so an agent knows to invoke it before document generation. It does not name alternatives or provide when-not conditions, but for a store-vs-get sibling relationship the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_set_rateSet project rateA
Set the hourly rate and currency used to turn tracked hours into money for a project or client. Returns the new rate and, when re-rating is asked for, how many already logged entries changed.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | Project or client name. A partial name that matches exactly one existing project is used as that project. | |
| currency | No | Currency: a code (EUR, USD, GBP, PLN) or a word ('euros', 'pounds', 'zl'). Defaults to the shared business profile's default_currency, else USD. | |
| hourly_rate | Yes | Hourly rate: a number (85) or the words the user said ('90 euros an hour'). '1,200 USD' is 1200; '12,50 EUR' is 12.50; anything ambiguous is refused. | |
| only_missing | No | Only meaningful with apply_to_existing. True restores the old fill-the-gaps behaviour: only entries that carry no rate of their own are touched. Default false, which re-stamps every entry of the project. | |
| apply_to_existing | No | Re-rate time already logged for this project: every entry is re-stamped with the new rate, including entries that already carry one. Default false: the new rate applies to future entries only, because each entry captures the rate in force when it was logged. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the behavioral disclosure burden. It discloses the return value ('Returns the new rate and... how many already logged entries changed') and the conditional re-rating behavior, plus the underlying purpose of turning tracked hours into money. It does not detail side-effect nuance, but it is far more than a minimal mutation statement.
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, no fluff, front-loaded with the core purpose and then the return behavior. Every clause 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 is no output schema, so the description's mention of the return value is valuable. It covers the main return contract and the conditional effect on logged entries. It could add exact response shape or caution about re-stamping entries, but the parameter schema already handles the input side thoroughly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no parameter-level detail beyond the schema, but the schema already thoroughly documents project, currency, hourly_rate parsing behavior, only_missing, and apply_to_existing.
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: 'Set the hourly rate and currency' for a project or client. This clearly differentiates it from sibling read-oriented tools like rates_latest, rate_history, and rate_on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case—setting a project/client rate—but does not explicitly say when to use it versus alternatives or when not to use it. The sibling list contains read-style rate tools, but no routing between them is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
proposal_createCreate a proposalA
Call this tool to produce a client-ready .docx proposal from summary, scope, deliverables, timeline, price and terms. Returns the reference, the total and the file path. Free tier: 3 proposals or contracts per month.
| Name | Required | Description | Default |
|---|---|---|---|
| price | Yes | ||
| scope | No | What is in scope, one bullet each. Omitted from the document if not given or empty | |
| client | Yes | Client name, printed as 'Prepared for'. The letterhead comes from your business_set profile | |
| summary | No | One or two paragraphs on the problem and the approach. Omitted from the document if not given | |
| out_path | No | Where to write the .docx. Defaults to the data directory | |
| timeline | No | Phases and their durations, rendered as a table. Omitted from the document if not given or empty | |
| overwrite | No | Replace out_path if a file is already there. Default false: an existing file is never overwritten | |
| valid_until | No | YYYY-MM-DD, the date the quote expires | |
| deliverables | No | What the client receives, one bullet each. Omitted from the document if not given or empty | |
| project_title | Yes | Project title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It discloses output semantics (reference, total, file path) and a free-tier quota, both of which are not inferable from the schema. It does not mention overwrite behavior, but the schema's overwrite parameter covers that specific detail.
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 output, with no wasted words. The quota note is a single useful clause that an agent needs for planning.
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 tool has 10 parameters, nested objects, and no output schema, so the description must clarify return values; it does so by stating reference, total, and file path. It also adds quota context. Some details such as letterhead source and overwrite policy are left to the schema, but the schema documents them well.
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 90%, so the schema already documents the parameters in detail. The description lists summary, scope, deliverables, timeline, price, and terms as input categories, but adds no per-parameter meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('produce') and resource ('client-ready .docx proposal') and lists the major input categories. It is clearly distinguished from proposal_update by its creation focus and from contract tools by the proposal-specific output.
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 opening instruction 'Call this tool to produce a client-ready .docx proposal' gives a direct, clear use case. It does not explicitly name alternatives or when-not-to-use cases, but the purpose is specific enough that an agent can route to it for proposal generation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
proposal_updateUpdate a proposalA
Rewrite an existing proposal in place from its reference. Only the fields you pass change; the rest comes from the data stored at creation. Returns the fields that changed and the file path.
| Name | Required | Description | Default |
|---|---|---|---|
| price | No | ||
| scope | No | ||
| client | No | ||
| summary | No | ||
| timeline | No | ||
| reference | Yes | The proposal reference, e.g. PROP-2026-0001. The same file and the same reference number are kept, so no second document is burned against the free-tier monthly count | |
| valid_until | No | ||
| deliverables | No | ||
| project_title | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses important behavior: only passed fields change, omitted fields come from stored creation data, and the tool returns changed fields and the file path. It does not cover error cases or irreversibility, but the core mutation semantics are transparent.
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 with no filler. The core purpose, update behavior, and return value are all stated clearly and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, it covers the key operational details: how to identify the proposal, the merge behavior, where default values come from, and what is returned. Edge cases like missing references or exact response formatting are absent, but the description gives enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 11%, so the description needs to compensate. It adds the crucial partial-update semantic and clarifies that only reference is required. However, it does not explain formats or meanings for most parameters, such as valid_until, timeline duration, or price amounts, beyond what the schema types already indicate.
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?
Description uses a specific verb, 'Rewrite,' and identifies the exact resource: an existing proposal identified by reference. It clearly distinguishes itself from creation tools like proposal_create by emphasizing 'existing' and 'in place.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear this is for modifying an existing proposal rather than creating a new one. It does not explicitly name alternative tools or state a when-not-to-use rule, but the 'existing proposal' and 'in place' wording provides enough context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rate_historyRate history for a pairA
Call this tool for the ECB rate of one currency pair across a window. Returns one row per published day plus the min, max, average and the change. A window wider than the free 90 days is shortened, not refused.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Quote currency of the pair. Each row is 1 from = X to | |
| days | No | Trailing window in calendar days, default 30. Only TARGET business days carry a rate, so 30 days holds about 21 rows. Free reads up to 90 days back; Pro reads the whole series back to 1999-01-04 | |
| from | Yes | Base currency of the pair | |
| to_date | No | ISO date, inclusive, default today | |
| max_rows | No | Cap the table, default 200. min/max/avg still cover the whole window | |
| from_date | No | ISO date, inclusive. Overrides days. Free is limited to the last 90 days |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It adds useful behavior beyond the schema: 'A window wider than the free 90 days is shortened, not refused.' It also discloses that rows appear per published business day and that summary statistics cover the window. This is meaningful transparency for a read-only historical query.
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, zero filler. The purpose is front-loaded, the return summary is compressed, and the key free-tier caveat is placed last without redundancy. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The main decision-relevant context is present: what the tool returns, the pair/window scope, and the free 90-day shortening behavior. There is no output schema, so the short output description is valuable, though it could add sorting or missing-data behavior. Still, for a 6-parameter query tool with rich schema, this is near-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?
Schema description coverage is 100%, so the baseline is 3. The description does not independently define parameter details, but the schema already documents base/quote currency, date filtering, days, and max_rows. No compensation is needed.
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: 'the ECB rate of one currency pair across a window.' It also defines the output shape (one row per published day plus min, max, average, change), which clearly separates it from siblings like rates_latest, rate_on, or fx_rates_for.
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 direct call instruction ('Call this tool for...') and a clear context of use: a currency pair over a time window. It does not explicitly name alternatives or exclusion conditions, so it falls short of a full when/when-not breakdown, but the intended use is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rate_onRate on a given dateA
Call this tool for the ECB rate of one pair on one date. Returns both directions and the rate date, so a reciprocal is never reported as the published figure. A date beyond the free window is shortened, never refused.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Quote currency. The rate returned is 1 from = X to | |
| date | Yes | ISO date YYYY-MM-DD. If the ECB published nothing that day - every weekend, 1 January, Good Friday, Easter Monday, 1 May, 25 and 26 December - the last rate published on or before it is returned and the answer names that date. Free covers the last 90 days: an older date is shortened to the oldest free day rather than refused, and rate_date says which day the numbers are really from. Pro covers every date back to 1999-01-04 | |
| from | Yes | Base currency. The ECB quotes every currency per 1 euro, so "the ECB rate for USD" is from EUR to USD, not the other way round; invert only if the user asked for the inverse |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses two non-obvius behaviors: it returns both directions so a reciprocal is never reported as the published figure, and it shortens out-of-window dates rather than refusing them. These are genuine behavioral insights beyond the schema, though response structure and error cases are not detailed.
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 earning its place: the purpose is front-loaded, followed by the reciprocal guarantee and the date-shortening edge case. No fluff, no repetition of schema content.
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 3-parameter tool with full schema parameter documentation, the description covers purpose and the two most surprising behaviors. A small gap remains in describing the response shape beyond naming its components, but the tool is otherwise well specified for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter has a rich description, including the inversion caveat on 'from' and holiday/weekend/free-window behavior on 'date'. The description itself adds no new parameter-level meaning, so it earns the baseline 3 rather than higher credit.
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, resource, and scope: 'Call this tool for the ECB rate of one pair on one date.' It clearly distinguishes the tool from currency-conversion and range-based siblings by emphasizing single-pair/single-date scope. The reciprocal remark adds further identity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: ECB rate, one currency pair, one date. However, it does not explicitly name when-not-to-use or point to alternatives such as rate_history (ranges) or rates_latest (current), even though several for-ex sibling tools exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rates_latestLatest ECB reference ratesA
Call this tool for the latest ECB daily reference rates against any base: 1.0812 for USD means 1 base = 1.0812 USD. Crosses go through the euro. Returns the ECB rate date and the cache age.
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | Base currency; defaults to the shared business profile's default_currency, else EUR. A rate of 1.0812 for USD means 1 base = 1.0812 USD. Cross rates go through the euro, the only pair the ECB publishes | |
| quotes | No | Only these currencies, at most 200. Omit for all of them |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It does: it explains cross rates go through the euro, gives the conversion interpretation, and mentions that returns include the ECB rate date and cache age. This acknowledges a possible cache behavior. It does not disclose permission/limits, but for a read-only reference-data tool this is sufficient.
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, zero filler, and the core action plus the key interpretation detail are front-loaded. Every sentence is valuable and no redundancy exists.
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 tool with only two optional parameters and no output schema, the description is reasonably complete: it defines what is returned (ECB rate date, cache age) and explains the core rate semantics. The only noticeable gap is not routing the agent between the many sibling rate tools, but that is already captured in the usage dimension.
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 already covers both base and quotes at 100% coverage, so the baseline is 3. The description reinforces base semantics and cross-rate behavior but adds little about the quotes parameter beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is for the latest ECB daily reference rates and even gives a concrete interpretation example (1.0812 for USD = 1 base = 1.0812 USD). It implies 'latest' to distinguish from rate_history/rate_on, but it does not explicitly name sibling alternatives.
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?
'Call this tool for the latest ECB daily reference rates' implies the right context (current/latest data), but the description gives no explicit exclusions or pointers to siblings such as rate_history, fx_rates_for, or rate_on. There is no guidance for when to prefer this over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reportTime reportB
Timesheet report: total tracked hours and billable money for a period, optionally grouped by (group by) project, day, task or tag - hours per project, how much to bill. Omit group_by for the plain total per currency.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | ISO date/time end of the period. On the free tier the window is clamped to the last 7 days; Pro reports over the full history. | |
| from | Yes | ISO date/time start of the period. On the free tier the window is clamped to the last 7 days; Pro reports over the full history. | |
| format | No | table (default), json or csv. Every format carries one amount per currency, never a mixed-currency sum. | |
| project | No | Optional project filter | |
| group_by | No | project | day | task | tag. Optional: omit it for the plain total per currency, with no breakdown. Money is grouped by currency and EUR is never added to USD. | |
| unbilled_only | No | Default true: hours already put on an invoice (entry_mark_billed) are excluded, so the report answers 'what is still to bill'. Pass false for the full timesheet including invoiced work. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It mentions grouping and per-currency totals but does not explicitly disclose read-only behavior, the clamping behavior on the free tier, the default unbilled_only behavior, or the output shape. These gaps are partially covered by the schema, but the description itself adds little beyond a summary.
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 two sentences, front-loads the main purpose, and avoids excessive detail. The phrase '(group by)' is slightly redundant, but overall every sentence contributes useful 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?
For a reporting tool with six parameters, a rich schema, and no output schema, the description provides the essential context: period-based timesheet totals, grouping options, and the plain-total fallback. It does not spell out return values, but the format parameter and schema descriptions cover the remaining details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining why group_by exists ('hours per project, how much to bill') and what omitting it produces ('the plain total per currency'), which goes beyond the schema's parameter names and enums.
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 resource ('Timesheet report') and the core output: total tracked hours and billable money for a period, optionally grouped by project, day, task, or tag. It is clear enough to distinguish from sibling tools like invoice_summary or forecast, though it uses a noun phrase rather than an explicit verb like 'generate' or 'show'.
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 practical guidance for the group_by parameter ('Omit group_by for the plain total per currency') and implies a billing/timesheet use case. However, it does not explicitly say when to use this tool instead of alternatives such as invoice_summary or forecast, nor does it state any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_createWrite a resume .docxA
Call this tool to write the stored profile to a Word .docx. Returns the output path, the estimated page count, which bullets were dropped to fit, and which keywords matched or are missing.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | Free tier prints "modern" only; "classic" and "compact" are Pro. | modern |
| variant | No | ||
| keywords | No | From the posting. A keyword that appears anywhere in the profile is printed in bold; one that does not is reported as missing and is never added to the resume. | |
| out_path | No | Where to write the .docx. Defaults to <data dir>/documents/<name>-resume.docx, numbered -2, -3, ... if that exists. | |
| max_pages | No | Bullets are ordered by relevance to target_role and keywords, then trimmed to fit this many pages against a measured word budget. Default 2. | |
| overwrite | No | Replace an existing file at out_path. Default false: the call fails and nothing is written. | |
| target_role | No | Printed under your name and used to rank bullets |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly indicates this is a write operation, and it goes beyond a basic statement by disclosing return values and content-modifying behavior: it returns the output path, estimated page count, dropped bullets, and matched/missing keywords. This gives an agent visibility into side effects and potential content loss.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single,front-loaded sentence with no wasted words. It covers the action, output format, and key return details efficiently, making it easy to parse.
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 adequate for a 7-parameter tool with no annotations or output schema: it states the action, output format, and return information. It could additionally mention overwrite behavior or profile prerequisites, but the input schema covers most of those details, and the return list is notably 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?
Schema description coverage is 86%, so the baseline is 3. The description adds some contextual meaning by mentioning dropped bullets and keyword matching, which relates to max_pages and keywords, but it does not substantially explain parameter formats or relationships beyond what the schema already covers.
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 ('write') and resource ('stored profile to a Word .docx'), making the tool's core function immediately clear. It distinguishes this tool from siblings like resume_to_markdown, resume_to_html, and resume_read by explicitly naming the output format and 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?
The phrase 'Call this tool to write the stored profile to a Word .docx' gives a clear context for when to use it. It does not explicitly list alternatives or exclusions, but the sibling names (resume_to_markdown, resume_to_html) make the alternative cases inferrable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_readRead an existing resume .docxA
Call this tool to read an existing .docx resume into the profile shape, with the sections found and anything unplaced. It saves nothing unless save is true, so review it first. .doc and .rtf are refused.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to an existing .docx. Legacy .doc and .rtf are not readable here. Parsed best effort, section by heading. | |
| save | No | Store the result as the profile. Default false: nothing is saved. Review the result first. | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full behavioral burden. It usefully discloses that nothing is saved unless save is true, advises reviewing before saving, and states that legacy formats are refused. It does not cover potential edge behaviors like missing files or malformed documents, but the key side-effect behavior is transparent.
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, no filler. The primary purpose is front-loaded, followed by the critical safety behavior and format limitation. Every sentence adds 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?
For a read-focused tool with no output schema, the description explains the destination shape, what is preserved (sections and unplaced content), side effects, and format restrictions. The main omission is the meaning and effect of the variant parameter, which prevents full completeness.
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 67%, and the description adds meaningful detail for path (format restrictions, best-effort heading parsing) and save (default false, no save, review first). However, the variant parameter is completely undocumented in both the schema and description, leaving a real gap in parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (read an existing .docx resume), a concrete target output shape (profile shape with sections found and unplaced), and a constraint (.doc/.rtf refused). This clearly distinguishes it from sibling tools like resume_to_markdown or resume_to_html, which export to different formats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description opens with 'Call this tool to read an existing .docx resume into the profile shape,' giving clear context for when it should be used. It does not explicitly name alternatives or exclusion conditions beyond refusing .doc and .rtf, but the intended use is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_to_htmlPrintable resume HTMLA
Call this tool to write the resume as semantic HTML with a print stylesheet and return where it went; print it to PDF from a browser, because there is no doc_to_pdf here. Bullets are trimmed to fit max_pages. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| variant | No | ||
| out_path | No | Where to write the .html. Defaults to <data dir>/documents/<name>-resume.html, numbered -2, -3, ... if that exists. | |
| max_pages | No | Bullets are trimmed to fit this many pages against a measured word budget. Default 2. | |
| overwrite | No | Replace an existing file at out_path. Default false: the call fails and nothing is written. | |
| target_role | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and discloses useful behavior: output is semantic HTML with a print stylesheet, bullets are trimmed to fit max_pages, and the call returns the destination path. It also notes the tool is free, which is relevant given sibling license tools, though it leaves some details like overwrite consequences to the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core action and output. The 'Free.' sentence is minor filler but not distracting, and every substantive sentence adds useful 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?
The main workflow, output type, and page-trimming behavior are present, and the zero required parameters reduce risk. Still, for a tool with five parameters and no output schema, the description leaves variant and target_role unexplained and does not describe the exact return value beyond 'where it went.'
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 adds meaning to max_pages by explaining that bullets are trimmed to fit the page budget. However, variant and target_role have no schema descriptions and are not mentioned in the tool description, so with 60% schema coverage the description only partially compensates.
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: 'write the resume as semantic HTML with a print stylesheet' and 'return where it went.' It clearly distinguishes this tool from resume_to_markdown and the absent doc_to_pdf by framing the output as printable HTML.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to call this tool for the HTML/PDF-print path and tells the agent to print from a browser because 'there is no doc_to_pdf here.' It does not explicitly contrast with resume_to_markdown, but the intended use case is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_to_markdownResume as markdownA
Return the stored profile as markdown text inline, ready to paste into a form or an ATS box. Same page-budget trimming as resume_create for max_pages. Nothing is written to disk. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| variant | No | ||
| max_pages | No | ||
| target_role | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It explicitly states 'Nothing is written to disk' and 'Free', and clarifies that it applies page-budget trimming. This gives an agent a solid sense of the tool's side effects and behavior, though it does not detail output format nuances beyond 'markdown text inline.'
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 main purpose and output format. No redundant filler. The additional behavioral notes ('Nothing is written to disk. Free.') are brief and earned.
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 tool is simple enough that a basic call with defaults is adequately supported. However, with three undocumented optional parameters and no output schema, the description is not complete: variant and target_role are unexplained, and the exact return value is only described at a high level as inline markdown.
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 three unstructured parameters. It only vaguely connects max_pages to 'same page-budget trimming as resume_create' and does not explain what variant or target_role mean or how they affect output. An agent cannot make informed choices for those parameters from this description alone.
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 action ('Return the stored profile'), the resource, and the format ('markdown text inline'). It also gives the intended use, which lets an agent distinguish it from siblings like resume_to_html and resume_read 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?
The description gives concrete usage context: 'ready to paste into a form or an ATS box.' It also references resume_create for max_pages behavior, which gives a useful cross-tool anchor, though it does not explicitly state when to avoid this tool in favor of resume_to_html.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_createCreate a recurring invoice scheduleA
Define a repeating invoice: a client, the line items, how often to bill, and when it starts and ends. Returns the schedule id, a summary and its next dates. Nothing is invoiced until invoice_generate_due runs.
| Name | Required | Description | Default |
|---|---|---|---|
| every | Yes | How often to bill: "weekly", "monthly", "quarterly", "yearly", or {days: 10}. Month steps keep the start date's day of month and clamp it to shorter months, so a schedule starting on the 31st bills on the 28th/29th in February and back on the 31st in March | |
| items | Yes | The line items billed every period | |
| notes | No | Free text printed under the totals of every generated invoice | |
| client | Yes | Client name or id, as in the invoice server. Unknown names are created on the first generated invoice | |
| currency | No | Defaults to your business default currency | |
| due_days | No | Days until each invoice is due, defaults to your payment terms | |
| end_date | No | YYYY-MM-DD, INCLUSIVE: an occurrence landing exactly on it is still generated | |
| tax_note | No | Why this schedule bills the tax it bills, e.g. 'Reverse charge: VAT accounted for by the recipient, art. 196 Directive 2006/112/EC'. It is printed under the totals of EVERY invoice this schedule generates, so a 0% retainer carries its reason on the document instead of only in the chat | |
| anchor_day | No | Pro: bill on this day of month instead of the start date's day. 31 means the last day of every month | |
| start_date | Yes | YYYY-MM-DD. The first invoice falls on this date, and for weekly/monthly/quarterly/yearly steps its day of month is the billing day for every later period | |
| end_of_month | No | Pro: always bill on the last day of the month | |
| auto_generate | No | Marks the schedule for the monthly_billing_run prompt. Default false. Nothing runs in the background either way: invoices are created only when invoice_generate_due is called |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It discloses the key non-obvious trait that nothing is invoiced immediately, and states what the call returns (schedule id, summary, next dates). It could mention persistence or duplicate behavior, but the most important side-effect timing is covered.
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 deliver purpose, return value, and behavioral caveat with no filler. The most important distinction—no invoicing happens here—is front-loaded near the end without bloating the 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?
Given no output schema, the description usefully states the return shape. Given no annotations, it also flags deferred invoicing. The rich 12-parameter schema covers the rest; the only real gap is the lack of explicit routing to one-off invoicing alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented clearly. The description only summarizes the input categories at a high level and does not add new parameter-specific semantics beyond the schema, matching the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Define a repeating invoice') and enumerates its core inputs: client, line items, billing interval, start/end. The final sentence differentiates it from invoice_generate_due by clarifying that no invoice is created here, so an agent can distinguish it from invoicing siblings.
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 clear workflow context: the schedule is created now, but invoices are only produced later when invoice_generate_due runs. It does not explicitly name a one-off alternative such as invoice_create, so it stops short of a full when-not-to-use statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_deleteDelete a scheduleA
Delete one schedule permanently. Invoices already generated stay in the invoice server and the history is kept. Re-creating it gives a NEW id, so its old periods count as unbilled. schedule_pause is reversible.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Schedule id, or a client name. Deletion is permanent; re-creating the same schedule afterwards gives it a NEW id, so its old periods count as unbilled again |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, and it succeeds: it states permanence, that invoices and history survive, that re-creating a schedule gets a new id, and that old periods become unbilled. This is unusually detailed and highly useful for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, with the core action front-loaded and every following sentence adding relevant behavioral or alternative-tool context. There is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple one-parameter destructive tool with no annotations and no output schema. The description covers the deletion action, downstream invoicing/history effects, re-creation implications, and a reversible alternative, leaving no significant gap for an agent deciding 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?
The schema provides 100% parameter documentation, including that id can be a schedule id or client name and reiterates the new-id consequence. The description does not need to add parameter-level meaning because the schema already covers it thoroughly.
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 opens with a precise verb and resource: 'Delete one schedule permanently.' It clearly distinguishes this tool from its reversible sibling by noting that schedule_pause is reversible, and it explains the permanent consequences of deletion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to choose deletion over pausing by stating 'schedule_pause is reversible,' which gives an agent enough context to prefer pause when reversibility matters. It does not explicitly phrase a full 'use this when...' rule, so it misses the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_getGet one scheduleA
Return one schedule in full by id or client: items, cadence, dates, due days, anchor rules, notes, per-period amount, next due date and how many invoices it generated. schedule_history is the log.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Schedule id, or a client name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations provided, so the description carries the burden. It discloses the tool's read-only nature ('Return one schedule in full') and lists the output fields, which is helpful. However, it does not mention potential side effects (though likely none) or error conditions, and does not clarify whether 'client' refers to a client name exactly as stored or if it supports partial matches.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: it immediately states the primary action ('Return one schedule in full') and the identifier options ('by id or client'), then lists the contents in a compact list. The final sentence about schedule_history is a single useful clarification without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only get tool with one parameter and no output schema, the description is quite complete. It states what is returned and differentiates from the history log. However, it could be slightly more complete by mentioning that the tool is read-only or that it does not modify data, but that is implied. The absence of explicit error handling or edge cases (e.g., what if no schedule found) 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?
The schema description covers the parameter fully ('Schedule id, or a client name'), but the description adds semantic context by explaining that the identifier can be either an id or a client name, and clarifies the return type ('full schedule'). Since coverage is 100%, this is a good baseline, and the description adds value 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?
The description clearly states the tool's purpose: it returns a single schedule in full, by id or client, and enumerates the contents (items, cadence, dates, etc.). It also differentiates from sibling tool schedule_history by noting that it is the log, not the full schedule.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when you need the full schedule details, as opposed to the history log. It also mentions that the identifier can be a schedule id or a client name. However, it does not explicitly contrast with schedule_list (which likely lists schedules) or other siblings, so it lacks explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_historySchedule historyA
The audit log for one schedule id, oldest first: period, invoice number, issue and due dates, amount, PDF path, and whether that invoice is unpaid, paid, skipped or since deleted. schedule_list finds the id. Pro.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the ordering, the included fields, and the possible invoice statuses, including the nuanced 'since deleted' state. It does not cover empty results, pagination, or authentication, but it provides substantial behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence delivers the purpose, ordering, output fields, statuses, id discovery route, and a Pro tier note. Everything earns its place and the most identifying information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool with one required parameter and no output schema, the description covers what the agent needs: what the log contains, how it is ordered, and how to obtain the id. Minor omissions like empty results or pagination are not significant enough to lower the score further.
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. It explains that the single id parameter refers to one schedule and even points to schedule_list as the way to find that id. It does not give a format or example, but for a single string id this is adequate.
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 identifies the tool as an audit log for a single schedule id, listing the exact fields returned and the ordering (oldest first). It is distinct from sibling tools like schedule_get or schedule_list in both resource and scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for retrieving audit history and notes that schedule_list finds the id, which is useful indirect guidance. However, it does not explicitly state when to choose this over schedule_get or schedule_upcoming, nor does it give exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_listList schedulesA
List schedules: id, client, cadence, per-period amount and currency, start and end dates, status, next due date and auto_generate. Filter by status; a paused schedule reports no next due date.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does note that a paused schedule reports no next due date, which is a useful behavioral trait. However, it does not state that the operation is read-only (though it is implicitly a list), nor does it mention pagination, sorting, or potential side effects. The description adds some value beyond the schema but leaves gaps.
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 extremely concise: two sentences, the first listing the returned fields and the second covering filtering and a behavioral nuance. It is front-loaded with the most important information (the fields) and avoids any fluff. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description compensates by listing the fields returned. It also covers the filtering option and a key behavioral detail. The tool is simple (one optional parameter), so the description is largely complete. Missing elements like pagination or sorting are minor for a list tool, and the description sufficiently covers the core information an agent needs 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 compensate. The description says 'Filter by status' and explains that a paused schedule reports no next due date, which provides meaningful semantics for the 'status' parameter. It does not, however, explain the meaning of 'active' vs 'paused' beyond the effect, and it does not describe the default behavior when status is omitted. This is a moderate contribution over the 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 explicitly states the verb 'List' and the resource 'schedules', and enumerates the fields returned (id, client, cadence, per-period amount, currency, dates, status, next due date, auto_generate). This clearly distinguishes it from sibling tools like schedule_get (single schedule) or schedule_create (creation). The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions filtering by status, which is a usage hint, but it does not explicitly state when to use this tool versus schedule_get, schedule_history, or schedule_upcoming. No exclusions or alternative recommendations are provided, leaving the agent to infer from sibling names. Clear context for the list action exists, but without explicit guidance, it earns a middle score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_pausePause a scheduleA
Stop one schedule generating invoices without deleting it; invoice_generate_due and forecast skip it. Its periods keep falling due and resuming back-bills them, so use schedule_skip to drop just one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the pause is non-destructive, that due periods still accrue, that resume will back-bill, and that other tools will skip the paused schedule. This is rich behavioral disclosure.
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, front-loaded with the primary action and followed by the key nuance. No filler, no restating 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 simple one-parameter tool with no output schema and no annotations, the description fully covers what the tool does, when to use it, and the consequences of using it. Nothing material is missing for an agent 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?
The schema documents only a required string 'id' with no description. The description implies the id identifies the schedule to pause but does not explicitly connect the parameter to the behavior. It adds some context but not much parameter-level detail.
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?
Uses a specific verb ('pause') and resource ('schedule'), and clearly distinguishes itself from deleting a schedule. It also references sibling tools by name, so an agent can tell this operation apart from invoice_generate_due, forecast, and schedule_skip.
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 explains when to pause rather than delete or skip: the schedule is not removed, due periods continue, and resuming will back-bill them. It also names schedule_skip as the alternative when only one period should be dropped.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_resumeResume a scheduleA
Make a paused schedule active again. Every period missed while it was paused is still due and the next invoice_generate_due creates them all. Refused when it would pass the free tier's 3 active.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations to lean on, the description discloses the key behavioral consequences: missed periods remain due, the next invoice_generate_due will create them, and the action is refused at the free-tier limit. This gives the agent meaningful side-effect awareness beyond the operation name.
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 brief and front-loaded with the core behavior, then adds important consequences and a refusal condition. The final phrase 'free tier's 3 active' is slightly awkward but does not waste words.
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 operation with no output schema and no annotations, the description covers the main action, the deferred billing behavior, and a key limiting condition. It does not specify response shape or all possible error cases, but the operation is simple enough that the core 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 coverage is minimal (one string id), so the description must compensate. It implicitly indicates that id identifies the paused schedule to resume, but it does not state where the id comes from or how it should be formatted. The context is enough for a basic call, but not fully explicit.
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 uses a specific verb ('Resume') and states the exact purpose: making a paused schedule active again. This clearly distinguishes it from siblings like schedule_pause and schedule_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the operational context clear: it applies to paused schedules and is refused when it would exceed the free tier's active-schedule limit. It does not explicitly compare against sibling tools, but the resume-only scope is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_skipSkip one periodA
Close ONE occurrence for good without pausing the schedule, reporting what will not be billed. period must be a real occurrence of it. An invoiced period is refused; undo reopens a skip.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Schedule id, or a client name | |
| undo | No | Remove a previous skip so the period becomes due again. Works only on a period that has not been invoiced. Default false | |
| period | Yes | The occurrence date to skip, YYYY-MM-DD, exactly as it appears in schedule_upcoming or forecast. This is the answer to "pause this client for October": schedule_pause stops the whole schedule and a resumed schedule still back-bills the periods it missed, whereas a skipped period is closed for good |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the destructive finality ('for good'), the billing impact ('reporting what will not be billed'), the refusal of invoiced periods, and the undo reversal behavior. This is strong behavioral disclosure for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short, front-loaded sentences, each adding distinct information: scope, validity requirement, and refusal/undo behavior. There is 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?
Despite having no output schema or annotations, the definition covers the core contract: what action is performed, how it differs from pausing, when it is refused, how to reverse it, and where to find valid period dates. An agent has enough information 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 description coverage is 100%, so the schema already documents id, period, and undo thoroughly. The main description adds only the 'period must be a real occurrence' constraint, which is useful but mostly implicit. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource—'Close ONE occurrence for good'—and explicitly distinguishes the action from pausing the schedule. It makes clear this tool targets a single period rather than the whole schedule, so an agent can separate it from schedule_pause.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description and period parameter explicitly compare schedule_skip with schedule_pause: skip closes one occurrence permanently, while pause stops the whole schedule and a resumed schedule back-bills missed periods. It also gives validity conditions: the period must be a real occurrence, invoiced periods are refused, and undo reopens a skip.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_upcomingWhat falls due soonA
Table every occurrence of every ACTIVE schedule due in the next N days (30 default), with its amount and the invoice due date, plus a total per currency. Free lists the first 3 in your horizon.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Days ahead, default 30. The free tier honours the horizon you ask for and lists the first 3 occurrences in it; Pro lists them all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It usefully discloses active-only filtering, the 30-day default, the free-tier limit of 3 results, and the output fields. However, it omits ordering, whether the horizon is inclusive/exclusive, and any read-only or mutation implications, leaving some behavior undocumented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence that front-loads the core function, then adds output details and a free-tier caveat. Every clause contributes information, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one optional parameter, no output schema, and no annotations, the description does well to specify the returned table (amount, invoice due date, total per currency), default horizon, active filter, and free-tier limitation. It could still clarify sort order and the exact meaning of 'due in the next N days,' but it is largely sufficient for a simple 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?
The schema description covers the only parameter (days) completely, including default and free-tier effects, so the baseline is 3. The tool description mostly repeats the default and free-tier behavior rather than adding new parameter-level meaning 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?
The description states a clear action: table every occurrence of every ACTIVE schedule due in the next N days, with amount, invoice due date, and total per currency. This precise verb-plus-resource phrasing differentiates it from generic siblings like schedule_list and schedule_get by emphasizing active schedules and the upcoming-due window.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but gives no explicit guidance on when to choose it over siblings such as schedule_list, schedule_history, or forecast. There is no mention of exclusions, alternatives, or use-case prerequisites, so the agent must infer when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_updateUpdate a scheduleA
Change one schedule by id: client, items, currency, cadence, dates, due_days, notes or auto_generate. Only the fields you pass change. Periods already invoiced are never re-issued, so a new amount applies to future ones.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| every | No | How often to bill: "weekly", "monthly", "quarterly", "yearly", or {days: 10}. Month steps keep the start date's day of month and clamp it to shorter months, so a schedule starting on the 31st bills on the 28th/29th in February and back on the 31st in March | |
| items | No | ||
| notes | No | ||
| client | No | ||
| currency | No | ||
| due_days | No | ||
| end_date | No | null clears the end date | |
| tax_note | No | Replace the tax reason carried onto every future generated invoice. Pass an empty string to clear it | |
| anchor_day | No | Pro | |
| start_date | No | ||
| end_of_month | No | Pro | |
| auto_generate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden, and it largely succeeds: it states a partial-update contract ('Only the fields you pass change') and an important billing side effect ('Periods already invoiced are never re-issued'). It does not cover permissions, errors, or return values, but the most consequential behaviors are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the core identifier constraint is front-loaded. The field enumeration is dense but readable, and every sentence conveys a distinct fact worth knowing.
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 mutation tool with no annotations and no output schema, the description covers the essential update behavior but not the full param set or return/error expectations. It is adequate for basic use but an agent is left guessing about several edge-case parameters and what a successful update 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?
The description enumerates most of the top-level parameters and adds a meaningful partial-update rule beyond the schema. However, schema coverage is only 38%, and several parameters (tax_note, anchor_day, end_of_month) are omitted; also 'cadence' and 'dates' are imprecise labels for the actual properties 'every', 'start_date', and 'end_date'. It partially compensates for the schema gap but not completely.
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 opens with a precise verb and target ('Change one schedule by id') and lists the mutable fields, making it obvious this is the update operation for an existing schedule. It is clearly distinct from sibling schedule_create, schedule_delete, schedule_get, etc. The purpose is unambiguous and immediately scoped to a single resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear this is the tool for modifying fields on an existing schedule, which is strong contextual usage guidance. It does not explicitly call out alternatives like schedule_pause, schedule_resume, or schedule_skip when those are the intended action, but the 'Change... by id' phrasing is clear enough for an agent to select it for updates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sheet_add_columnAdd a columnA
Call this tool to add a computed column and save the result to a NEW file; the source is never modified unless out_path points at it. Returns the new file path, the row count and a preview of the first rows.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the new column. It must not already exist on the sheet | |
| path | Yes | Path to the source .xlsx/.xlsm/.xlsb/.ods/.csv/.tsv file (~ is expanded); it is never modified | |
| sheet | No | Sheet name; default is the first sheet | |
| values | No | Explicit values, one per data row, instead of a formula. Missing entries are left blank | |
| formula | No | Expression over the columns of each row, in the same expression language as sheet_query, e.g. "[Qty] * [Unit Price]" or '[Country] = "PL"'. Give either formula or values | |
| decimals | No | Round numeric formula results to this many decimals. Default: the widest decimal count of the columns the formula reads, capped at 2 when they all hold 2 or fewer (money in, money out); otherwise no rounding beyond float cleanup | |
| out_path | No | Output file; default <source>-plus-<column>.<same ext>. The source file is left untouched unless this points at it |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing side effects, and it does so well. It explicitly states the source is never modified unless out_path points at it, and it describes the return value: new file path, row count, and a preview of the first rows. This gives an agent a clear mental model of the operation's effects.
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 two sentences and every sentence earns its place. The core purpose and the critical safety behavior are front-loaded, and the return-value information is compactly included. There is no redundant repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for correct invocation: it covers the operation, the crucial file-safety behavior, and the return values. With 7 parameters fully documented in the schema and no output schema, the description fills the remaining gaps without omitting anything an agent needs to know to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds real value beyond the schema by explaining the key safety semantic: the source is never modified unless out_path points at it. It also frames the operation as producing a new file, which helps disambiguate the role of out_path.
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 uses a specific verb and resource: 'add a computed column' and 'save the result to a NEW file.' This clearly distinguishes the tool from sibling sheet tools, especially ones that may modify the source file, and leaves no ambiguity about the core action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when to call the tool: to add a computed column and produce a new file. It also clarifies the source file is never modified unless out_path points at it, giving clear context. It does not explicitly name an alternative tool or a when-not-to-use condition, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sheet_convertConvert fileA
Call this tool to convert a sheet between excel (xlsx), csv and json. Writes a new file next to the source unless out_path is given; the source is never modified. Returns the new file path with its row and column counts.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Target format; the default out_path takes this as its extension | |
| path | Yes | Path to the source .xlsx/.xlsm/.xlsb/.ods/.csv/.tsv file (~ is expanded); it is never modified | |
| sheet | No | Sheet to convert; default is the first sheet. Only that one sheet is written | |
| out_path | No | Where to write; default is the source name with the new extension, next to the source. It must differ from the source path |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and discloses the key behaviors: it writes a new file next to the source unless out_path is given, never modifies the source, and returns the new path with row/column counts. It does not cover what happens if out_path already exists or the fidelity loss of xlsx-to-csv conversion, which are minor but relevant gaps.
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, zero filler: trigger/purpose first, then side-effect behavior, then return value. Every sentence earns its place and the most decision-relevant info 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?
The schema fully documents all four parameters, and the description covers purpose, side effects, and return value despite having no output schema and no annotations. Missing details like overwrite behavior when out_path already exists and cross-format fidelity caveats are gaps, but an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter already has a rich description (extension list, ~ expansion, default sheet selection, out_path constraint). The description merely reinforces the out_path default and source-immutability, adding no new parameter-level meaning beyond the schema, 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 (convert) plus resource (a sheet) and the exact format scope (xlsx, csv, json). This clearly distinguishes it from sheet_read/sheet_write and the generic convert/convert_many siblings, so an agent knows immediately which tool handles format conversion.
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?
"Call this tool to convert a sheet between excel (xlsx), csv and json" provides a clear trigger condition for when to invoke it. It does not explicitly name alternatives or state when not to use it (e.g., sheet_read for reading content), so it stops 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.
sheet_findFind textA
Call this tool to search every cell of a spreadsheet or CSV for text; built-in file readers cannot parse spreadsheets. Matching is case insensitive. Returns cell addresses with a preview of the row each hit is on.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the .xlsx/.xlsm/.xlsb/.ods/.csv/.tsv file (~ is expanded) | |
| text | Yes | Text to look for; matched case insensitively anywhere inside a cell. Up to 200 hits are returned | |
| sheet | No | Sheet name; default searches every sheet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry behavioral details, and it does: matching is case insensitive, every cell is searched, and the result includes cell addresses plus a row preview. It does not explicitly state that the operation is read-only, but the search behavior and return description make that reasonably clear.
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 two sentences with no filler. It front-loads the call instruction, adds a key limitation of file readers, and gives the most important behavioral and output details succinctly.
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 search tool with 3 fully documented parameters and no output schema, the description covers the core behavior, return shape, and case sensitivity. It could mention the optional sheet default or the 200-hit limit, but those are already present in the schema, so the description is close to 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?
Schema description coverage is 100%, so the baseline is 3. The description adds context about searching 'every cell' and mentions CSV alongside spreadsheets, but it does not add meaningful parameter-level detail beyond what the schema already provides for path, text, and sheet.
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 a specific behavior: searching every cell of a spreadsheet or CSV for text and returning cell addresses with row previews. It explains why this tool is needed ('built-in file readers cannot parse spreadsheets'), but it does not explicitly differentiate it from sibling tools like sheet_read or sheet_query.
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 directly says when to use the tool: whenever you need to search a spreadsheet or CSV for text. The note about built-in file readers gives practical context, but it does not explicitly state when not to use this tool or mention alternatives among the spreadsheet sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sheet_infoSpreadsheet overviewA
Call this tool for any spreadsheet or CSV file path; built-in file readers cannot parse spreadsheets and must not be used for them. Start here: sheet names, size, header row, column types and samples.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the .xlsx/.xlsm/.xlsb/.ods/.csv/.tsv file (~ is expanded) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It states what the tool returns (sheet names, size, header row, column types, samples) and implies a read-only overview operation, but it does not explicitly say whether it modifies anything, how errors are handled, or how 'size' and 'samples' are defined. This is adequate but not deeply transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The first sentence leads with when to call the tool and the prohibition on built-in readers, and the second compactly lists the returned overview contents. Every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter overview tool, the description covers the trigger, the supported file types, and the key return elements. It lacks an explicit output structure and more detail on relationship to sibling sheet tools, but it is sufficient for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents the single required path parameter with supported extensions and tilde expansion. The description only restates 'any spreadsheet or CSV file path,' adding no new semantic detail beyond the schema, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies this as the entry point for spreadsheet and CSV files and specifies the exact overview contents: sheet names, size, header row, column types, and samples. It distinguishes from built-in file readers, but it does not explicitly contrast it with sibling tools like sheet_read or sheet_query, so it stops just short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to call this tool for any spreadsheet or CSV file path and warns that built-in file readers cannot parse spreadsheets and must not be used. 'Start here' gives a clear sequencing cue, but it does not name the sibling alternatives for subsequent data access, so the guidance is strong yet not fully alternative-aware.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sheet_queryFilter, group and sort rowsA
Call this tool for any spreadsheet or CSV file path; built-in file readers cannot parse them. Filters, groups, aggregates and sorts in one call. Totals: aggregate/group_by here, never hand sums over sheet_read rows.
| Name | Required | Description | Default |
|---|---|---|---|
| as | No | ||
| path | Yes | Path to the .xlsx or .csv file | |
| sort | No | Sort column; may be an aggregate alias such as total_units | |
| limit | No | Default 100 | |
| sheet | No | ||
| where | No | Filter, e.g. [Qty] >= 5 AND ([Status] = "open" OR [Status] = "new") | |
| select | No | Column names to return; default all (with group_by, defaults to the group columns plus the aggregates) | |
| group_by | No | Group rows by these columns before aggregating, e.g. ["Rep"] or ["Region","Rep"] | |
| aggregate | No | Aggregates per group, e.g. [{"col":"Units","fn":"sum","as":"total_units"}]. Defaults to a row count when group_by is given. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavior. It lists the core operations but doesn't explicitly state whether the tool is read-only, what it returns, or any side effects. The 'never hand sums' tip is useful but doesn't address the tool's runtime or data handling behavior, leaving some behavioral aspects 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?
The description is two sentences, front-loaded with the call-to-action and differentiator, then the core capability, then a specific usage tip. No wasted words; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the tool has 9 parameters, nested objects, and no output schema, the description covers the high-level purpose and a key usage tip. The schema provides parameter details, but the description lacks explicit information about return formats, default behaviors beyond what's in schema, or edge cases. For a tool of this complexity, it's adequate but not exhaustive.
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 78%, so most parameters already have descriptive text. The description adds context that aggregate/group_by are for totals, reinforcing the schema examples, but doesn't introduce new meaning beyond what the schema already documents. With high coverage, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: it queries spreadsheet or CSV files with filter, group, aggregate, and sort operations. It distinguishes itself from built-in file readers and from siblings like sheet_read (which does not aggregate) by emphasizing its combined capabilities, making tool selection unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description directs users to call this tool for any spreadsheet or CSV path, and explicitly instructs to use aggregate/group_by here instead of hand-summing over sheet_read rows. This gives clear context and a specific exclusion, though it doesn't mention other alternatives like sheet_stats or sheet_find.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sheet_readRead rowsA
Call this tool for any spreadsheet or CSV file path; built-in file readers cannot parse spreadsheets and must not be used for them. Reads rows as a table, JSON or CSV; page with limit/offset or an A1 range.
| Name | Required | Description | Default |
|---|---|---|---|
| as | No | Output format, default table | |
| path | Yes | ||
| limit | No | Rows to return, default 100 | |
| range | No | A1 range such as A1:D50; overrides limit/offset | |
| sheet | No | Sheet name; defaults to the first sheet | |
| offset | No | Rows to skip, default 0 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It clearly says 'reads rows' and reveals output modes plus pagination via limit/offset or A1 range. It does not explicitly say 'read-only/no modification', but the read verb and output-focused wording provide adequate expectation for a low-risk read 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?
Two concise, front-loaded sentences. The routing instruction is stated first, followed by a compact capability summary covering format and pagination with no wasted words.
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 six parameters and no output schema, the description covers the essential invocation context: target file type, output format, and pagination choice. Remaining gaps, such as explicit sibling-tool alternatives and more detail on path semantics, are minor because the schema already documents the parameters.
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 input schema already covers about 83% of parameters, and the description reinforces meaning for the path parameter as a spreadsheet or CSV file path. It also clarifies that limit/offset and A1 range are alternative pagination mechanisms, matching and supplementing the schema descriptions.
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 action ('Reads rows') on a specific resource ('any spreadsheet or CSV file path') and lists output formats. It distinguishes the tool from built-in file readers but does not explicitly distinguish it from sibling sheet tools such as sheet_query or sheet_info.
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 trigger: call this tool for any spreadsheet or CSV file path, and explicitly says built-in file readers must not be used for them. It does not, however, contrast with sibling sheet_* tools, so an agent might not know when sheet_query or sheet_info would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sheet_statsColumn statisticsA
Call this tool for any spreadsheet or CSV file path; built-in file readers cannot parse spreadsheets and must not be used for them. Whole-column statistics: count, empty, distinct, min, max, sum, mean, median.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| sheet | No | ||
| columns | No | Limit to these columns; default all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It lists the statistics computed but does not state whether the tool is read-only, whether it modifies the file, how missing values are handled, or what happens with unsupported file types. This lack of side-effect clarity is a gap.
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 brief and front-loaded, with the key usage directive in the first sentence and the statistical capabilities listed in the second. There is no redundant or filler content.
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 covers what the tool does and what statistics it returns, which is sufficient given the lack of an output schema. It does not describe error cases or edge cases, but the core behavior is adequately specified.
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 path parameter is explained by the description ('spreadsheet or CSV file path'), and the columns parameter has a schema description. However, the sheet parameter has no explanation and is not discussed in the description, so one of three parameters is not adequately documented.
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 identifies the tool's purpose: computing whole-column statistics (count, empty, distinct, min, max, sum, mean, median) from spreadsheet or CSV files. It also distinguishes this tool from ordinary file readers by stating that built-in file readers cannot parse spreadsheets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives some usage context: use it for spreadsheet or CSV file paths when built-in file readers are unsuitable. However, it does not explicitly contrast this tool with sibling tools like sheet_read, sheet_query, or sheet_find, nor does it state when to prefer one of those alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sheet_writeWrite rowsA
Call this tool to write rows to an xlsx, csv, tsv or json file; the extension of out_path picks the format. mode is new_file, append or overwrite. Other sheets are kept. Free: 500 rows per file.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | new_file writes a brand new file and refuses to clobber an existing one; append adds the rows under the existing data; overwrite replaces the file contents | |
| path | Yes | Source file for append/overwrite, or the intended file for new_file (~ is expanded) | |
| rows | Yes | Array of objects, whose keys become the headers, or an array of arrays with the header row first | |
| sheet | No | Sheet to write; default is the first sheet of the source, or "Sheet1" for a new file. Other sheets of an existing workbook are kept unchanged | |
| out_path | No | Where to write; default is a new file next to the source for new_file, or the source itself for append/overwrite. The output format follows this extension: .xlsx, .csv, .tsv or .json. An extension is required |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It adds useful side-effect and quota context: 'Other sheets are kept' and 'Free: 500 rows per file.' However, it only lists the mode names without warning that overwrite replaces file contents or that new_file refuses to clobber, leaving destructive semantics to the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences with no wasted content. It front-loads the primary purpose, then covers modes, then adds the safety/limit note. The only mild filler is the generic 'Call this tool to' opener.
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 5-parameter write tool with a rich 100%-covered schema, the description plus schema covers formats, modes, sheet retention, defaults, and the row limit. It does not describe return/status behavior or explicit exclusions, but those are minor for a write operation and not required by the output schema absence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces that out_path's extension selects the format and that mode takes three values, but both facts already appear in the input schema. It adds no genuinely new parameter semantics beyond a compact summary.
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 opens with a specific verb and resource: 'write rows to an xlsx, csv, tsv or json file.' It clearly names the target formats and the mechanism for choosing format via 'the extension of out_path picks the format.' This distinguishes it from sibling read/query/load tools without merely restating 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?
'Call this tool to write rows...' is a direct usage instruction, and the enumeration of modes (new_file, append, overwrite) tells the agent which write behaviors exist. It does not explicitly name alternatives or when-not-to-use conditions, but the write-oriented purpose is unambiguous against the sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tailor_to_jobGap analysis against a postingA
READ-ONLY gap analysis against a posting: writes nothing, changes nothing. Returns matched keywords, missing ones, a coverage figure and orderings of facts you already stated. Act on it with resume_create.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many keywords to extract from the posting. Default 30. | |
| variant | No | ||
| job_description | Yes | Paste the posting. The free tier reads up to 2,000 characters; Pro reads any length. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses that the tool is read-only, writes nothing, and changes nothing, plus what it returns. It could add prerequisites or auth notes, but for a non-mutating analysis tool this is solid.
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-sentence description, front-loads read-only nature and outputs, ends with actionable next step. No redundant words.
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 3-parameter tool with no output schema and no annotations, the description covers purpose and outputs but leaves 'variant' unexplained and is vague about where the existing facts come from. It's usable but not fully 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?
Schema already explains job_description and limit, but description adds no parameter-level meaning and completely ignores 'variant', which has no schema description. At 67% schema coverage, the description should compensate for the undocumented parameter but doesn't.
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?
Description states a specific verb ('gap analysis') with a clear resource ('against a posting') and enumerates exact outputs (matched keywords, missing ones, coverage figure, orderings). It differentiates from siblings like resume_create by framing itself as the read-only analysis step, and the title reinforces the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear workflow context: perform gap analysis, then act with resume_create. It does not explicitly list alternatives or exclusions, but the sibling reference makes intended usage evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timer_startStart timerA
Start a stopwatch for work on a project and return the start time. Only one runs at a time: a new one stops and logs the previous, naming it. rate is an hourly rate in MAJOR units for this timer only.
| Name | Required | Description | Default |
|---|---|---|---|
| rate | No | Hourly rate for this timer only; a number (90) or the words the user said, e.g. rate '90 euros an hour'. Defaults to the project rate set by project_set_rate. | |
| tags | No | Free-form tags, e.g. ['dev','meeting'] | |
| task | No | What you are working on right now | |
| project | Yes | Project or client name, e.g. 'acme-website'. A partial name that matches exactly one existing project is used as that project. | |
| currency | No | Currency of the rate: EUR, USD, GBP, PLN, or words like 'euros'. Defaults to the project currency, else USD. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries a heavy burden, and it does well by explicitly revealing that a new timer stops and logs the previous one, names it, and that rate applies only to this timer. It could disclose more failure modes or naming details, but the key side-effect is clearly stated.
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 compact and well ordered: it states the action, the important side effect, and then the parameter nuance. Every sentence carries useful information without repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has five parameters and no output schema, the description covers the main return value (start time) and the most important behavioral edge case (one timer at a time). The full parameter semantics are already in the schema, so this is reasonably complete, though it could be more explicit about failure cases or naming 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?
Schema coverage is 100%, so the baseline is 3. The description adds real value by clarifying that rate is expressed in MAJOR currency units and is timer-scoped, which helps avoid common misinterpretation of the rate 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?
The description uses a specific verb and resource: start a stopwatch for project work, and it explicitly says it returns the start time. It also distinguishes the tool behavior from siblings by describing the one-at-a-time rule where starting a new timer stops and logs the previous one.
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 is clear that the tool is used for starting a timer, and the one-active-timer rule gives an important constraint. However, it never mentions sibling tools like timer_stop or timer_status, nor does it explicitly say when an agent should prefer those alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timer_statusTimer statusA
Report the running timer and today's total hours. Today is the local calendar day, so a timer started at 23:30 yesterday contributes only the minutes since midnight. No arguments, and it writes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It explicitly states the tool writes nothing, eliminating side-effect concerns, and precisely defines the 'today' boundary with the 23:30-crossing-midnight example. This is substantive behavioral context beyond the name and 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?
Two sentences with no filler: core purpose first, then the one tricky date-boundary detail, then a concise no-arguments/no-writes confirmation. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-argument, read-only status tool, the description covers invocation and the key date-boundary rule well. It does not specify the exact response shape or what happens when no timer is running, and with no output schema that is a small but real 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 schema has zero properties and 100% coverage, and the description clearly says 'No arguments.' There are no parameters to document, so the baseline 4 applies and is fully satisfied.
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 uses 'Report' as a specific verb and clearly identifies the resource: the running timer and today's total hours. It does not explicitly contrast itself with siblings such as report or entry_list, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'No arguments, and it writes nothing' implies this is a safe, read-only status check with no setup required, which conveys when it would be appropriate. However, it never names alternatives or gives explicit when-not-to-use conditions, so the routing guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timer_stopStop timerA
Stop the running timer and log it as one entry. Returns the duration, the money at the rate in force and the new entry id. With no timer running it says so and writes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Optional note stored with the entry |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It clearly states the read/write effects: stopping, logging an entry, returning duration/money/new entry ID, and doing nothing when no timer is running. It doesn't detail the rate calculation, but the mentioned return values and edge-case behavior are solid.
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-load the core action and result, then cover the failure/no-timer case and the exact return values. Every sentence earns its place and there is zero 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 one-optional-parameter tool with no output schema, the description is complete: it explains what happens, what is returned, and the behavior when no timer is running. An agent has enough information to call it correctly without opening the 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?
The input schema covers 100% of the single parameter with an 'Optional note stored with the entry' description. The tool description adds no extra nuance about the note parameter, but it doesn't need to because the schema already 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?
The description states a specific verb and resource: 'Stop the running timer and log it as one entry.' It also distinguishes itself from sibling tools like timer_start and timer_status by describing the stopping/logging behavior and the no-op 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?
The description gives clear context for use: it applies when a timer is running, and explicitly states what happens when none is running ('says so and writes nothing'). It does not explicitly name alternatives like timer_start or timer_status, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
variables_listList the variables a selection needsA
List every {{variable}} the clauses you name use, and which clause uses each, so the facts are gathered before contract_assemble leaves bracketed prompts. Reads only; a title matching several is refused.
| Name | Required | Description | Default |
|---|---|---|---|
| clause_ids | Yes | Clause ids or titles |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool is read-only ('Reads only') and describes a notable behavior ('a title matching several is refused'). It does not cover permissions or rate limits, but those are less critical for a lightweight read-only list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences with no filler. The primary statement is front-loaded, the rationale follows, and the behavioral caution is brief. Every sentence contributes new, useful 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?
For a single-parameter, read-only tool with no output schema, the description covers what it does, when to use it, and an important edge case. It omits details like error handling for invalid clause IDs, but the core invocation and expectation are sufficiently 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?
Schema coverage is 100%, so the baseline is 3. The description adds value by clarifying that the clause_ids parameter is about 'the clauses you name' and explaining how ambiguity is handled ('a title matching several is refused'). This helps the agent provide a valid input.
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 uses a specific verb ('List') and resource ('every variable the clauses you name use') and even explains what is returned (which clause uses each variable). It clearly differentiates from siblings by contrasting with contract_assemble and noting it is read-only.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit usage context: run this before contract_assemble leaves bracketed prompts. It does not name alternative tools for when not to use it, but the timing hint and 'Reads only' are enough to guide the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_addWatch a priceA
Call this tool for any product URL; fetching the page with a generic web tool returns raw HTML without the price. Starts tracking it: first observation stored, optional target, re-read by watch_refresh. Free: 3 watches.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Product page URL | |
| label | No | Short name for this item | |
| currency | No | ISO code such as USD or EUR, if the page does not say | |
| target_price | No | Report this watch in alerts_pending when the price is at or below this (positive number) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals important side effects: first observation is stored, an optional target can be set, the watch is re-read via watch_refresh, and there is a free limit of 3 watches. This goes beyond a bare 'adds a watch' statement, though it does not cover failure modes or what happens when the limit is exceeded.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: it front-loads the core call instruction, explains the limitation of generic web fetching, summarizes behavior, and states the free limit. Every sentence adds value, with no repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool with no output schema and full parameter coverage, the description provides the key operational context: purpose, effect, limit, and relation to watch_refresh. It does not mention the return value or how to list existing watches, but those are not critical for correctly invoking this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters. The description adds only the mention of an 'optional target', which loosely maps to target_price, but it does not meaningfully expand on label, currency, or target semantics beyond what the schema provides. The baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: call it for a product URL to start tracking its price. It explicitly distinguishes itself from generic web fetching, which returns raw HTML without the price, and references watch_refresh as the re-read mechanism. This makes the tool's role unambiguous relative to its siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear when-to-use context: any product URL, and notably explains why a generic web tool would be insufficient (raw HTML without the price). It does not explicitly exclude alternatives like price_add_manual or price_check, but the URL-based tracking purpose is clear enough that an agent can infer the correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_listList watchesA
Show every tracked item with current and previous price, min, max, change %, target, confidence and last check, plus free-tier use. Prices are as of the last watch_refresh, never live; nothing is fetched.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the behavioral disclosure burden. It explicitly states 'never live', 'as of the last watch_refresh', and 'nothing is fetched', making the operation's side-effect-free, non-live nature unmistakable.
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 one information-dense sentence, with the primary purpose at the front and important caveats at the end. Every clause contributes meaning: output fields, staleness, and non-fetching 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?
For a zero-parameter read tool with no output schema, this description supplies the output list, the data freshness behavior, and the absence of side effects. An agent has everything it needs to invoke the tool without further lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema coverage is 100%, so there is no parameter ambiguity to resolve. The description adds value by enumerating the output fields, including free-tier usage, which is more than the empty schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Show') and a clearly identified resource ('every tracked item') plus a detailed field list, so an agent knows exactly what the tool returns. It is clearly distinct from siblings like watch_add, watch_remove, and watch_refresh.
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 this list should be trusted: prices are from the last watch_refresh and never live, telling the agent to use watch_refresh or price_check for fresher data. It does not explicitly name alternatives or state exclusions, but the staleness caveat provides strong usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_refreshRefresh pricesA
The only tool that re-reads prices: it re-fetches one watch or all, appends observations and returns current, previous, min, max, change % and target hits. A page that fails is listed; then read alerts_pending.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Watch id or URL to re-fetch. Omit and set all=true to refresh everything. Nothing runs in the background, so call this whenever the user asks about prices, drops or alerts - typically once at the start of a session, then read alerts_pending. | |
| all | No | Refresh every watch in one call (Pro; on free, refresh one id at a time) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavior itself. It states the tool re-fetches, appends observations (mutation), returns multiple metrics, lists failing pages, and recommends reading alerts_pending next. It also implies nothing runs in the background via schema. This is substantial behavioral context, though it does not explicitly state that it modifies state (appending observations is implied).
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 two sentences, front-loaded with the core purpose ('The only tool that re-reads prices') and efficiently lists outputs, failure behavior, and next step. No fluff; every clause 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?
Given no output schema, the description clearly enumerates return values (current, previous, min, max, change %, target hits) and failure handling (failing page listed, then read alerts_pending). It covers operational flow and next steps. A stronger description might mention rate limits or permission requirements, but for this tool's complexity, it is complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameter descriptions are detailed, especially 'id' which explains omission semantics and usage timing. The main description adds marginal value beyond schema (e.g., 'one watch or all' maps to id/all) but does not introduce new parameter meaning. Baseline 3 is appropriate as schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('re-reads prices') and resource ('one watch or all'), lists concrete outputs (current, previous, min, max, change %, target hits), and explicitly claims to be 'the only tool' that re-reads prices, distinguishing it from siblings like price_check and price_history. It also mentions failure listing and a follow-up, making purpose 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?
The description provides context ('whenever the user asks about prices, drops or alerts' appears in schema, not main text) and directs to read alerts_pending after, but does not explicitly list exclusions or when NOT to use this tool versus alternatives. The phrase 'the only tool' and schema hint cover typical usage scenarios adequately, but the main description lacks explicit when-to-use guidance beyond implication.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_removeRemove a watchA
Call this tool to stop tracking one item, by watch id or URL. Its whole price history is deleted and cannot be recovered, so re-adding starts empty. A key matching no watch is refused.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Watch id from watch_list | |
| url | No | URL of the watch, if you do not have the id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations to fall back on, the description carries the full burden of behavioral disclosure. It explicitly warns that the entire price history is permanently deleted and cannot be recovered, and that re-adding starts empty. It also states that a key matching no watch is refused, which is an error-handling behavior. These details go well beyond the basic 'remove' action and are critical for an agent to understand the destructive side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each earning its place: it states the action, discloses the irreversible consequence, and notes the error condition. The most important information (that this is a removal) is front-loaded, and there is no redundant or fluffy language. It is concise yet complete.
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 destructive operation, the description covers the key contextual points: what it does, the irreversible effect, and the error case. It does not describe the success return value or any permission requirements, but given the tool's simplicity and lack of output schema, these are minor gaps. The description is sufficient for an agent to use the tool correctly in most scenarios.
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 input schema already provides 100% coverage for both parameters ('id' and 'url'), with descriptions indicating when to use each. The tool description simply restates 'by watch id or URL' without adding new meaning such as precedence rules if both are provided, or what happens if neither is given. Since the schema is thorough, the description adds minimal extra value, justifying a baseline of 3.
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 clear verb ('stop tracking') and a specific resource ('one item'), and clarifies the input mechanism (by watch id or URL). It differentiates from siblings like watch_add and watch_list by explicitly framing this as a removal action, so an agent can easily distinguish the tool's purpose without inspecting 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?
The description gives explicit context: 'Call this tool to stop tracking one item,' which tells the agent when to invoke it. It doesn't list alternatives or exclusions, but the purpose is unambiguous and the sibling names make the distinction obvious. The mention of 'by watch id or URL' also specifies the acceptable input methods, which is useful guidance.
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.
117 tool updates
v0.20.0- First observed
alerts_pending - First observed
business_days - First observed
cache_status - First observed
calendars_list - First observed
clause_add - First observed
clause_delete - First observed
clause_export - First observed
clause_get - First observed
clause_import - First observed
clause_list - First observed
clause_search - First observed
clause_update - First observed
client_add - First observed
client_delete - First observed
client_list - First observed
conflicts - First observed
contacts_list - First observed
contacts_set - First observed
contract_assemble - First observed
contract_create - First observed
convert - First observed
convert_many - First observed
convert_time - First observed
cover_letter_create - First observed
currencies_list - First observed
doc_create - First observed
doc_fill_template - First observed
doc_from_markdown - First observed
doc_read - First observed
doc_to_html - First observed
docx_business_set - First observed
dst_changes - First observed
entry_add - First observed
entry_delete - First observed
entry_edit - First observed
entry_list - First observed
entry_mark_billed - First observed
event_export - First observed
event_to_time_entry - First observed
events_list - First observed
events_search - First observed
export_csv - First observed
find_meeting_slots - First observed
forecast - First observed
free_busy - First observed
fx_rates_for - First observed
ics_create - First observed
ics_forget - First observed
ics_import - First observed
invoice_business_set - First observed
invoice_create - First observed
invoice_from_hours - First observed
invoice_generate_due - First observed
invoice_get - First observed
invoice_list - First observed
invoice_mark_paid - First observed
invoice_pdf - First observed
invoice_summary - First observed
license_activate - First observed
license_status - First observed
next_event - First observed
now - First observed
overdue_report - First observed
overlap - First observed
pdf_count - First observed
pdf_info - First observed
pdf_merge - First observed
pdf_pages - First observed
pdf_reorder - First observed
pdf_rotate - First observed
pdf_split - First observed
pdf_stamp - First observed
pdf_text - First observed
pdf_watermark_business - First observed
price_add_manual - First observed
price_check - First observed
price_history - First observed
profile_get - First observed
profile_set - First observed
project_set_rate - First observed
proposal_create - First observed
proposal_update - First observed
rate_history - First observed
rate_on - First observed
rates_latest - First observed
report - First observed
resume_create - First observed
resume_read - First observed
resume_to_html - First observed
resume_to_markdown - First observed
schedule_create - First observed
schedule_delete - First observed
schedule_get - First observed
schedule_history - First observed
schedule_list - First observed
schedule_pause - First observed
schedule_resume - First observed
schedule_skip - First observed
schedule_upcoming - First observed
schedule_update - First observed
sheet_add_column - First observed
sheet_convert - First observed
sheet_find - First observed
sheet_info - First observed
sheet_query - First observed
sheet_read - First observed
sheet_stats - First observed
sheet_write - First observed
tailor_to_job - First observed
timer_start - First observed
timer_status - First observed
timer_stop - First observed
variables_list - First observed
watch_add - First observed
watch_list - First observed
watch_refresh - First observed
watch_remove
TDQS
Scored across 117 tools
Many tool families are clearly described, but several pairs blur together: invoice_business_set and docx_business_set write the same shared profile, pdf_split and pdf_pages overlap for single ranges, and overlap/find_meeting_slots plus the rate_* family are easy to confuse. The detailed descriptions help, but with 117 tools an agent will still misselect.
Most tools follow a readable snake_case resource_action style (schedule_create, sheet_read, clause_update), but there are notable exceptions: convert, convert_many, convert_time, export_csv, and bare nouns like now, overlap, forecast, report, free_busy. The mix is still readable, so it is not chaotic.
117 tools is far beyond any reasonable single-server surface and dwarfs the extreme-mismatch threshold of 50+. This should be split into focused servers for documents, spreadsheets, PDFs, invoicing, calendar, time tracking, FX, and price tracking.
Each broad area has substantial coverage, but there are notable dead ends: invoice_list/get reference credit notes yet no tool creates them, proposals have create/update but no get/list, and contract_create returns a reference with no read/list/update/delete surface. Agents cannot complete those lifecycle workflos.
Maintenance
Related MCP Connectors
Hosted MCP server for Mini Accountant: invoices, expenses, customers, analytics, tax estimates.
MCP server for Codat — companies, connections, invoices, bills and financial statements.
Cross-product MCP server for CRM, LeadKit, ProjectKit, Bookio. 10 action types, MIT open spec.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA comprehensive MCP server for time tracking, project management, and AI-powered memory storage using semantic search. It enables users to log time, manage client billing, and capture shared or personal ideas through integrated tools and team collaboration features.1-
- AlicenseBqualityBmaintenanceA flexible proxy server that aggregates multiple backend MCP servers into a single interface using STDIO or SSE transports. It supports dynamic server management via an HTTP API and utilizes namespacing to prevent tool conflicts across connected services.31MIT
- FlicenseNot gradedqualityCmaintenanceA remote MCP server for the Moxie Public API, deployable to Cloudflare Workers. Exposes all 29 documented Moxie endpoints as MCP tools for managing clients, contacts, projects, tasks, invoices, payments, and more.-
- AlicenseAqualityAmaintenanceMCP gateway/proxy: multiplexes tool calls across upstream MCP servers into one aggregated, namespaced catalog and logs every call. Local, single-user, $0/month by default.2MIT