Skip to main content
Glama

mcp-office-suite

office-suite demo

One-click install: download office-suite.mcpb from the latest release and double-click it in Claude Desktop.

Hosted endpoint (no install): https://mcp.zovo.one/mcp/office-suite (streamable-http; send Authorization: Bearer <Pro key or anonymous token from https://mcp.zovo.one/mcp/token>).

Read-only mirror of mcp-servers/servers/office-suite. See MIRROR.md.

One install for the whole freelancer office. This MCP server proxies four sibling servers -- time-tracker, price-tracker, spreadsheet and invoice -- so a client gets every tool from all four behind a single config entry instead of four. 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.

60-second install

npm publish for @theluckystrike/mcp-office-suite (and its four 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-suite

Cursor (.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 build

npm run build (no -w) is required here -- it builds mcp-license and all four sibling servers that office-suite spawns as children, 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.

Related MCP server: Multi MCP

Why one server instead of four

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 four 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 -- this has not happened yet among the four servers below.

time-tracker

Tool

What it does

timer_start

Start a stopwatch for a project; stops and logs any previous running timer

timer_stop

Stop the running timer and log it as a time entry

timer_status

Show the running timer and today's total hours

entry_add

Log time you already worked, with a start plus end or minutes

entry_list

List logged time entries as a table (free: last 7 days)

entry_delete

Delete one time entry by id

entry_edit

Change fields of an existing entry

project_set_rate

Set the hourly rate and currency for a project

report

Hours and money by project, day, task or tag (tag grouping is Pro)

export_csv

Export the timesheet to a CSV file

invoice_summary

Turn tracked billable time into invoice line items

price-tracker

Tool

What it does

price_check

Check a product's current price right now

watch_add

Start watching a product URL for price drops

watch_list

List all watched products and their latest price

watch_remove

Stop watching a product

watch_refresh

Re-check all watches (or one) immediately

price_history

Price history for one watched product

price_add_manual

Record a price by hand, for sites that block fetching

alerts_pending

Watches that dropped below their target price

spreadsheet

Tool

What it does

sheet_info

Overview of a CSV/XLSX file: sheets, columns, row count

sheet_read

Read rows from a spreadsheet

sheet_query

Filter, group and sort rows

sheet_stats

Per-column statistics (min, max, mean, sum, distinct)

sheet_find

Find text across a spreadsheet

sheet_write

Write rows into a spreadsheet

sheet_add_column

Add a computed column

sheet_convert

Convert between CSV and XLSX

invoice

Tool

What it does

business_set

Set your business profile: name, address, VAT id, IBAN, default currency and terms

client_add

Store a client so invoices can refer to them by name

client_list

List every stored client

invoice_create

Create an invoice from line items, with tax and discount

invoice_from_hours

Create an invoice from hours worked at a rate

invoice_list

List invoices

invoice_get

Get one invoice by id or number

invoice_mark_paid

Record a payment against an invoice

invoice_pdf

Render an invoice as a PDF file

overdue_report

Invoices past their due date, by how many days (Pro)

Bundle-wide

Tool

What it does

license_status

Free/Pro status of every proxied server, and the bundle upgrade link

license_activate

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 servers/time-tracker/README.md, servers/price-tracker/README.md, servers/spreadsheet/README.md, servers/invoice/README.md). This bundle changes nothing about those limits -- it only changes how many config entries it takes to reach all four.

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 all four children.

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 in write() 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 four 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 tools
alerts_pendingPending alertsA

Answer "did anything I watch get cheaper?": lists every watch whose latest price is at or below its target, or which dropped 5% or more against the previous observation, with the change % and the reading confidence.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of disclosing behavior. It is transparent about what the tool returns: watches meeting the stated price-drop criteria, along with change percentage and reading confidence. It does not mention data freshness or whether it triggers refreshes, but for a list-like read operation this is reasonably complete.

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

Conciseness5/5

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

A single sentence packs the purpose, the triggering question, the two inclusion criteria, and the key output fields without any filler. It is front-loaded with the user intent and stays tightly scoped.

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

Completeness4/5

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

For a zero-parameter tool, the description is sufficient to call it and understand the return value's key fields. It leaves minor ambiguity around terms like 'target' and 'previous observation', but the overall behavior is clear and no output schema exists to compensate.

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

Parameters4/5

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

The tool has zero parameters, so the input schema is empty and 100% covered. The description does not need to document parameter semantics. Baseline 4 applies because there is nothing missing for an invocation.

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

Purpose5/5

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

The description states a specific action ('lists every watch') and defines the exact conditions for inclusion (price at/below target, or ≥5% drop). It clearly differentiates itself from siblings like watch_list (all watches) and price_check (single current price) by focusing on pending discount alerts.

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

Usage Guidelines4/5

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

The opening phrase 'Answer "did anything I watch get cheaper?"' gives a clear trigger for when to use this tool. It does not explicitly exclude alternatives such as price_check or watch_list, but the use case is implied well enough for an agent to select it correctly.

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 the business days between two dates in a place, for delivery dates and payment terms. Returns the business-day count, the calendar total, and how many days fell on a weekend or on a holiday you passed.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesEnd date, YYYY-MM-DD (inclusive)
fromYesStart date, YYYY-MM-DD (inclusive). A date that does not exist, such as 2026-02-30, is refused, never rolled forward
zoneYesPlace whose calendar to use
holidaysNoDates 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

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does explain what the tool returns: the business-day count, calendar total, and weekend/holiday counts, which gives a useful model of behavior. However, it does not explicitly state the important limitation that there is no built-in national holiday calendar and that holidays must be passed by the caller; that information exists in the schema instead.

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

Conciseness5/5

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

The description is two sentences with no wasted words. It front-loads the core purpose, then immediately states the return values, which is exactly the information an agent needs to invoke and interpret the tool correctly.

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

Completeness4/5

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

For a simple calculation tool with four documented parameters and no output schema, the description is nearly complete: it states the operation, use context, and returned components. The only minor gap is that the description leaves the holiday-calendar limitation implicit, but the schema explicitly covers it, so the agent can still call the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters in detail. The description adds use-case context and return semantics but does not provide meaning beyond the schema for individual parameters. A baseline of 3 is therefore appropriate.

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

Purpose5/5

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

The description states a specific action and resource: 'Count the business days between two dates in a place.' It also names concrete use cases ('delivery dates and payment terms') and the output components, making the tool's purpose unambiguous. No sibling tool overlaps, so further differentiation is unnecessary.

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

Usage Guidelines4/5

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

The description gives clear context for when to use the tool: counting business days in a place, especially for delivery dates and payment terms. It does not explicitly name alternatives or exclusions, but no sibling tool appears to offer the same calculation, so the context is sufficient for an agent to select it.

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

What is cached on this machine, how old it is, and when it will next be refreshed. Answer this before trusting a rate on a machine that has been offline.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral disclosure burden. It transparently indicates a read-only status operation scoped to the local machine, and it sets expectations about the kind of information returned (cached items, age, refresh time). It does not explicitly state that the operation has no side effects, but 'status' implies a non-mutating check.

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

Conciseness5/5

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

The description is two concise sentences with no filler. The first sentence front-loads the core output fields, and the second sentence adds an important usage caution. Every word earns its place.

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

Completeness5/5

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

For a zero-parameter status tool with no output schema, the description fully covers what the agent needs: what the tool reports, its local/offline context, and when to consult it. Nothing critical is missing for correct invocation.

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

Parameters4/5

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

The tool has zero parameters, so there are no parameter semantics to explain. The description sufficiently substitutes for an empty schema by describing what the tool reports, and the baseline for zero-parameter tools is 4.

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

Purpose4/5

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

The description clearly specifies that the tool reports what is cached, how old the cache is, and when it will refresh. This differentiates it from sibling rate/value tools by focusing on cache state rather than rate data itself, though it lacks an explicit verb like 'returns' or 'shows'.

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

Usage Guidelines4/5

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

The description gives a clear context for use: check this before trusting a rate on a machine that has been offline. It does not discuss when not to use it or name alternative tools, but the provided guidance is actionable and specific.

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

Every calendar imported into this server: its name, where it came from, how many event definitions it holds and when it was imported.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavior disclosure burden. It is transparent about the operation's scope ('Every calendar imported into this server') and the exact data fields returned, which effectively communicates a read-only listing behavior. It does not spell out side effects or failure modes, but the verb 'List' and the descriptive sentence make the non-destructive nature evident.

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

Conciseness5/5

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

The description is a single concise sentence that front-loads the subject and scope, then lists the returned attributes. There is no redundancy, filler, or unnecessary detail; every part of the sentence contributes to the agent's understanding.

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

Completeness4/5

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

For a zero-parameter, no-output-schema list tool, the description covers the essential information needed to call it: what is listed, the scope, and the fields in the result. It does not mention ordering, pagination, or empty-result behavior, but those are minor for this simple metadata-listing tool and are not required by the input schema or annotations.

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

Parameters4/5

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

The tool has zero parameters, so there is no parameter-semantics burden on the description. The schema is fully coverage because there is no schema to explain. This meets the baseline 4 for a no-parameter tool.

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

Purpose5/5

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

The title 'List imported calendars' states a specific verb and resource, and the description expands on it: it enumerates exactly what will be returned—name, source, event definition count, and import date. This clearly distinguishes it from sibling tools like schedule_list or events_list, which concern schedules and events rather than calendar import metadata.

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

Usage Guidelines3/5

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

The description implies usage: use this tool to inspect imported calendars on the server. However, it provides no explicit guidance about when to prefer it over alternatives, and it does not excludeevent or schedule listing tools. For a simple zero-parameter list tool this is acceptable, but not fully explicit.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe 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
tagsNo
titleYesClause heading, for example 'Late Payment'
categoryYesGrouping. 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
languageNoISO language code, default en
variablesNoDeclared variable names. Anything {{...}} in the body is detected anyway
jurisdictionNoWhere the clause is meant to apply, for example 'PL' or 'England and Wales'

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

With no output schema, the description 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.

Parameters3/5

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.

Purpose4/5

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

The description uses a specific verb and resource: '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.

Usage Guidelines3/5

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

Remove a clause from the library. A deleted starter clause is not re-seeded on the next call.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesClause id or exact title

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses one valuable non-obvious trait — 'A deleted starter clause is not re-seeded on the next call' — which tells the agent the deletion is persistent even for starter clauses. However, for a destructive operation it does not disclose cascading effects on contracts assembled from the clause, idempotence when the id does not exist, or reversibility, leaving significant behavioral gaps.

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

Conciseness5/5

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

Two sentences, each earning its place: the first states the primary action, the second adds a crucial behavioral caveat about starter clauses. The main action is front-loaded and there is no filler or redundant restating of the title.

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

Completeness4/5

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

For a simple tool — one required parameter, full schema coverage, no output schema — the description covers purpose and the key persistence behavior. Minor gaps remain: behavior when the id or title does not match any clause, and whether deleting a clause impacts contracts that reference it. These are moderate but not blocking for a single-parameter delete operation.

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

Parameters3/5

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

Schema description coverage is 100% — the 'id' parameter is documented as 'Clause id or exact title' — so the baseline of 3 applies. The description adds no parameter-level detail, such as how to resolve an exact title or what happens when the id is not found. The schema carries the full weight, and the description does not compensate beyond it.

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

Purpose5/5

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

The description states a specific verb and resource: 'Remove a clause from the library.' This clearly distinguishes the tool from its siblings — clause_add, clause_get, clause_update, clause_list, clause_search — which perform different operations. The title and description align, so an agent can identify the tool's purpose without opening the schema.

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

Usage Guidelines3/5

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

Usage is implied by the verb: an agent can infer this tool is for removing a clause. However, the description gives no explicit when-to-use or when-not-to-use guidance, and does not mention alternatives such as clause_update for editing instead of deleting or clause_search for locating the clause first. The re-seeding caveat is more behavioral context than routing guidance.

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 clause library out to one file. Returns the destination path, the format used and how many clauses were written.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesDestination file path. The clauses are written in assembly order, categories first
formatYesjson (a Pro feature) or markdown (works in the free tier)
overwriteNoReplace the destination if a file is already there. Without it an existing file is never touched

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does a good job: it discloses the side effect (writing the library to a file) and the return contract (path, format, clause count). It could also mention failure behavior or explicitly state that the source library is not modified, but the core behavioral contract 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.

Conciseness5/5

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

The description is two sentences with no wasted words. The action and scope are front-loaded, and the second sentence gives a compact list of return values. Every sentence earns its place.

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

Completeness4/5

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

For a relatively simple export tool with 3 parameters, no output schema, and a clear schema, the description plus schema provides enough context for correct invocation: destination path, required format, overwrite behavior, return values, and scope. It doesn't discuss error cases or the Pro-vs-free behavior beyond what the schema notes, but those are secondary for a straightforward export.

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

Parameters3/5

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

Schema description coverage is 100 per cent, and each parameter already has a meaningful description. The tool description adds no additional parameter-level semantics; it only reinforces the overall scope. A baseline score of 3 is appropriate when the schema carries the parameter-documentation load.

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

Purpose5/5

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

The description uses a specific verb ('write'), names the resource ('the whole clause library'), and states the output ('one file'), which clearly differentiates it from per-clause operations like clause_get, clause_add, and clause_import. The scope qualifier 'whole' removes ambiguity about partial exports.

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

Usage Guidelines4/5

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

It explicitly opens with 'Call this tool to...' and defines the intended use case for exporting the full clause library. It doesn't name alternatives or state when not to use it, but the use case is clear enough that an agent would not confuse it with the many unrelated sibling tools.

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 a clause in full by id or by title, with its variables and, in Pro, its revision count.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoClause id, for example late-fees
titleNoClause title; a partial title matches too

TDQS

A3.5/5.0
Behavior2/5

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 mentions the 'Pro' revision-count behavior but omits error handling, precedence rules, or any side effects.

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

Conciseness5/5

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

A single sentence that is compact and directly states the action, target, and notable output detail.

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

Completeness3/5

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

Describes the return value but leaves gaps around parameter requirements, not-found behavior, and interaction between id and title. Adequate for a simple read but not fully complete.

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

Parameters3/5

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

Schema covers both parameters with short descriptions; the tool description repeats them but adds little beyond the schema, so it meets the baseline for high coverage.

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

Purpose5/5

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

States a specific verb ('Return') and resource ('a clause in full'), with details about variables and revision count that distinguish it from list/search operations.

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

Usage Guidelines3/5

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

Clearly indicates retrieval by id or title, but does not explicitly mention when to prefer list/search alternatives or what happens if both parameters are omitted.

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 bulk-load clauses into the library from a markdown or JSON file. Returns how many clauses were added, replaced, skipped and blocked by the free clause cap, plus the new library total.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath 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
overwriteNoReplace clauses whose title already exists instead of skipping them

TDQS

A4.3/5.0
Behavior4/5

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 states that imports can be added or replaced, that some may be skipped or blocked by the free clause cap, and it describes the exact return information (counts plus new library total). This gives the agent meaningful awareness of side effects and outcomes beyond a simple one-line summary.

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

Conciseness5/5

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

Two sentences with no wasted words. The first sentence states the purpose and scope; the second sentence describes the return value. The most important behavioral outcome, bulk-loading from file, is front-loaded.

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

Completeness5/5

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

The tool's purpose, source format, overwrite option, and return metrics are all covered either in the description or the parameter descriptions. Since there is no output schema, the description appropriately discloses the return payload. No critical missing information prevents an agent from calling it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, and both node parameters are already thoroughly documented in the schema. The description adds no additional parameter semantics because the schema already explains path formats, JSON Pro restriction, overwrite behavior, and the free clause cap. Baseline 3 applies.

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

Purpose5/5

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

The description uses a specific verb ('bulk-load') with a clear resource ('clauses into the library') and source ('markdown or JSON file'). This clearly distinguishes it from single-clause tools like clause_add and export tools like clause_export.

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

Usage Guidelines4/5

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

The opening phrase 'Call this tool to bulk-load' clearly identifies the intended use case. It signals that this is for batch importing rather than individual clause operations, and the sibling list reinforces the contrast with clause_add. It does not explicitly exclude alternatives, but the intended scenario is clear.

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 every clause, newest categories first, optionally narrowed to one category.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNo

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must carry behavioral disclosure. It does state ordering ('newest categories first') and the read-only nature implied by 'List', but the ordering phrase is ambiguous and pagination, return format, or potential limits are not disclosed. It adds some behavior context but not full clarity.

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

Conciseness4/5

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

The description is a single sentence with no filler and the core action is front-loaded. The phrase 'newest categories first' is somewhat awkward but the description remains appropriately compact.

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

Completeness3/5

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

For a simple one-parameter list tool, the description covers the core scope and filtering behavior. However, the ambiguous ordering phrase and complete lack of output/return details, especially with no output schema or annotations, leave a meaningful gap for an agent trying to reliably use the result.

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

Parameters4/5

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

The schema has one undocumented 'category' string with 0% description coverage. The description compensates by explaining that the list can be 'narrowed to one category,' giving the parameter a clear role. It does not enumerate valid values or format, but for a simple optional filter this is sufficient.

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

Purpose5/5

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

Description uses a specific verb and object: 'List every clause.' It also states the optional category filter, which clearly distinguishes this broad listing tool from focused retrieval tools like clause_get or clause_search. The resource and scope are immediately understandable.

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

Usage Guidelines3/5

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

The description implies usage: use this to list all clauses, optionally filtered by category. However, it does not explicitly contrast with clause_search or clause_get, and provides no when-not-to-use guidance. Context is present but exclusions and alternatives are left to inference.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesClause id or exact title
bodyNo
tagsNo
titleNo
categoryNo
languageNo
variablesNo
jurisdictionNo

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description carries the 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 clientC

Store a client so invoices can refer to them by name. Re-adding the same name updates the stored details; a record identical to one already stored is refused, naming the id that holds it.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
emailNo
vat_idNoClient VAT id, printed for reverse-charge invoices
addressNo

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses two important behaviors: re-adding the same name updates stored details, and an identical record is refused with the id of the existing record. This gives useful idempotency and duplicate-handling context, but it omits return value, permission requirements, and whether other fields are cleared when updating.

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

Conciseness4/5

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

Two sentences with no fluff. The core purpose is front-loaded, and the behavioral nuance about update/duplicate refusal follows naturally. It is appropriately concise for a CRUD operation.

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

Completeness2/5

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

For a tool with no output schema, no annotations, and only 25% parameter coverage, the description is incomplete. It doesn't explain the response structure (e.g., the returned id), how updates affect unspecified fields, or any required permissions. An agent would need to make assumptions or call the tool to learn more.

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

Parameters2/5

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

Schema coverage is only 25% (vat_id has a description). The description adds meaning for the 'name' parameter as the matching key for updates and duplicate detection, but it doesn't explain email, address, or vat_id beyond what the schema provides. Given the low coverage, the description should compensate more than it does.

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

Purpose4/5

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

The description clearly states the verb 'Store a client' and the purpose 'so invoices can refer to them by name.' It is specific to client_add and distinguishes its upsert behavior from a plain create, though it doesn't explicitly contrast with sibling tools like client_delete 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.

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives. It doesn't mention client_list for viewing, client_delete for removal, or any prerequisite context. The agent must infer usage from the description alone.

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 a stored client that nothing uses. A client still referenced by an invoice, quote, credit note, purchase order, deposit, statement or recurring schedule is refused, with the document named.

ParametersJSON Schema
NameRequiredDescriptionDefault
clientYesClient name or id, exactly as client_list shows it

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It clearly reveals that deletion is conditional and that the tool names any referencing document when refusing deletion. It is not annotated as destructive, but the word 'Delete' inherently signals destruction, and the description adds non-obvious dependency behavior.

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

Conciseness5/5

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

Two succinct sentences with no filler. The first sentence states the action and precondition, the second details the refusal behavior with a specific list of document types. Front-loaded and easy to parse.

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

Completeness4/5

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

For a single-parameter delete tool with no output schema, the description covers the main behavior, the dependency restriction, and the error response style. A minor gap is that it does not state success response behavior, but the core information needed to select and invoke the tool correctly is present.

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

Parameters3/5

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

The input schema already fully documents the only parameter with the note 'Client name or id, exactly as client_list shows it.' The description adds no additional parameter-level meaning, so the baseline of 3 applies because the schema is doing the heavy lifting.

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

Purpose5/5

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

The description states a specific action and resource: delete a stored client, and clarifies the key condition that it must be unused. This clearly distinguishes it from sibling tools like client_add and client_list, and the title 'Delete a client' is reinforced rather than merely restated.

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

Usage Guidelines4/5

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

The description gives clear context: use this when you want to delete a client that has no references, and it warns that referenced clients will be refused. It does not name an alternative tool, but no close alternative for deletion exists among siblings, so the guidance is adequate.

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 their id, address, email and VAT id.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

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

Since no annotations are provided, the description carries the burden of behavioral disclosure. It states that the operation is non-mutating (list), has no filtering ('every stored client'), and reveals the returned fields. It does not mention pagination, sorting, or authorization, but for a simple zero-parameter read-only tool this is sufficient context.

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

Conciseness5/5

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

The description is a single, efficient sentence with no redundant wording. It front-loads the core action and scope, then lists the relevant output fields, so every word earns its place.

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

Completeness5/5

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

For a zero-parameter tool with no output schema and no annotations, the description is complete enough for an agent to invoke it correctly. It clearly states the scope ('every stored client') and the fields that will be returned, leaving no significant gap.

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

Parameters4/5

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

The input schema has zero parameters, so there is no parameter information that the description needs to enrich. The baseline of 4 applies because no parameter semantics are missing.

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

Purpose4/5

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

The description names a specific action and resource ('List every stored client') and specifies the returned fields (id, address, email, VAT id), so it is clear and not a tautology. It does not explicitly name or distinguish itself from sibling list tools such as contacts_list, so it falls short of full differentiation.

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

Usage Guidelines3/5

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

No explicit guidance is given about when to use this tool versus alternatives, and no sibling tool is referenced. The intended usage is only implied by the action 'List' and the resource 'every stored client'.

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

conflictsFind double bookingsA

Every pair of events overlapping in time, with minutes they collide. Across all calendars unless one named, so a clashing work/family event is caught. Whole-day events reported separately. Free: 31 days; Pro: any window.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesLast day, YYYY-MM-DD, included
fromYesFirst day, YYYY-MM-DD
calendarNoOne calendar name; default every imported calendar

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full transparency burden. It discloses the core behavioral traits: returns all overlapping pairs, includes collision minutes, handles whole-day events separately, and enforces a plan-based date window. It could add output structure details, but it covers the most important behaviors for correct invocation.

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

Conciseness5/5

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

Three tightly written sentences lead with the primary semantic, then add scope, special cases, and plan limits. Every sentence provides actionable information with no filler.

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

Completeness4/5

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

For a read-only detection tool with three parameters and no output schema, the description gives enough behavioral and contextual information to select it and call it correctly. It leaves some return-format details unspecified, but the core semantics are covered.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. Descriptions of from, to, and calendar already exist in the schema; the tool description mostly repeats the calendar default and adds a plan limit, but adds little 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.

Purpose5/5

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

The description clearly defines the tool as finding every pair of overlapping events and reporting the collision minutes. It also notes that it spans all calendars by default unless one is named, which sharply distinguishes it from single-calendar event 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.

Usage Guidelines4/5

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

The description gives concrete context for when to use the tool: when cross-calendar clashes matter, and it explains the optional calendar parameter behavior. It does not explicitly name alternatives or say when not to use it, but the use case is strongly implied.

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

Everyone you have saved, with their current local time and whether they are inside working hours right now.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations present, the description carries the burden of conveying side effects. Listing saved contacts is clearly a read-only operation, and the description adds useful context about computed fields (current local time and working-hours status), though it does not explicitly state that no data is modified.

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

Conciseness5/5

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

The description is a single, concise sentence that conveys the core function and the extra computed information. There is no redundancy or unnecessary detail.

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

Completeness4/5

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

For a simple parameterless list tool, the description provides sufficient context: it names the resource, the scope ('everyone you have saved'), and the enriching fields (local time and working-hours status). It could be slightly more explicit about the output shape, but that is not critical for such a simple tool.

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

Parameters4/5

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

The tool has zero parameters, so there are no parameter details to document. The baseline for no parameters is 4, and the description appropriately focuses on the output and behavior rather than input fields.

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

Purpose5/5

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

The description clearly states that the tool returns all saved contacts along with their current local time and working-hours status. The title reinforces the resource (saved contacts) and the action (list), distinguishing it from the related contacts_set tool.

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

Usage Guidelines3/5

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

The intended use is implied by the title and description: use this when you need to see saved contacts and their time/working-hours info. However, it does not explicitly contrast with alternatives like contacts_set or mention conditions when this tool should be preferred.

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

contacts_setSave a contact's zoneB

Remember a client or teammate's time zone and working hours so you can say 'find a slot with Maria and Raj' later.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesTheir name
zoneYesTheir place or IANA zone
work_endNoLocal day end, default 17:00
work_startNoLocal day start, default 09:00

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full disclosure burden, but it only says 'Remember' and describes the future benefit. It does not state whether an existing contact with the same name is upserted, whether a new contact is always created, or what the tool returns/side effects are.

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

Conciseness4/5

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

Single-sentence, front-loaded with the core action and resource, and uses an illustrative example instead of restating schema. The phrase 'later' appears once in the main clause and once in the example, a tiny redundancy.

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

Completeness3/5

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

For a simple set operation, the schema plus description cover required inputs and the purpose. The main missing context is mutational behavior (create vs update) and success/failure output, which no annotation or output schema helps fill.

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

Parameters3/5

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

All four parameters are documented in the schema (100% coverage), so the description does not need to repeat details. It adds only the high-level 'time zone and working hours' framing and the scheduling use case, which is sufficient but minimal.

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

Purpose4/5

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

The description uses a clear verb ('Remember') and identifies the resource ('a client or teammate's time zone and working hours'), then ties it to a concrete downstream use case. It does not explicitly contrast with contacts_list or explain whether setting overwrites, but 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.

Usage Guidelines3/5

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 want to store a person's zone and hours for later scheduling. It provides no exclusions or comparison with sibling tools such as contacts_list or find_meeting_slots, so an agent must infer the exact boundary.

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 or proposal document from library clauses. Returns the path written, the clauses used in document order, which variables were filled, and the facts still missing as bracketed prompts.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesDocument title, for example 'Service Agreement - Beta Corp'
clientNoClient name; also fills the {{client}} variable
formatNodocx (default) or markdown; the document opens with the not-legal-advice line either way
valuesNoValues 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_pathNoWhere to write the file. Default: the server data directory, under a name built from the client and the title
overwriteNoReplace out_path if a file is already there. Without it an existing file is never touched
categoriesNoInstead of ids: every clause in these categories, ordered by category. Free tier: up to 8 clauses per document
clause_idsNoClause ids in the order they should appear; this is the document order. Free tier: up to 8 clauses per document

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden, and it delivers a clear return contract: path written, clauses in document order, filled variables, and missing facts left as bracketed prompts. This complements the schema's 'never as an invented value' guarantee. It does not explicitly flag the file-writing side effect or overwrite behavior, though those are well documented in the overwrite parameter's schema description.

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

Conciseness5/5

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

Two sentences with zero waste: the first front-loads the action verb and resource, the second packs return-value details into a single dense clause. Every phrase ('path written', 'document order', 'filled variables', 'bracketed prompts'') conveys information not present elsewhere in prepared form.

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

Completeness4/5

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

For a tool with 8 parameters, a nested values object, no output schema, and no annotations, the combination of an exhaustively documented schema and a description that covers return semantics is fairly complete. The remaining gaps are tool-selection guidance against sibling creation tools and a top-level side-effect statement, but the agent can correctly invoke this tool from what is provided.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 even though the description adds no new parameter-level meaning. The return-value sentence does reinforce the semantics of clause_ids (document order) and values (missing facts stay as bracketed prompts), but the schema already explains every parameter in detail. No uplift above baseline is earned.

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

Purpose5/5

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

The description names a specific verb ('build'), a clear resource ('contract or proposal document'), and the mechanism ('from library clauses'), which separates it from siblings like contract_create and proposal_create. The scope is explicit and an agent can tell this assembly tool apart from the clause-library management tools without inspecting schemas.

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

Usage Guidelines3/5

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

The phrase 'build a contract or proposal document from library clauses' implies the use case: assembling documents from an existing clause library. However, the description gives no explicit when-not-to-use guidance and never names the overlapping siblings (contract_create, proposal_create, doc_fill_template), so routing between those alternatives is left to inference.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
feeYes
clientYesThe client's legal name
clausesNoExtra clauses to append, one paragraph each
end_dateNoYYYY-MM-DD, omit for an open-ended engagement
out_pathNoWhere to write the .docx. Defaults to the data directory
servicesYesWhat 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
overwriteNoReplace out_path if a file is already there. Default false: an existing file is never overwritten
start_dateYesYYYY-MM-DD
governing_lawNoe.g. 'the laws of Poland'

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoCurrency 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
dateNoISO 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
fromYesCurrency the amount is in. Cross rates go through the euro, the only pair the ECB publishes
amountYesAmount in major units of the from currency, e.g. 100 or 12.34

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full 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.

Conciseness5/5

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.

Completeness5/5

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

There is no output schema, 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

One amount, one source currency, many targets, all off the same ECB rate date. Each result is rounded to that target's own minor units.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesTarget currencies
fromYes
amountYes

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral burden. It adds meaningful behavioral details beyond the schema: all conversions share the same ECB rate date, and each result is rounded to its target currency's minor units. It does not describe the response shape, but the described behavior is clear and non-contradictory.

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

Conciseness5/5

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

Two concise sentences deliver the core behavior without wasted words. The key constraint (one source, many targets, same rate date) is front-loaded, and the rounding detail adds value without bloating the description.

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

Completeness3/5

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

The description covers input semantics and key behavior, but there is no output schema and no explanation of what the result format looks like. An agent can invoke the tool reasonably well, but it cannot predict whether the response is an array, a map keyed by currency, or something else.

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

Parameters4/5

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

Schema description coverage is only 33%, so the description must compensate. It maps 'amount' to the single input amount, 'from' to the source currency, and 'to' to the many target currencies. This gives the agent the parameter roles even though the schema only documents 'to' with a brief description.

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

Purpose5/5

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

The description states a specific verb ('Convert') with a precise resource scope: one amount, one source currency, many target currencies, all using the same ECB rate date. The 'many targets' qualifier clearly distinguishes this tool from the sibling 'convert' and other rate-related tools.

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

Usage Guidelines4/5

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

The description clearly implies the intended use case: converting one amount into multiple currencies at once. It does not explicitly name alternatives or state when not to use the tool, but the 'one source, many targets' framing gives an agent enough context to select it over the singular 'convert' sibling.

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 zonesB

Convert a time from one place to others. The input time is read as wall-clock time in from_zone unless it carries an offset or a trailing Z. Accepts '2026-09-10 15:00', an ISO timestamp, or a phrase like '3pm tomorrow'.

ParametersJSON Schema
NameRequiredDescriptionDefault
gapNoWhat 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.
foldNoWhich occurrence of a time that happens twice because the clocks went back. Default 'first'.
timeYes'2026-09-10 15:00', '2026-09-10T15:00:00Z', '3pm tomorrow', 'now'
to_zonesYesPlaces to convert into
from_zoneYesPlace the time is given in, e.g. 'Warsaw' or 'Europe/Warsaw'

TDQS

B3.4/5.0
Behavior3/5

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 genuine value: the wall-clock interpretation rule, the offset/trailing-Z exception, and the natural-language input support. However, it omits the output format and error/edge-case behavior (though the gap/fold enums are already documented in the schema), so coverage is partial rather than comprehensive.

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

Conciseness5/5

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

Three sentences with zero waste. The primary action is front-loaded in the first sentence, the interpretation rule follows, and the accepted formats close it out. Every sentence earns its place with distinct information.

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

Completeness3/5

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

Input handling is well covered (parsing rules, accepted formats, zone interpretation), and the gap/fold DST edge cases are documented in the schema. But with no output schema and no annotations, the description should have disclosed what the response looks like or how results are shaped; its omission leaves an agent to invoke the tool without knowing what to expect back. Moderate complexity (4 optional edge-case params) was not fully exploited.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds real meaning beyond the schema: it explains that 'time' is read as wall-clock in from_zone unless it carries an offset or trailing Z, enumerates accepted formats (datetime string, ISO, '3pm tomorrow'), and clarifies that multiple target zones are expected. This materially helps an agent construct valid inputs.

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

Purpose4/5

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

The description states a specific verb ('Convert'), resource (time), and scope ('from one place to others'), making the core function clear. The parsing rules and accepted input formats add further specificity. However, it does not differentiate itself from sibling tools like 'convert' or 'convert_many', which could plausibly do the same job.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus the several time-related siblings ('now', 'convert', 'convert_many', 'dst_changes', 'business_days'). There is no mention of exclusions, prerequisites, or conditions that would select this tool over an alternative.

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 from the stored profile: opening, fit, proof, close. Returns the output path, the word count, and every bracketed prompt left for you to fill in.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYes
toneNoDefault "formal".formal
companyYes
out_pathNoWhere to write the .docx. Defaults to <data dir>/documents/<company>-<role>-cover-letter.docx, numbered -2, -3, ... if that exists.
overwriteNoReplace an existing file at out_path. Default false: the call fails and nothing is written.
highlightsNoPoints to lead with. Each is checked against the profile; anything not found there is returned as a bracketed prompt, not printed as fact.
hiring_managerNo
job_descriptionNoPaste 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

A3.8/5.0
Behavior3/5

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

There are no annotations, so the description carries the burden of explaining behavior. It discloses that the tool writes a cover letter, uses the stored profile, and returns the output path, word count, and unresolved bracketed prompts. It does not mention overwrite/failure behavior or the need for a pre-existing profile, but the write action is explicit.

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

Conciseness5/5

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

The description is two concise, front-loaded sentences. It states the action and scope immediately, then adds valuable return-value context. There is no filler or redundant rewording of the schema.

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

Completeness3/5

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

For an 8-parameter tool with no annotations and no output schema, the description covers core returns and document scope, but omits required parameters, preconditions, overwrite semantics, and how to choose this over resume_create/proposal_create. It is minimally viable but has clear gaps.

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

Parameters2/5

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

Schema description coverage is only 63%, and the description adds little per-parameter meaning. The 'bracketed prompt' phrase echoes what the highlights schema already says; parameters like role, company, and hiring_manager remain undocumented in both the schema and description.

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

Purpose5/5

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

The description states a specific verb ('write'), a specific resource ('one-page cover letter'), and a clear source ('from the stored profile'). It also gives the document structure ('opening, fit, proof, close'), which distinguishes it from sibling tools like resume_create or proposal_create.

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

Usage Guidelines4/5

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

The description explicitly tells the agent when to use it: when a one-page cover letter should be written from the stored profile. It does not name alternatives or exclusions, but the intended trigger is clear enough for an agent to select it appropriately.

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 reference set, with its rate against the euro and the number of decimal places it is rounded to. Anything not on this list cannot be converted here.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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 discloses the data source (ECB daily reference set), the fields returned (rate against euro and decimal places), and the scope limitation. While it does not state return formatting or ordering, it provides solid transparency for a simple read-only listing tool.

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

Conciseness5/5

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

The description is compact: two sentences that front-load the core purpose and then add the important constraint about unsupported currencies. Every sentence earns its place and there is no redundant or filler wording.

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

Completeness4/5

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

For a parameterless listing tool with no output schema, the description gives enough information about the result contents and scope to be usable. A minor gap is that it does not mention how to request specific data or how results are ordered, but those are not critical for this simple tool.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4. The description appropriately focuses on what the tool returns rather than parameter details, since there are none to document.

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

Purpose5/5

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

The description clearly states that this tool returns every currency in the ECB daily reference set along with its euro rate and decimal places. It also establishes a clear boundary by noting that anything not on the list cannot be converted, which differentiates it from sibling conversion tools.

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

Usage Guidelines3/5

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

The description implies the tool should be used to check which currencies are supported for conversion, especially through the sentence 'Anything not on this list cannot be converted here.' However, it does not explicitly say when to use this tool versus sibling tools like rates_latest, convert, or fx_rates_for.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate line for the letter layout, default today
styleNoLayout, 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
titleYesDocument title, used as the top heading and the file name
out_pathNoWhere to write the .docx. Defaults to the data directory
sectionsYesSections in order. Each one may carry a heading, paragraphs, a bullet or numbered list and a table
overwriteNoReplace out_path if a file is already there. Default false: an existing file is never overwritten
recipientNoAddressee block for the letter layout

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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 an existing .docx and write a new file. Returns the new path and which placeholders were replaced, unfilled or ignored. Call with no values to list a template's placeholders.

ParametersJSON Schema
NameRequiredDescriptionDefault
valuesNoPlaceholder name to value, e.g. {client: "Acme", fee: "EUR 4,500.00"}
out_pathNoWhere to write the filled .docx. Defaults to <template>-filled.docx
overwriteNoReplace out_path if a file is already there. Default false: an existing file is never overwritten
template_pathYesPath 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

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden, and it discloses the key behaviors: writing a new file, returning the new path, and reporting replaced, unfilled, and ignored placeholders. It also adds the non-obvious behavior that calling with no values lists placeholders instead of filling. It could state explicitly that the original template is never modified, but 'write a new file' plus the schema's out_path default make this 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.

Conciseness5/5

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

The description is two sentences with the primary action front-loaded. It includes only essential information: the operation, the return value, and the alternate listing mode. No filler or duplication of schema details.

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

Completeness4/5

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

With no annotations and no output schema, the description still covers the main call, the return payload, and the no-values listing mode. It relies on the schema for overwrite and out_path details, which is acceptable, and it could add a brief note that the original template itself is not modified, but overall it is complete enough 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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaningful value by explaining that omitting values triggers placeholder listing. This clarifies that values is optional and that an empty/absent values object has a distinct, useful behavior. The ignored-status language also helps the agent interpret values that do not match any placeholder.

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

Purpose5/5

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

The description explicitly states the action: replace {{placeholders}} in an existing .docx and write a new file. It also distinguishes the tool from document creation/reading siblings like doc_create, doc_read, and cover_letter_create by focusing on template filling.

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

Usage Guidelines4/5

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

The phrase 'Call this tool to replace {{placeholders}}' clearly establishes the primary use case, and the no-values listing mode provides a secondary use. It does not explicitly name sibling alternatives or when-not-to-use conditions, but the intended context is clear.

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

doc_from_markdownMarkdown to WordB

Call this tool to turn markdown into a .docx. Returns the file path and a count of the blocks written, by type. Free and unlimited.

ParametersJSON Schema
NameRequiredDescriptionDefault
styleNo
titleNoDocument title; defaults to the first heading in the markdown
markdownYesThe 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_pathNoWhere to write the .docx. Defaults to the data directory
overwriteNoReplace out_path if a file is already there. Default false: an existing file is never overwritten

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and it does add beyond-schema value: it states the return payload ('a count of the blocks written, by type'), important since no output schea exists, and the policy 'Free and unlimited'. It does not describe failure behavior when a file already exists or conversion errors, though the overwrite default is already captured in the schema.

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

Conciseness4/5

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

Three short sentences with the core purpose front-loaded in the first. The imperative 'Call this tool to' is slightly redundant framing and 'Free and unlimited' is ancillary, but overall the text is compact, scannable and every substantive piece earns its place.

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

Completeness3/5

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

For a 5-parameter tool with 1 required and no output schema, the description plus schema covers the essentials: purpose, return value, parameter defaults and overwrite policy. It is weak on routing among the many document siblings and silent on error/conflict behavior, but for a simple conversion tool this is adequate rather than deficient.

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

Parameters3/5

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

Schema description coverage is 80%, above the high threshold, so the baseline applies. The description adds no parameter-level meaning: the markdown parameter is already extensively documented in the schema and the style enum values are self-seplanatory. The mention of block counts hints at supported constructs but adds nothing beyond the schema's list of headings, lists, tables and code blocks.

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

Purpose4/5

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

The descrition uses a clear verb+resource framing: 'turn markdown into a .docx', with the title 'Markdown to Word' reinforcing the same conversion. It is unmistakably a markdown-to-docx converter and the direction implicitly sets it apart from siblings like resume_to_markdown and doc_to_html, though it never names them explicitly.

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

Usage Guidelines3/5

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

'Call this tool to turn markdown into a .docx' is an explicit invocation instruction, giving an agent the canonical use case. However, no alternatives or exclusions are provided, which matters here because the sibling list contains plausible adjacent document tools (doc_to_html, doc_create, convert, proposal_create) that an agent might conflate with this one.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the .docx file. Files produced by Word, Google Docs or this server all work; legacy .doc and .rtf do not
formatNotext (default) returns the readable text, json returns the block structure: headings with their levels, paragraphs, list items and tables, in document order

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the 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.

Conciseness5/5

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.

Completeness5/5

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

For a simple two-parameter read tool with 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.

Parameters3/5

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

Schema description coverage is 100%, so the schema already 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.

Purpose5/5

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

The description uses a specific verb and resource: '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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the .docx file to convert
out_pathNoWhere 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
overwriteNoReplace out_path if a file is already there. Default false: an existing file is never overwritten

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 detailsC

The sender profile printed on every proposal, contract and letter. The SAME profile invoice's business_set writes: it goes to the shared profile, so it also sets your invoice issuer and default VAT.

ParametersJSON Schema
NameRequiredDescriptionDefault
vatNoAlias for default_tax_rate
bankNoBank name / BIC
ibanNoIBAN or account number for payment
nameYesYour business or freelancer name, printed on the letterhead of every proposal, contract and letter
emailNoYour 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]
phoneNoYour own phone number. Same rule as email: only if the user gave it
vat_idNoVAT / tax registration id
addressNoPostal address, newlines allowed
tax_rateNoAlias for default_tax_rate
timezoneNoIANA zone you work in, e.g. Europe/Warsaw. Shared with time-tracker and timezone as your home zone
vat_rateNoAlias for default_tax_rate
logo_pathNoPath to a PNG or JPG logo for the letterhead (Pro)
brand_colorNoLetterhead colour as a hex code, e.g. 1F3864 (Pro)
invoice_prefixNoReference prefix used by mcp-invoice; this profile has the same field shape as mcp-invoice, so one profile serves both
default_currencyNoISO code, e.g. EUR, USD. Default EUR
default_tax_rateNoDefault VAT percent, quoted on proposals
payment_terms_daysNoDefault days until payment is due. Default 14

TDQS

C2/5.0
Behavior2/5

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

The description vaguely mentions that changes go to a shared profile and affect invoice issuer and default VAT, but it does not clarify persistence, overwrite behavior, validation, or any other meaningful side effects. With no annotations, this is insufficient.

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

Conciseness2/5

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

The description is short, but the second sentence is confusing and poorly worded, making it less concise and harder to parse than a simple clear statement would be.

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

Completeness2/5

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

Given 17 parameters, no output schema, and no examples, the description lacks crucial context such as return behavior, required-field implications, or how the shared profile relationship impacts callers.

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

Parameters3/5

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

The schema provides descriptions for all 17 parameters, including aliases and defaults, so the description itself adds little parameter-level meaning. This meets the baseline but does not exceed it.

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

Purpose2/5

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

The title 'Set your business details' is clear, and the description indicates it configures sender/profile information shown on documents. However, the body is garbled ('The SAME profile invoice's business_set writes:') and never plainly states that calling this tool updates the business profile.

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

Usage Guidelines1/5

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

No guidance is provided on when to use this tool versus siblings like profile_set or invoice_business_set, nor are any prerequisites or expected call contexts mentioned.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoCalendar year, default this year
zoneYesPlace or IANA zone

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 billable (or non-billable) time you already worked on a project - a timesheet entry. Give start plus either end or minutes, and optionally the hourly rate and its currency, e.g. rate '90 euros an hour' -> EUR.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoISO 8601 end time (or use minutes)
noteNoOptional note
rateNoHourly rate for this entry; a number (90) or the words the user said ('90 euros an hour')
tagsNoOptional tags
taskNoWhat the work was
startYesISO 8601 start time, e.g. 2026-09-02T09:00:00
minutesNoDuration in minutes (alternative to end)
projectYesProject or client name. A partial name that matches exactly one existing project is used as that project.
billableNoDefault true; set false for non-billable work
currencyNoCurrency of the rate: EUR, USD, GBP, PLN, or words like 'euros'. Defaults to the project currency, else USD.

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It discloses that the tool persists a timesheet entry and only accepts already-worked time, and it hints at rate/currency conversion with the example '90 euros an hour' -> EUR. However, it does not describe what the tool returns, whether it mutates anything besides creating the entry, or what happens when a project name doesn't match.

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

Conciseness5/5

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

Two sentences front-load the purpose and then give the core usage rules without redundant wording. Every sentence adds meaningful information: what the tool does, what inputs are required, and how rate/currency can be expressed.

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

Completeness4/5

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

Given the schema documentation covers all 10 parameters in detail, the description doesn't need to repeat them. It provides the essential behavioral model and parameter relationships needed to call the tool correctly. The lack of an output schema is a minor gap, but not critical for a create-style timesheet tool.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by explaining the relationship between start, end, and minutes ('start plus either end or minutes'), and by giving a concrete natural-language rate example ('90 euros an hour' -> EUR) that clarifies how string rates and currencies are meant to be supplied.

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

Purpose5/5

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

The description names a specific verb and resource: 'Log ... time you already worked on a project - a timesheet entry.' It clearly distinguishes this from live-timer or time-conversion siblings by emphasizing 'already worked,' and the title 'Add time entry' matches the behavior exactly.

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

Usage Guidelines4/5

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

It states a clear use case: recording already-completed work as a timesheet entry, which implies it is not for ongoing-time tracking or future scheduling. It also explains the required input pattern: 'start plus either end or minutes.' It does not name alternative tools explicitly, but the context is clear enough to guide selection.

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

entry_deleteDelete time entryC

Delete one time entry by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEntry id from entry_list

TDQS

C2.9/5.0
Behavior1/5

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, but it merely restates the operation. It does not disclose that deletion is irreversible, whether it is a soft or hard delete, what happens to associated data, or what the response looks like.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no filler. It is concise and readable, though slightly redundant with the title and omits useful behavioral context that would not hurt the flow.

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

Completeness2/5

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

For a destructive mutation tool with no annotations and no output schema, the description is thinner than it should be. The agent can infer how to call it from the schema, but it is not told what happens after deletion, whether the action is reversible, or what consequences to expect.

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

Parameters3/5

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

Schema description coverage is 100% and the id parameter is documented as 'Entry id from entry_list.' The description adds little beyond that, only restating that deletion happens 'by id,' so it meets the baseline but does not elevate parameter understanding.

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

Purpose5/5

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

The description states a specific action ('Delete'), a clear resource ('time entry'), and the method ('by id'). This is distinguishable from sibling tools like entry_edit or entry_mark_billed because the verb and target are explicit and unambiguous.

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

Usage Guidelines2/5

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 entry_edit, entry_add, or other time-entry tools. The description does not mention prerequisites, alternatives, or any exclusions, leaving the agent to infer usage from the name alone.

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

entry_editEdit time entryB

Change fields of an existing entry. Only the fields you pass are changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEntry id from entry_list
endNoISO 8601
noteNo
rateNoHourly rate override for this entry, a number or words like '90 euros'
tagsNo
taskNo
startNoISO 8601
minutesNoNew duration in minutes, keeps start
projectNo
billableNo
currencyNoCurrency of the rate, e.g. EUR

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It does disclose the most important behavior: this is a partial update and omitted fields are left untouched. It does not mention validation behavior, permissions, side effects, failure modes, or the return value, leaving moderate transparency gaps.

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

Conciseness5/5

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

Two short sentences with no filler. The key partial-update caveat is stated immediately after the action, making the description easy to scan and process.

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

Completeness2/5

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

For an 11-parameter mutation tool with no annotations and no output schema, this description is under-specified. It gives enough to attempt a simple edit, but does not explain return semantics, error/validation behavior, or the meaning of several fields, so an agent cannot fully predict the outcome of calling the tool.

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

Parameters3/5

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

The schema documents only 6 of 11 parameters (55%), so field descriptions are incomplete. The description adds a useful generic semantic—only supplied fields are changed—which affects how all parameters should be interpreted. However, it does not clarify ambiguous fields like task, project, tags, note, or billable, so the added parameter meaning is shallow.

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

Purpose4/5

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

The description states a specific action ('Change fields') on a specific resource ('existing entry'), and the title clarifies it is a time-entry edit. It is distinguishable from entry_add, entry_delete, and entry_list, though it does not explicitly name an alternative, so it stops short of a perfect score.

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

Usage Guidelines3/5

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

The phrase 'existing entry' implies this tool is for modifying already-created time entries, and 'Only the fields you pass are changed' implies a partial-update workflow. However, there is no explicit when-to-use/when-not-to-use guidance or routing to entry_add/entry_delete, so usage context is only implied.

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

entry_listList time entriesB

List logged time entries (timesheet rows) as a compact table, with hours, billable flag and project. Free tier shows the last 7 days.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoISO date/time upper bound
fromNoISO date/time lower bound
limitNoMaximum rows, newest first (default 50)
projectNoFilter by project name

TDQS

B3.4/5.0
Behavior3/5

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

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

Conciseness5/5

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

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

Completeness4/5

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

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

Parameters3/5

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

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

Purpose4/5

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

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

Usage Guidelines2/5

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoISO date/time end of the billed period, used with project
idsNoExact 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.
fromNoISO date/time start of the billed period, used with project
projectNoProject or client, used with from and to instead of ids; every billable entry in that range is stamped.
billed_atNoISO timestamp of the stamp, defaults to now
invoice_numberYesThe invoice these hours were put on, e.g. INV-2026-0001

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and 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.

Conciseness5/5

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.

Completeness4/5

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

For a mutation tool with no output schema and 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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoLast day, YYYY-MM-DD, included
idsNoEvent ids from events_list, events_search or next_event
fromNoFirst day, YYYY-MM-DD (alternative to ids)
calendarNoWith from/to: limit to one calendar
out_pathYesWhere to write the .ics file

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesLast day, YYYY-MM-DD, included
fromYesFirst day, YYYY-MM-DD
zoneNoShow local times in this zone or city instead of your own
calendarNoOne calendar name; default every imported calendar

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
rateNoHourly rate for this entry; a number (120) or the words the user said ('120 euros an hour')
projectYesProject or client the meeting is billed to
currencyNoCurrency of the rate: EUR, USD, GBP, PLN, or the word the user said ('euros'). Without it the time-tracker falls back to USD.
event_idYesEvent id from events_list, events_search or next_event

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoISO date/time upper bound. On the free tier the export is clamped to the last 7 days; Pro exports the full history.
fromNoISO date/time lower bound. On the free tier the export is clamped to the last 7 days; Pro exports the full history.
pathNoTarget 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.
projectNoOptional project filter

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. 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.

Conciseness5/5

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.

Completeness4/5

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

With no output schema, the description correctly explains 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoHow many days ahead to search, default 5, at most 366. Free tier: a search longer than 5 days is shortened to 5, not refused
limitNoHow 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
recurringNoPro: also report the weekly recurring times that work on every searched weekday
participantsYesWho 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_dateNoFirst date to consider, YYYY-MM-DD, default today
duration_minutesNoMeeting length in minutes, default 60, at most 1440

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the 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.

Conciseness5/5

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.

Completeness4/5

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

There is no output schema, but the description 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.

Parameters3/5

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

Schema description coverage is 100%, so the schema already 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.

Purpose5/5

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.

Usage Guidelines3/5

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 every active schedule. Free covers 3 months ahead; Pro covers up to 120.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthsNoMonths ahead including this one, default 12

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It adds meaningful traits: the forecast is 'expected' rather than actual, it aggregates by calendar month and currency, it draws from 'every active schedule', and it varies by plan tier. It does not mention return format or error behavior, but the core behavioral scope and limitations are conveyed.

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

Conciseness5/5

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

The description is two concise sentences with no filler. The main purpose and output granularity are front-loaded, and the plan limitation is stated efficiently in the second sentence.

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

Completeness4/5

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

For a single-parameter tool with no output schema and no annotations, the description explains what the result contains, the data source, the time horizon, and plan-based limits. It lacks explicit mention of the response structure or error conditions, but the tool is simple enough that agents have sufficient context to invoke it correctly.

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

Parameters4/5

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

Schema coverage is 100% and already documents months as an integer with min, max, and default. The description adds valuable plan-dependent semantics: Free accounts are limited to 3 months while Pro allows up to 120. This helps an agent decide whether a requested months value is feasible before calling.

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

Purpose4/5

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

The description clearly defines the tool as producing expected invoiced revenue per calendar month per currency, with the scope being active schedules. This is more specific than a bare restatement of the title, but it does not explicitly differentiate from close sibling tools like invoice_summary or overdue_report.

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

Usage Guidelines2/5

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

The description gives no direct 'use this when' guidance, nor does it name alternatives or exclusions. The Free/Pro month limits imply some usage constraints, but there is no explicit advice on when to choose this tool over its finance-focused siblings.

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

Where the time actually went: merged busy blocks from the calendars named, and the gaps in your working hours where nothing is booked. Free/transparent events do not count as busy; whole-day events block the day.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesLast day, YYYY-MM-DD, included
fromYesFirst day, YYYY-MM-DD
zoneNoZone the working hours and the output are in; default your own
work_endNoEnd of your working day, HH:MM, default 17:00
calendarsNoCalendar names; default all of them
work_startNoStart of your working day, HH:MM, default 09:00

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden and does a solid job, explicitly stating the merging behavior, the exclusion of free/transparent events, and that whole-day events block the day. It does not mention read-only behavior or return shape, but the core behavioral traits 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.

Conciseness5/5

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

A single, information-dense sentence with a memorable opening phrase and no filler. Every clause contributes a meaningful detail about behavior or scope.

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

Completeness4/5

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

The tool has six parameters and no output schema, so the description needs to cover key semantics and likely outcomes. It explains the busing rule, the free-window concept, and important calendar event behavior. It stops short of describing exact output fields or timezone handling, but those are partly covered by the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already well documented. The description only loosely maps to 'calendars named' and 'working hours', adding little beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the tool's function: it returns merged busy blocks from selected calendars and free gaps within working hours. It also differentiates itself from calendar-listing or event-searching tools by focusing on availability windows and busy merging.

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

Usage Guidelines4/5

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

The description sets the context well: use this when you need to know where time is booked and where free windows remain within working hours. It does not explicitly name sibling alternatives or state when-not-to-use, so it misses full exclusion guidance.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoThe 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
currenciesYesThe 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

A3.8/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It 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.

Conciseness5/5

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.

Completeness4/5

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

For a simple two-parameter read tool with 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 calendar file for one meeting. Returns the path written and the meeting time in UTC and in the zone you gave.

ParametersJSON Schema
NameRequiredDescriptionDefault
gapNoWhat 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.
foldNoWhich occurrence of a time that happens twice because the clocks went back. Default 'first'.
zoneYesPlace the start time is given in
startYesStart time, read in `zone` unless it carries an offset
titleYesEvent title
locationNoWhere, or a meeting link
out_pathNoWhere 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
attendeesNoAttendees. 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.
descriptionNoBody text
organizer_nameNoYour display name for the ORGANIZER line
organizer_emailNoYour 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_minutesYesLength in minutes, at most 1440

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description must carry behavioral weight. It does disclose the main side effect (writing a file) and the return values (path and meeting time). However, it does not mention overwrite behavior, whether invites are sent, error handling, or DST edge cases, which leaves important behavior implicit.

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

Conciseness5/5

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

Two sentences with no filler. The purpose is front-loaded and the return information is concise and useful. Every word earns its place.

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

Completeness3/5

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

For a 12-parameter tool with no annotations and no output schema, the description is minimal but adequate. The rich schema covers parameter details, but the description lacks explicit sibling differentiation, overwrite/safety behavior, and a fuller picture of the return format.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds no parameter-level meaning beyond saying the meeting time is returned in UTC and the provided zone, which is output behavior rather than parameter semantics.

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

Purpose5/5

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

The description states a specific action — write a .ics calendar file for one meeting — and clearly identifies the resource. This distinguishes it from nearby siblings like ics_import and event_export, since the focus is on creating a single .ics file.

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

Usage Guidelines4/5

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

The description gives clear context for when to call the tool: write a .ics calendar file for a single meeting. It does not explicitly name alternatives or when-not conditions, but the intended use case is unambiguous despite the large sibling set.

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 and the local copy of its .ics file. Nothing else is touched.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe calendar name from calendars_list

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are present, so the description carries full behavioral disclosure. It explicitly states that both the calendar and its local .ics copy are removed and that nothing else is touched. This gives strong clarity on the destructive scope and side effects, though it omits failure modes or reversibility.

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

Conciseness5/5

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

Two short sentences with the core action front-loaded and a clear no-side-effect clarification. Every word contributes to the meaning; there is no redundancy or unnecessary detail.

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

Completeness5/5

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

Given the simplicity of the tool, one fully documented parameter, and no output schema requirement, the description covers the essential knowledge needed to use it safely: exactly what will be removed and what will not. Any missing details like not-found handling are negligible for a focused delete operation.

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

Parameters3/5

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

The schema already provides a full description for the only parameter (name: 'The calendar name from calendars_list'), so the tool description adds minimal parameter-level meaning. The phrase 'imported calendar' hints at the domain but does not add syntax, format, or constraints beyond the schema. Combined with 100% schema coverage, baseline 3 is appropriate.

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

Purpose5/5

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

States a specific action with verb and resource: 'Remove one imported calendar and the local copy of its .ics file.' 'Nothing else is touched' adds a precise scope boundary, distinguishing it from broader deletion operations and showing it is the inverse of ics_import.

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

Usage Guidelines3/5

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

Usage context is implied by the term 'imported calendar' and the tool name ics_forget, but there is no explicit when-to-use statement, named alternative, or exclusion such as 'use this instead of deleting the calendar.' The description tells what it does but not specifically when to choose it over other actions.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoPublic https:// or webcal:// .ics feed. Fetched once, only because you asked; Pro feature
nameYesWhat to call this calendar, e.g. "work" or "family"
pathNoPath to a .ics file on this machine
textNoThe .ics file contents, pasted

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. 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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
vatNoAlias for default_tax_rate
bankNoBank name / BIC
ibanNoIBAN or account number for payment
nameYesYour business or freelancer name
emailNoYour 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
phoneNoYour own phone number. Same rule as email: only if the user gave it
vat_idNoVAT / tax registration id
addressNoPostal address, newlines allowed
tax_rateNoAlias for default_tax_rate
timezoneNoIANA zone you work in, e.g. Europe/Warsaw. Shared with time-tracker (entries are stamped in it) and timezone (your home zone)
vat_rateNoAlias for default_tax_rate
logo_pathNoPath to a PNG or JPG logo (Pro)
invoice_prefixNoInvoice number prefix, default INV (custom prefix is Pro)
default_currencyNoISO code, e.g. EUR, USD, JPY. Default EUR
default_tax_rateNoDefault VAT percent applied to items without their own rate
payment_terms_daysNoDefault days until due. Default 14

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 for a client from a list of items. Allocates the next invoice number (never reused) and returns the stored invoice with its subtotal, discount, one tax line per rate and the total.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesLine 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
notesNoFree text printed under the totals
clientYesClient name or id. Unknown names are added automatically
currencyNoInvoice 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_daysNoDays until due, defaults to your payment terms
issue_dateNoYYYY-MM-DD, defaults to today
discount_percentNoDiscount percent applied to every line before tax, 0-100

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does meaningful work: it discloses that a new invoice number is allocated and never reused, that the invoice is persisted ('stored'), and that the call returns subtotal, discount, per-rate tax lines and total. These are behavioral facts beyond the bare 'create' verb, though side effects like auto-creating unknown clients appear only in the schema.

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

Conciseness5/5

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

Two sentences with zero filler; the core purpose is front-loaded and the second sentence packs the key behaviors (numbering, return shape). Every phrase earns its place.

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

Completeness4/5

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

For a 7-param creation tool with no annotations and no output schema, the description covers the essential procedural facts — number allocation, persistence, return structure — while the richly detailed schema handles currency-mixing refusal, aliases, and D-R24/D-R46 rounding rules. The division of labor is sensible; the description would only need to add more if the schema were thinner.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3 and the schema already documents all 7 parameters in detail. The description adds marginal context by hinting that discount and per-rate tax lines appear in the returned invoice, mapping loosely to discount_percent and tax_rate, but it adds no syntax or format detail beyond the schema.

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

Purpose5/5

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

States a specific verb and resource ('Create an invoice') plus the exact scope ('for a client from a list of items'). The qualifier 'from a list of items' distinguishes it from siblings like invoice_from_hours and invoice_generate_due 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.

Usage Guidelines3/5

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

The phrase 'from a list of items' implies the itemized-billing use case, but the description never names alternatives or states when not to use it. No explicit exclusion routes the agent toward invoice_from_hours or invoice_generate_due; the usage is inferred rather than stated.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
rateYesHourly rate in major units, expressed in currency (or the business default currency)
hoursYes
notesNo
clientYes
currencyNoCurrency the rate is in. Without target_currency this is also the invoice currency
due_daysNo
fx_ratesNoConversion 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_rateNo
entry_idsNoTime-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_dateNo
descriptionNoLine description, default 'Consulting services'
round_totalNoD-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_currencyNoIssue the invoice in this currency instead, converting the rate. Needs fx_rates for the rate currency
discount_percentNo

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
as_ofNoYYYY-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_runNoList what would be created without creating anything. Default false. One run creates at most 60 invoices, oldest period first
schedule_idNoOnly this schedule. Free and unlimited on every tier

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
numberYes

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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, optionally filtered by status (unpaid, paid, partial), client, and an issue-date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoYYYY-MM-DD inclusive
fromNoYYYY-MM-DD inclusive
clientNo
statusNo

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden; 'list' signals a read operation, and the filter phrase indicates behavior. However, it does not disclose pagination, ordering, whether unfiltered means all invoices, or the response shape, leaving clear gaps.

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

Conciseness5/5

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

One sentence with no filler; the action and all filters are front-loaded. Every part earns its place.

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

Completeness3/5

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

The tool is simple and all parameters are named, but with no output schema and no sibling differentiation, the definition omits return format, default scope, and pagination/ordering behavior. Functional enough for a basic call, but not fully complete.

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

Parameters3/5

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

The description maps all four parameters to meaningful filter categories and adds 'issue-date range' context for to/from. With schema coverage at 50%, client and status receive no additional meaning beyond their parameter names/enum, so it partially but does not fully compensate.

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

Purpose4/5

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

States the verb 'List' and the resource 'invoices', and enumerates the filtering dimensions (status, client, issue-date range). It is clear on its face, though it does not explicitly contrast with sibling tools like invoice_get or invoice_summary.

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

Usage Guidelines3/5

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

The 'optionally filtered' phrasing implies the tool is for fetching multiple invoices and can be narrowed by criteria, but it does not state when to prefer this over invoice_get (single invoice) or invoice_summary (aggregates), nor give exclusions.

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. It ADDS to what is already paid (never replaces it) and refuses an amount that would overpay, naming the open balance. Omit amount to pay off the rest in full.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountNoAmount received in major units, ADDED to what is already paid on this invoice. Omit to pay off the remaining balance in full
methodNoHow it was paid, e.g. bank transfer, card. Stored on this payment's row
numberYes
paid_dateNoYYYY-MM-DD, defaults to today
referenceNoBank reference or transaction id for this payment. Stored on this payment's row

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of disclosure. It explicitly reveals additive behavior, overpayment refusal with open-balance feedback, and the full-payoff default when amount is omitted. It does not describe the response or whether the invoice status changes, but the critical behavioral surprises 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.

Conciseness5/5

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

The description is two sentences with no filler. It front-loads the core action, then packs the most important behavioral details and the optional-amount shortcut into minimal space. Every sentence contributes directly to correct tool usage.

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

Completeness4/5

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

For a moderate-complexity mutation tool with no output schema, the description covers the essential call semantics: what happens on partial payment, overpayment, and full payoff. Minor gaps remain around the return value and how the invoice's paid status is reflected, but an agent has enough to invoke the tool correctly.

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

Parameters3/5

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

Schema description coverage is high at 80%, so the baseline is 3. The description adds meaningful emphasis to the 'amount' parameter semantics (additive, never replacing, omit to pay in full), but it does not add extra explanation for the required 'number' parameter or the optional metadata fields, which remain under-specified.

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

Purpose5/5

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

Description clearly states the action ('Record a payment') and the resource (an invoice), and the title reinforces the intent. It is immediately distinguishable from sibling tools like invoice_get, invoice_list, and invoice_create because it focuses on recording payment against an existing invoice.

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

Usage Guidelines4/5

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

The description gives clear practical usage context: call this when receiving a payment for an invoice, and explains the key behavior of adding to existing paid amounts and handling full payoff by omitting amount. It does not explicitly name alternatives or exclusion criteria, but the context is strong enough for an agent to select it appropriately.

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 render a stored invoice as an A4 PDF you can send. Returns the path of the file written.

ParametersJSON Schema
NameRequiredDescriptionDefault
numberYesInvoice number to render, as returned by invoice_create
out_pathNoWhere 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

A4/5.0
Behavior4/5

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 the key side effect (writing a PDF file) and the return value (the path of the file written), which is important behavioral information. It does not mention overwrite behavior or error cases, but for this simple rendering tool 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.

Conciseness5/5

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

The description is two short sentences with no filler. The primary purpose is front-loaded in the first sentence, and the second adds the essential return-value detail. Every sentence earns its place.

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

Completeness4/5

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

For a simple two-parameter tool with no output schema, the description plus schema covers purpose, output format, parameter meanings, and return value. It could additionally mention what happens when the invoice number is invalid, but that is not essential for an agent to invoke the tool correctly in the common case.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents both parameters thoroughly, including the default out_path and the guarantee that bytes written are PDF. The free-text description adds no parameter semantics beyond what the schema covers, matching the baseline.

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

Purpose4/5

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

The description uses a specific verb ('render') with a clear resource ('a stored invoice') and output format ('an A4 PDF'), and states the return value. It is not a tautology and clearly identifies the tool's function, though it does not explicitly contrast with sibling pdf_* tools.

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

Usage Guidelines4/5

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

The opening phrase 'Call this tool to render a stored invoice' gives a clear context for when to use it. It does not name alternatives or provide when-not-to-use exclusions, so it stops short of a 5, but the usage intent is unambiguous.

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

invoice_summaryInvoice summaryB

Turn tracked billable time into invoice line items for one project or client: hours, hourly rate, amount per task and the total, in the currency the work was logged in (EUR 225.00, not $225.00).

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesISO date/time end of the billing period. Free covers the last 7 days; Pro invoices any period from the full history.
fromYesISO date/time start of the billing period. Free covers the last 7 days; Pro invoices any period from the full history.
projectYesProject or client to invoice
unbilled_onlyNoDefault 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

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of disclosing side effects, but it never states whether this tool creates an invoice, modifies time entries, or is read-only. The phrase 'Turn tracked billable time into invoice line items' implies a transformation rather than a safe summary, leaving the mutation status ambiguous.

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

Conciseness5/5

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

The description is a single sentence with no filler; the core operation and output fields are front-loaded, and the currency example adds concrete value. Every clause earns its place.

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

Completeness3/5

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

The description partially substitutes for a missing output schema by listing what the line items contain, but it leaves out essential context: whether calling this tool mutates any state, how the output is grouped or structured, and how it relates to invoice_create or invoice_from_hours. For a four-parameter, annotation-free tool, this is adequate but not complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents project, from, to, and unbilled_only. The description maps 'project or client' to the project parameter and describes output fields, but it adds no additional meaning to the input parameters beyond what the schema provides.

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

Purpose4/5

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

The description identifies a specific operation—turning tracked billable time into invoice line items—and enumerates the output fields: hours, hourly rate, amount per task, and total. It also adds a concrete currency behavior. However, it does not explicitly distinguish this summary tool from siblings like invoice_create or invoice_from_hours, and 'turn into line items' could be misread as actually creating an invoice.

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance is provided. The description does not name alternatives such as invoice_from_hours or invoice_create, and it never states whether this should be used as a read-only preview before invoicing.

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

license_activateA

Activate a Pro license key for every server in the bundle at once (format MCPL1.xxx.yyy).

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesLicense key from the checkout confirmation page

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral disclosure burden. It does disclose the significant side effect that activation applies to every server in the bundle at once, but it does not mention reversibility, failure modes, or what happens if a license is already active.

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

Conciseness5/5

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

One compact sentence delivers the action, scope, and format constraint without filler. The key verb 'Activate' leads immediately.

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

Completeness4/5

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

For a one-parameter, no-output-schema tool, this description is nearly sufficient: it tells the agent what to pass and the activation scope. Missing details like post-activation verification or irreversibility are useful but not required to invoke it correctly.

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

Parameters4/5

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

The schema already covers the 'key' parameter at 100%, so the baseline is 3. The description adds the specific MCPL1.xxx.yyy format, giving the agent extra validation guidance beyond the schema.

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

Purpose5/5

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

The description is specific: it names the verb 'Activate', the resource 'Pro license key', and the scope 'every server in the bundle at once'. It also supplies the key format, making it easy to distinguish from the related license_status sibling.

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

Usage Guidelines4/5

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

The trigger context is clear: use this tool when a Pro license key needs to be applied to the whole server bundle. It does not explicitly mention alternatives like license_status or state exclusions, so it misses a 5.

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

license_statusA

Show whether each server in the bundle (time-tracker, price-tracker, spreadsheet, invoice, expense-tracker) runs free or Pro, and where to upgrade the whole bundle.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. The verb 'Show' implies a read-only, non-destructive action, and the expected output is described. However, there is no explicit statement about side effects, authentication needs, or whether the status is checked live or from cached data, though this is less critical for a zero-parameter status tool.

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

Conciseness5/5

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

The description is a single, focused sentence. It front-loads the primary action and scope, then gives the output dimension and upgrade location. Every clause adds value; there is no filler or repetition.

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

Completeness4/5

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

For a zero-parameter tool with no output schema, the description covers the essential context: which servers are checked, what statuses are shown, and where to upgrade. A minor omission is the exact response format or return structure, but that is not critical given the simplicity of the tool.

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

Parameters4/5

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

The tool has zero parameters and the input schema is an empty object, so there are no parameter semantics to explain. The baseline for zero parameters is 4, and the description adds no unnecessary parameter-related text.

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

Purpose5/5

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

The description clearly states the tool's purpose with a specific verb ('Show') and resource: the license status of five named servers (time-tracker, price-tracker, spreadsheet, invoice, expense-tracker). It also indicates the output dimension ('free or Pro') and upgrade guidance. This distinguishes it from the sibling tool license_activate, which implies activation rather than status checking.

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

Usage Guidelines3/5

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

The description makes it easy to infer this is a status/read-only tool, but it does not explicitly state when to use it versus license_activate. There is no mention of when not to use it or which alternative to choose. An agent would have to rely on sibling names and context rather than direct guidance.

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 next event that has not started yet, with how long until it begins. Looks ahead up to a year.

ParametersJSON Schema
NameRequiredDescriptionDefault
calendarNoOne calendar name; default every imported calendar

TDQS

A3.6/5.0
Behavior4/5

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

No annotations are provided, so the description must disclose behavior. It does: events must not have started yet, the lookahead is up to a year, and the output includes how long until the event begins. It does not cover the no-event-in-range case, but for a simple read-style tool the transparency 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.

Conciseness5/5

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

Two focused sentences with no filler. The key criteria and output are front-loaded, and every clause adds information.

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

Completeness4/5

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

For a tool with one optional parameter and no output schema, the description covers what 'next' means, the one-year horizon, and the countdown output. The schema supplies the calendar default, and no major operational detail is missing for this simple tool.

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

Parameters3/5

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

The schema already fully describes the sole parameter, calendar, including its optionality and default to every imported calendar. The description adds nothing beyond the schema, so the baseline score of 3 applies.

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

Purpose4/5

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

The description states the resource and the selecting behavior: the next event that has not started yet, with time until it begins. It is distinct from the listing/search siblings because it returns a single future event, though it does not explicitly name any sibling.

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

Usage Guidelines2/5

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

There is no statement about when to use next_event versus events_list, events_search, free_busy, or calendars_list. The intended context is only implied by the tool name and semantics, not explicitly communicated.

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. Accepts IANA zones (Europe/Warsaw), city names (Warsaw), country names (Poland) or abbreviations (PST, IST). With no zones it reports this machine's local zone and UTC.

ParametersJSON Schema
NameRequiredDescriptionDefault
zonesNoPlaces or IANA zones, e.g. ['Warsaw','New York','India']

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden of explaining behavior. It discloses the default local+UTC result with no zones and enumerates accepted input formats. It does not describe output shape or ambiguity of abbreviations, but for a simple read-only time lookup this is reasonable transparency.

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

Conciseness5/5

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

The description is compact and efficient: the purpose is in the first sentence, input flexibility is second, and default behavior is third. Every sentence earns its place and no unnecessary detail is included.

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

Completeness4/5

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

For a single optional parameter with no annotations and no output schema, the description covers how to invoke it and what the default call returns. It does not specify the exact result structure, but the tool's simplicity and clear intent make it adequately complete.

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

Parameters4/5

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

The schema already describes the zones parameter and an example, so the baseline is 3. The description adds meaningful detail by listing the accepted forms — IANA zones, city names, country names, and abbreviations — and by stating behavior when the parameter is omitted. That goes beyond the schema's minimal description.

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

Purpose5/5

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

The description clearly states the specific verb and resource: it reports the current time in one or more places. It also clarifies accepted input types (IANA zones, city names, country names, abbreviations), which distinguishes it from sibling time tools like convert_time and overlap. This is enough for an agent to select it appropriately.

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

Usage Guidelines4/5

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

The description gives clear usage context: use it for current time in one or more places, and explains the default behavior when no zones are provided. It does not explicitly name alternatives or exclusions, so it falls just short of full guidance.

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

overdue_reportOverdue reportA

Answer "which invoices are overdue?": every unpaid or partly paid invoice past its due date, with days overdue, the outstanding amount per invoice and the outstanding total per currency. Free and unlimited.

ParametersJSON Schema
NameRequiredDescriptionDefault
as_ofNoYYYY-MM-DD, defaults to today

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are present, so the description carries the behavioral burden. It discloses the inclusion rule ('unpaid or partly paid ... past due'), the computed fields (days overdue, outstanding amount, total per currency), and the service trait 'free and unlimited.' It doesn't explicitly state there are no side effects, but the report framing and output enumeration make the read-only behavior clear.

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

Conciseness5/5

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

The description is a single tight sentence that front-loads the trigger before the criteria and outputs. Nothing is redundant with the schema, and every clause contributes to call selection or expected results.

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

Completeness5/5

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

For a one-parameter read-only report with no output schema, the description provides the scope, the selection criteria, and the return fields. There are no hidden prerequisites or additional inputs, so an 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.

Parameters3/5

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

Schema coverage is 100%: the only parameter as_of is already described ('YYYY-MM-DD, defaults to today'). The description adds no extra parameter detail, which is acceptable at the baseline since the schema already documents it.

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

Purpose5/5

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

The description opens by naming the exact user question it answers ('which invoices are overdue?') and then defines the resource and selection rule: every unpaid or partly paid invoice past its due date. It lists the output fields, so an agent can distinguish it from broader invoice tools even without opening the schema.

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

Usage Guidelines4/5

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

It gives a clear trigger: use it when the user asks which invoices are overdue. It doesn't explicitly mention alternatives or when not to use it, but in a large sibling set the question-based trigger is sufficient context for typical selection.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate to compute on, YYYY-MM-DD, default today
zonesYesPlaces, e.g. ['Warsaw','New York','Bangalore']
work_endNoLocal working day end, default 17:00
work_startNoLocal working day start, default 09:00

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose the 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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. Read-only. A file that cannot be read is reported per file; the others still count. Free tier: unlimited.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathsYesPaths to the PDF files

TDQS

A4.3/5.0
Behavior4/5

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 explicitly states 'Read-only' and explains error handling: unreadable files are reported per file while others still count. This provides useful transparency beyond basic functionality.

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

Conciseness5/5

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

The description is succinct and well-structured. It efficiently conveys the core functionality, additional behavior, and limitations without unnecessary verbosity, making it easy for an agent to parse and act upon.

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

Completeness5/5

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

Given the simplicity of the tool and the absence of an output schema, the description provides comprehensive context. It covers the purpose, edge-case handling, safety (read-only), and usage limits (free tier), leaving no critical gaps for an agent to make an informed call.

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

Parameters4/5

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

The schema already provides a description for 'paths' as 'Paths to the PDF files,' achieving 100% coverage. The tool description adds context by specifying 'any number of PDFs' and explaining how unreadable paths are handled, enriching the semantic understanding of the parameter.

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

Purpose5/5

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

The description clearly states the tool's function: counting pages per file and providing a total for multiple PDFs. It distinctly identifies the resource (PDFs) and the operation (page counting), setting it apart from sibling tools like pdf_info or pdf_pages.

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

Usage Guidelines3/5

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

The description implies usage by stating 'for any number of PDFs' and 'Read-only,' but it does not explicitly mention alternatives or when not to use this tool. The guidance is implicit rather than explicit, so it falls short of a perfect score.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the PDF file. ~ is expanded; a relative path is resolved against the working directory

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a one-parameter read-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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathsYesThe PDFs to join, in the order they should appear
out_pathYesWhere to write the merged PDF
overwriteNoReplace out_path if a file is already there. Default false: an existing file is never overwritten

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesThe source PDF
pagesYes1-based pages and ranges to keep, in output order, e.g. "2,4-6" or "5,1,1"
out_pathYesWhere to write the extracted PDF
overwriteNoReplace out_path if it exists. Default false

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations present, the description carries the full 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesThe source PDF
orderYesThe 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_pathYesWhere to write the reordered PDF
overwriteNoReplace out_path if it exists. Default false

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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

The description uses a specific verb and resource: '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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesThe source PDF
pagesNoWhich pages to turn, e.g. "1" or "2,4-6". Omit for every page
degreesYes90, 180, 270 or -90. Positive turns clockwise. Added to the page's existing rotation
out_pathYesWhere to write the rotated PDF
overwriteNoReplace out_path if it exists. Default false

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesThe PDF to split
rangesYesComma-separated 1-based page ranges, e.g. "1-3,5,7-". An open-ended range runs to the last page
overwriteNoReplace existing outputs. Default false: nothing is overwritten and nothing is written at all if any target exists
out_path_patternYesOutput 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

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full burden: 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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesThe source PDF
textYesWhat to stamp. PAID and DRAFT are presets with their own colour; any other text is Pro
colorNoHex code such as #1b7f3b, or a name: red, green, blue, black, gray, orange, purple. Pro
pagesNoWhich pages to stamp, e.g. "1" or "2,4-6". Omit for every page
opacityNo0 to 1. Default 0.35 in the centre, 0.85 in a corner
out_pathYesWhere to write the stamped PDF
positionNoWhere on the page. Default center, which is drawn on the 45-degree diagonal like a real stamp
font_sizeNoPoint size. By default the stamp is sized to fit the page width
overwriteNoReplace out_path if it exists. Default false

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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

Three short sentences, with the core action front-loaded and no filler. The 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.

Completeness4/5

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

For a 9-parameter tool with no 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesThe PDF to read
pagesNoWhich pages, e.g. "1" or "2,4-6". Omit for every page

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description carries the full 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesThe source PDF
pagesNoWhich pages, e.g. "1". Omit for every page
out_pathYesWhere to write the footed PDF
overwriteNoReplace out_path if it exists. Default false

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters3/5

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

Schema description coverage is 100%, so the schema 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.

Purpose4/5

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.

Usage Guidelines4/5

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, for shops that block automated requests. Creates the watch for that URL if it does not exist yet, and returns the stored price and the observation count.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesProduct page URL
labelNoShort name for this item
priceYesPrice as shown, for example 1299.00 or 1.299,00
currencyNoISO code such as USD or EUR

TDQS

A4.6/5.0
Behavior5/5

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

Discloses the important side effect (creates a watch for the URL if not present) and the return value (stored price and observation count). No annotations are present, so the description carries the full burden and meets it well.

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

Conciseness5/5

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

Two succinct sentences that front-load the purpose and then cover side effects and return value. Every word earns its place with no redundancy.

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

Completeness4/5

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

For a tool with no output schema, the description helpfully mentions the return contents (stored price and observation count) and side effects. It could specify the response shape more precisely, but it is sufficient for typical use.

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

Parameters3/5

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

Schema descriptions already cover all four parameters, including format examples for price and ISO for currency. The description does not add significant extra semantic meaning beyond what the schema provides, so baseline 3 is appropriate.

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

Purpose5/5

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

Clearly states the action (store a price), the resource (a manually read price), and the specific context (shops that block automated requests). It is easily distinguished from sibling tools like price_check, which imply automated retrieval.

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

Usage Guidelines5/5

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

Explicitly indicates when to use this tool: when you read the price yourself and automated requests are blocked. This provides clear guidance relative to automated price-checking alternatives.

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. Returns price, currency, title, confidence and the change since the last check.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesProduct page URL, including https://

TDQS

A4/5.0
Behavior4/5

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

With no annotations present, the description carries the full burden. It discloses that the tool fetches the page and extracts price-related data, and it names the exact returned fields. It leaves minor gaps around failure modes and whether each check persists historical data, but the core behavior is transparent for a simple read-like tool.

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

Conciseness5/5

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

Two sentences carry the purpose, the differentiator from generic web fetching, and the return values. Every sentence earns its place and the main instruction is front-loaded. No filler or redundancy.

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

Completeness4/5

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

For a one-parameter tool with no output schema, the description is largely complete: it says when to use it and what it returns. It does not describe failure behavior for invalid or unparseable URLs, nor the side effect of creating/updating a price check history, so a little is left to the agent's inference.

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

Parameters3/5

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

The schema describes the single url parameter as 'Product page URL, including https://', giving 100% coverage. The description only repeats that it takes a product URL and adds no new 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.

Purpose4/5

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

The description clearly names a specific action ('check a price') on a specific resource ('any product URL') and lists the structured outputs returned. It distinguishes itself from using a generic web tool, but it does not explicitly differentiate from the related siblings price_history and price_add_manual, so the differentiation is implicit rather than direct.

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

Usage Guidelines4/5

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

The description gives an explicit use case: 'Call this tool for any product URL' when a generic web fetch would return raw HTML without the price. It provides clear context for when to use it, but it does not mention exclusions or alternatives such as price_history for historical data or price_add_manual for manual entries.

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 the stored observations for one watch, newest last, each with its price, currency, source and extraction confidence. Free shows the last 30.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoWatch id
urlNoWatch URL
limitNoMaximum observations to return

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It reveals that results are sorted newest last, that each observation includes price, currency, source, and confidence, and that free accounts see only the last 30 records. This is meaningful behavioral context beyond the schema, though it does not address errors or the id/url selection behavior.

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

Conciseness5/5

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

The description is two sentences with no filler. The primary action and target resource are front-loaded, and the behavioral details are concise and relevant. Every sentence earns its place.

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

Completeness4/5

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

For a simple list operation with three optional parameters and no output schema, the description adequately covers return fields, ordering, and a service limitation. It lacks explicit guidance on conflicts between id and url or error cases, but those are minor for this tool's simplicity.

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

Parameters4/5

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

The input schema already covers all three parameters with descriptions, so the baseline is 3. The description adds useful semantics by framing id/url as identifying a single watch and by linking the free-tier 30-record cap to the limit parameter. This goes slightly beyond the schema's basic property descriptions.

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

Purpose5/5

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

The description states a specific action ('list stored observations') on a specific resource ('one watch') and details the returned data: price, currency, source, and extraction confidence. This clearly distinguishes it from siblings like price_check, which would focus on current pricing rather than historical observations.

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

Usage Guidelines4/5

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

The description explicitly instructs when to use the tool ('Call this tool to list stored observations for one watch') and gives context about ordering and free-tier limits. It does not explicitly name alternative tools or exclusion conditions, but the use case is clear enough to route an agent 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 profileB

Return the stored profile as JSON, exactly as it will be used by resume_create, cover_letter_create and tailor_to_job.

ParametersJSON Schema
NameRequiredDescriptionDefault
variantNo

TDQS

B3.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral disclosure burden. It does disclose the return format (JSON) and that the result is the exact representation used by downstream tools, which is useful. It does not mention behavior around the optional variant parameter, missing profiles, or error cases, but for a simple getter this is a moderate gap.

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

Conciseness5/5

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

The description is a single, front-loaded sentence. It states the core action and format first, then adds the important downstream-use context. Every phrase earns its place and there is no redundant filler.

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

Completeness2/5

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

For a tool with one optional parameter and no output schema, the description should at least mention the variant parameter and its implications. It also does not clarify whether the profile can be empty or what happens if no profile is stored. The downstream-consumer note helps, but the missing parameter guidance leaves the description incomplete.

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

Parameters1/5

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

Schema description coverage is 0% and the description does not explain the 'variant' parameter at all. The schema only says it is an optional string, with no enum or further guidance. This parameter semantics are entirely absent from both schema and description, so an agent cannot know what values are valid or what effect variant has on the returned profile.

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

Purpose4/5

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

The description uses a specific verb ('Return'), identifies the resource ('the stored profile'), and specifies the output format ('as JSON'). It also clarifies that the returned value is the exact canonical profile used by downstream tools like resume_create. It does not explicitly differentiate from profile_set, but the read intent is clear.

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

Usage Guidelines3/5

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

The description implies this tool should be used when an agent needs to see the exact profile data that will feed resume, cover letter, or tailoring operations. However, it does not explicitly state when not to use it or mention alternatives such as profile_set for modifying the profile.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoYour 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
emailNoYour 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
linksNoPortfolio, LinkedIn, GitHub
mergeNoUpdate 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
phoneNoYour own phone number. Defaults to the shared business profile's phone
skillsNo
replaceNoDiscard the stored profile and store exactly what this call carries. Required when a profile already exists, unless you pass merge
summaryNoTwo or three lines. Used verbatim as the fit paragraph of a cover letter.
variantNoName a second profile, e.g. "backend". One profile per data directory on the free tier; named variants are Pro only.
locationNo
educationNo
languagesNo
experienceNoRoles 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_colorNoLetterhead colour, six hex digits, e.g. 1F3864. Pro only.
certificationsNo

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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

The description states a specific verb and resource: '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.

Usage Guidelines4/5

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

The description gives clear context for 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject or client name. A partial name that matches exactly one existing project is used as that project.
currencyNoCurrency: a code (EUR, USD, GBP, PLN) or a word ('euros', 'pounds', 'zl'). Defaults to the shared business profile's default_currency, else USD.
hourly_rateYesHourly 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_missingNoOnly 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_existingNoRe-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

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

There is no output schema, so the description'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.

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. 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.

Purpose5/5

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

The description states a specific verb and resource: '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.

Usage Guidelines3/5

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

The description implies the use case—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.

ParametersJSON Schema
NameRequiredDescriptionDefault
priceYes
scopeNoWhat is in scope, one bullet each. Omitted from the document if not given or empty
clientYesClient name, printed as 'Prepared for'. The letterhead comes from your business_set profile
summaryNoOne or two paragraphs on the problem and the approach. Omitted from the document if not given
out_pathNoWhere to write the .docx. Defaults to the data directory
timelineNoPhases and their durations, rendered as a table. Omitted from the document if not given or empty
overwriteNoReplace out_path if a file is already there. Default false: an existing file is never overwritten
valid_untilNoYYYY-MM-DD, the date the quote expires
deliverablesNoWhat the client receives, one bullet each. Omitted from the document if not given or empty
project_titleYesProject title

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
priceNo
scopeNo
clientNo
summaryNo
timelineNo
referenceYesThe 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_untilNo
deliverablesNo
project_titleNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the 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.

Conciseness5/5

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.

Completeness4/5

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

For a mutation tool with no annotations and no output schema, 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

The description makes clear this is for 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesQuote currency of the pair. Each row is 1 from = X to
daysNoTrailing 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
fromYesBase currency of the pair
to_dateNoISO date, inclusive, default today
max_rowsNoCap the table, default 200. min/max/avg still cover the whole window
from_dateNoISO date, inclusive. Overrides days. Free is limited to the last 90 days

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. 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.

Purpose5/5

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

The description names a specific verb and resource: '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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesQuote currency. The rate returned is 1 from = X to
dateYesISO 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
fromYesBase 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

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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

The description states a specific verb, resource, and 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.

Usage Guidelines4/5

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

The description gives clear context for 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 most recent European Central Bank daily reference rates, re-expressed against any base. Returns the rates, the ECB rate date they belong to, and how old the local cache is.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseNoBase 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
quotesNoOnly these currencies, at most 200. Omit for all of them

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does disclose useful traits: it returns the ECB rate date and cache age, signaling the result may be cached or stale. It doesn't mention read-only status or network behavior, but 'Returns' implies no side effects and the cache-age note is valuable.

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

Conciseness5/5

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

A single dense sentence states purpose and return values with no filler. The cache-age mention is the only extra detail, and it earns its place.

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

Completeness4/5

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

For a simple optional-parameter read tool, the description covers the purpose, the return payload (rates, date, cache age), and the schema covers parameter details. It could mention historical alternatives or error conditions, but these are not necessary for correct invocation.

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

Parameters3/5

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

The input schema already contains rich descriptions for both parameters, including the default behavior of base and the 200-item limit for quotes. The tool description adds no additional parameter semantics, so the baseline 3 applies given schema coverage of 100%.

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

Purpose4/5

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

States a clear verb+resource: call for the most recent ECB daily reference rates. The phrase 're-expressed against any base' adds specificity beyond the title. It doesn't name sibling tools, but 'latest' and 'ECB' distinguish it from historical or conversion-focused siblings.

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

Usage Guidelines4/5

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

Explicitly tells the agent to call it for the most recent ECB reference rates, which is a clear context. It does not mention alternatives like rate_history or fx_rates_for, nor state when not to use it, so it lacks exclusion guidance.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesISO 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.
fromYesISO 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.
formatNotable (default), json or csv. Every format carries one amount per currency, never a mixed-currency sum.
projectNoOptional project filter
group_byNoproject | 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_onlyNoDefault 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

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It 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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. 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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
styleNoFree tier prints "modern" only; "classic" and "compact" are Pro.modern
variantNo
keywordsNoFrom 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_pathNoWhere to write the .docx. Defaults to <data dir>/documents/<name>-resume.docx, numbered -2, -3, ... if that exists.
max_pagesNoBullets are ordered by relevance to target_role and keywords, then trimmed to fit this many pages against a measured word budget. Default 2.
overwriteNoReplace an existing file at out_path. Default false: the call fails and nothing is written.
target_roleNoPrinted under your name and used to rank bullets

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 extract an existing Word resume into the profile shape: name, contact, summary, skills, roles with bullets, education. Returns the parsed profile, the sections found, and anything unparsed.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to an existing .docx. Legacy .doc and .rtf are not readable here. Parsed best effort, section by heading.
saveNoStore the result as the profile. Default false: nothing is saved. Review the result first.
variantNo

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden and does a reasonable job: it states that parsing is best-effort by mentioning 'anything unparsed' and describes the return contents. It does not discuss side effects, but the tool's read-only nature is strongly implied by 'Read' and 'extract', and the save parameter is documented in the schema.

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

Conciseness5/5

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

Two sentences with no wasted words. The primary action is front-loaded, and the return information follows naturally. Every sentence earns its place.

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

Completeness4/5

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

For a read-only parse tool with no output schema, the description explains what is returned: parsed profile, sections found, and unparsed content. The main gaps are the meaning of 'variant' and explicit routing versus sibling conversion tools, but the core invocation and expected result are clear.

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

Parameters3/5

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

Schema description coverage is 67%, so the baseline is 3; path and save are already documented in the schema. The tool description adds no parameter-level meaning and leaves 'variant' undocumented, so it does not compensate for that gap.

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

Purpose4/5

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

The description uses a specific verb ('extract') and resource ('existing Word resume') and clearly names the target output ('profile shape') with its components. It distinguishes from sibling conversion tools by emphasizing structured profile extraction, but it does not explicitly name those alternatives.

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

Usage Guidelines4/5

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

The opening 'Call this tool to...' is an explicit usage directive, and the context is clear: use this when you need an existing .docx parsed into the profile shape. It does not list exclusions or compare with resume_to_markdown/htl, but the guidance is not merely implied.

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. Returns the output path. Open the file in a browser and print it to PDF.

ParametersJSON Schema
NameRequiredDescriptionDefault
variantNo
out_pathNoWhere to write the .html. Defaults to <data dir>/documents/<name>-resume.html, numbered -2, -3, ... if that exists.
max_pagesNoBullets are trimmed to fit this many pages against a measured word budget. Default 2.
overwriteNoReplace an existing file at out_path. Default false: the call fails and nothing is written.
target_roleNo

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the burden and does add some transparency by stating it returns an output path and recommending the browser/PDF workflow. However, it does not disclose overwrite behavior or other side effects beyond writing; the overwrite semantics live only in the parameter schema, not in the tool description.

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

Conciseness4/5

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

The description is short and front-loaded, with three sentences that convey purpose, return value, and next step. Minor filler like 'Call this tool' is present, but it is still appropriately concise.

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

Completeness3/5

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

For a 5-parameter tool with no annotations and no output schema, the description covers the main workflow but leaves important aspects unaddressed: what variant and target_role control, and how overwrite behaves. The schema partially fills this, but the description alone is not fully complete.

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

Parameters2/5

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

Schema description coverage is only 60%, and variant and target_role have no descriptions in the schema. The tool description does not compensate for these gaps; it only indirectly refers to out_path via 'Returns the output path'. It adds no meaning for the undocumented parameters.

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

Purpose5/5

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

The description states a specific action ('write the resume'), a specific resource ('the resume'), and the output form ('semantic HTML with a print stylesheet'). It clearly distinguishes this from sibling resume_to_markdown by calling out the HTML and print-stylesheet behavior.

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

Usage Guidelines4/5

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

It gives clear usage context: use this when the goal is printable resume HTML, then open in browser and print to PDF. It does not explicitly name alternatives or exclude Markdown, so it misses the top score but is still clearly actionable.

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: paste it into a form, an email or an ATS box.

ParametersJSON Schema
NameRequiredDescriptionDefault
variantNo
max_pagesNo
target_roleNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description bears the full behavioral disclosure burden. It clearly signals a read-only operation by saying 'Return the stored profile', which is the primary behavior. However, it does not describe how optional parameters affect the output or what the markdown contains, leaving behavioral details under-specified.

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

Conciseness5/5

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

A single sentence that front-loads the core operation and then lists concrete use cases. Every word serves a purpose, with no redundant or vague phrasing. It is an example of concise, well-structured documentation.

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

Completeness2/5

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

The tool has three optional parameters that are wholly undocumented, no output schema, and no annotations. The description explains only the general retrieval action but leaves critical context missing, such as how variant and target_role modify the output and what max_pages restricts. An agent would be uncertain how to make a tailored call.

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

Parameters1/5

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

Schema description coverage is 0% and the description adds no information about any of the three parameters: variant, max_pages, or target_role. An agent would have to guess their meanings from names alone. The description fails to compensate for the lack of schema descriptions.

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

Purpose5/5

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

The description uses a specific verb, 'Return', and identifies the resource: 'the stored profile as markdown'. It also lists concrete use cases (form, email, ATS box), which helps distinguish it from the sibling resume_to_html. 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.

Usage Guidelines4/5

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

The description provides clear context for when to use this tool: whenever markdown output is needed for pasting into forms, emails, or ATS systems. It does not explicitly name alternatives or exclusionary scenarios, but the use-case context makes the appropriate situation clear.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
everyYesHow 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
itemsYesThe line items billed every period
notesNoFree text printed under the totals of every generated invoice
clientYesClient name or id, as in the invoice server. Unknown names are created on the first generated invoice
currencyNoDefaults to your business default currency
due_daysNoDays until each invoice is due, defaults to your payment terms
end_dateNoYYYY-MM-DD, INCLUSIVE: an occurrence landing exactly on it is still generated
tax_noteNoWhy 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_dayNoPro: bill on this day of month instead of the start date's day. 31 means the last day of every month
start_dateYesYYYY-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_monthNoPro: always bill on the last day of the month
auto_generateNoMarks 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

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

Remove a schedule. Invoices it already generated stay in the invoice server untouched and its generation history is kept as an audit trail. Returns the client and how many invoices and history rows remain.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSchedule 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

A4.3/5.0
Behavior5/5

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

With no annotations, the description carries full behavioral disclosure. It explicitly states that already-generated invoices remain untouched, that generation history is kept as an audit trail, and that the call returns the client plus remaining invoice/history counts. This clearly signals a destructive but scoped operation.

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

Conciseness5/5

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

The description is three short sentences with the action front-loaded. Each sentence adds distinct high-value information: what the tool does, what it preserves, and what it returns. There is no fluff or repetition.

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

Completeness5/5

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

For a single-parameter tool with no output schema, this definition is complete. The description covers side effects and return values, while the schema fully documents the id parameter and its deletion implications. The only notable gap is alternative routing, which is already captured under usage guidelines.

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

Parameters3/5

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

The only parameter, id, is already documented in the schema with 100% coverage, including the ability to pass a client name and the permanent deletion/re-creation warning. The tool description adds no additional parameter-level meaning, so the baseline 3 applies.

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

Purpose5/5

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

The opening sentence 'Remove a schedule' states a specific action and resource. The rest clarifies the scope of the deletion and what is preserved, making the tool's purpose unambiguous and distinct from sibling lifecycle tools like schedule_pause, schedule_resume, and schedule_update.

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

Usage Guidelines3/5

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

The description implies this is for permanent removal and gives consequential context, but it never explicitly says when not to use it or recommends non-destructive alternatives such as schedule_pause for temporary stops. The guidance is mostly implied by the tool name and the deletion semantics.

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

The full stored record for one schedule: items, cadence, dates, rules and how many invoices it has generated.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSchedule id, or a client name

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral disclosure burden. It describes what the returned record contains (items, cadence, dates, rules, invoice count), which is useful, but it does not explicitly state that this is a read-only operation or what happens when the id or client name does not match a schedule.

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

Conciseness5/5

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

The description is a single sentence with no filler. It front-loads the core purpose and then lists the meaningful components returned, making it efficient and easy to parse.

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

Completeness5/5

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

For a simple one-parameter getter with no output schema, the description adequately explains what the tool returns. It covers the main stored-record components and leaves no obvious gap that would prevent correct invocation.

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

Parameters3/5

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

The schema already fully documents the single parameter, including that it accepts a schedule id or client name. The description adds no parameter-level details 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.

Purpose5/5

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

The title and description clearly state a specific verb (get), a specific resource (one schedule), and the scope (the full stored record). This distinguishes it from schedule_list, schedule_upcoming, and schedule_history without needing to inspect those tools.

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

Usage Guidelines3/5

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

The description implies use when the full record of a single schedule is needed, but it does not explicitly state when to use this tool versus siblings such as schedule_list or schedule_upcoming. There is no mention of alternatives or exclusion conditions.

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

schedule_historySchedule history (Pro)A

The audit log for one schedule: every period it has generated, the invoice number, dates, amount and PDF path.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It conveys a read-only audit-log operation and states exactly what will be returned: every generated period, invoice number, dates, amount, and PDF path. It does not cover licensing/Pro requirements or error cases, 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.

Conciseness5/5

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

The description is one focused sentence that front-loads 'audit log for one schedule' and then compresses the return fields into a clear colon-delimited list. Every clause adds information; there is no filler, repetition, or unnecessary detail.

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

Completeness5/5

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

For a one-parameter, low-complexity read tool with no output schema, the description is complete enough: it names the schedule scope and the returned fields. An agent can select and call the tool correctly with a schedule id; missing pagination or exact JSON shape is not essential here.

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

Parameters4/5

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

The schema only defines a required string id with no description, so the description must compensate. The phrase 'for one schedule' tells the agent that id refers to the schedule whose history should be retrieved, which is the essential semantic for this single-parameter tool.

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

Purpose4/5

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

The description clearly identifies the resource as one schedule's audit log and enumerates the returned contents—generated periods, invoice number, dates, amount, and PDF path—so an agent can understand it is a historical read. It does not use an explicit action verb such as 'get' or 'list,' and it does not explicitly contrast with sibling schedule tools like schedule_get or schedule_upcoming.

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

Usage Guidelines2/5

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

The description offers no guidance on when to use schedule_history rather than schedule_get, schedule_upcoming, or schedule_list. It implies a schedule id is needed by saying 'for one schedule,' but it gives no explicit context, prerequisites, or alternative routing.

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

schedule_listList schedulesA

Every schedule with its cadence, per-period amount, next due date and status (active or paused).

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the return shape (cadence, amount, due date, status) but does not mention pagination, ordering, or the behavior when the optional status filter is used. For a simple read-only list operation this is adequate, but it leaves some behavioral details unstated.

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

Conciseness5/5

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

A single sentence that packs the entire output contract into a readable form with zero filler. The key output fields are front-loaded and each word earns its place.

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

Completeness4/5

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

For a straightforward list operation with one optional enum parameter and no output schema, the description is largely complete: an agent knows what the tool returns. It would be more complete if it explicitly connected the status parameter to filtering, but the schema's enum makes that inferable. The lack of pagination/ordering details is a minor gap for this simple tool.

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

Parameters2/5

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

The schema has one optional status parameter with an enum, but the description never explains that this parameter filters results by status. It mentions 'status (active or paused)' only as part of the output, which could mislead an agent into thinking the parameter is merely echoed in results. With 0% schema description coverage, the description needed to clarify the parameter's role.

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

Purpose4/5

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

The description states the tool returns every schedule and enumerates the exact fields included (cadence, per-period amount, next due date, status). This clearly identifies the resource and the nature of the operation. It doesn't explicitly differentiate from schedule_get or schedule_upcoming, but the phrase 'Every schedule' strongly signals this is the list-all tool.

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

Usage Guidelines4/5

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

The description makes the tool's context clear: it returns all schedules with specific fields. No alternatives or exclusions are mentioned, but the tool's name and the 'Every schedule' wording provide enough context for an agent to know when to use it versus schedule_get or schedule_upcoming. A brief mention of alternatives would earn a 5, but the context is otherwise unambiguous.

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 a schedule from generating invoices without deleting it. Its history is kept and it can be resumed.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It discloses the non-destructive nature (history kept, can be resumed) and the core effect (stops invoice generation). It does not mention permissions or side effects, but for a simple pause operation 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.

Conciseness5/5

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

Two sentences with the core action front-loaded, followed by important qualifiers. No wasted words; every clause adds value.

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

Completeness4/5

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

For a single-parameter tool with no output schema, the description covers the essential behavioral context (non-destructive, reversible) and the scope of effect (stops invoice generation). It could mention return value or prerequisites, but these are not critical for a simple pause action.

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

Parameters2/5

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

Schema description coverage is 0% and the description does not explain the 'id' parameter at all. It is left implicit that 'id' refers to the schedule identifier, but the description adds no meaning beyond the schema's minimal string type. Since coverage is low, the description should compensate, but it does not.

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

Purpose5/5

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

States a specific verb ('stop'), resource ('a schedule'), and the key distinction from deletion: it does not delete, keeps history, and can be resumed. This clearly differentiates it from schedule_delete and schedule_resume siblings.

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

Usage Guidelines4/5

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

The description implies the alternative of deletion by emphasizing that history is kept and it can be resumed, which suggests using this instead of schedule_delete when preservation matters. However, it does not explicitly name schedule_resume or schedule_delete as alternatives or give explicit when-to-use conditions.

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. Periods that fell due while it was paused are still due and will be created by the next invoice_generate_due.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A4.3/5.0
Behavior4/5

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 does this well by explaining a non-obvious consequence: periods that fell due while paused are still due and will be created by the next invoice_generate_due. It does not mention error handling or idempotency, but the key behavioral nuance 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.

Conciseness5/5

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

The description is two short sentences with no filler. The primary action is front-loaded, and the second sentence adds important behavioral context without redundancy. Every sentence contributes.

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

Completeness5/5

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

Given the tool has one required parameter, no output schema, and no annotations, the description is sufficient. It defines when to use the tool and the important downstream effect on invoice generation, so an agent has what it needs to invoke this tool correctly.

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

Parameters3/5

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

The schema coverage is 0%, so the description should compensate for the undocumented id parameter. It does not explicitly say that id identifies the paused schedule to resume, though 'a paused schedule' implies the target. For a single, simple required parameter this is a minor gap rather than a critical one.

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

Purpose5/5

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

The description states a specific verb and resource: 'Make a paused schedule active again.' This clearly expresses the operation and target, and the word 'schedule' disambiguates it from the unrelated resume_to_markdown, resume_read, and resume_create sibling tools.

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

Usage Guidelines4/5

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

The description gives a clear condition for use: the schedule must be paused. It does not explicitly name alternatives like schedule_update or schedule_pause, but the condition and action are 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.

schedule_skipSkip one periodA

Skip a single occurrence of a schedule without pausing it: no invoice is ever created for that period, and every other period bills as normal. Returns the amount that will not be billed and how to undo it.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSchedule id, or a client name
undoNoRemove a previous skip so the period becomes due again. Works only on a period that has not been invoiced. Default false
periodYesThe 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

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden. It discloses key side effects: no invoice is created for the skipped period, every other period bills normally, and it returns the amount not billed and how to undo. It does not explicitly describe the undo behavior as an action of this tool, but the schema 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.

Conciseness5/5

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

Two sentences with no wasted words. The core action, effect, and return value are stated efficiently and front-loaded.

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

Completeness4/5

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

The description plus rich schema covers the main decision (skip vs. pause), the invoicing effect, and the return value. It omits explicit mention of the undo parameter as a call path, but the schema documents it. Sufficiently complete for a three-parameter tool.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters are already documented in the input schema. The tool-level description adds minimal parameter-specific meaning beyond the 'single occurrence' context, so baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource: 'Skip a single occurrence of a schedule.' It explicitly distinguishes from pausing and references the sibling schedule_pause in the period parameter description, making selection unambiguous for an agent.

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

Usage Guidelines5/5

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

Explicitly tells when to use this tool: 'This is the answer to pause this client for October' and contrasts with schedule_pause, which stops the whole schedule and back-bills missed periods. This gives clear when-to-use and when-not-to-use guidance.

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

schedule_upcomingWhat falls due soonA

Table of every schedule occurrence falling due in the next N days, with the amount per occurrence and the total per currency. Free lists the first 3 occurrences in the horizon you ask for.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoDays 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

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose the free-tier truncation behavior and the output fields, which is useful. It does not mention read-only status, ordering, timezone, or whether already-overdue items are included, so transparency is partial.

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

Conciseness5/5

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

Two sentences, front-loaded with the core output, and no filler. The free-tier limitation is important context and is kept brief, though it overlaps with the schema description.

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

Completeness4/5

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

For a simple one-parameter read tool with no output schema, the description covers the essential return values and the key free-tier constraint. It is complete enough for an agent to call it correctly, though details like ordering or grouping of currencies are left implicit.

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

Parameters3/5

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

Schema coverage is 100% and the days parameter description already covers default, horizon, and free/Pro behavior. The tool description adds little beyond restating 'next N days' and the free-tier first-3 occurrences behavior, so it does not meaningfully expand on the schema.

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

Purpose4/5

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

The description clearly states what the tool returns: a table of schedule occurrences due in the next N days, with amount per occurrence and total per currency. It is distinguishable from siblings like schedule_list or schedule_get by its focus on upcoming due occurrences, though it does not explicitly name an alternative.

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

Usage Guidelines3/5

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

The 'next N days' and 'falling due' language implies this is for due-date lookahead queries, but there is no explicit guidance about when to choose this over schedule_list, schedule_get, or schedule_history. Usage context 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.

schedule_updateUpdate a scheduleB

Change a schedule's client, items, currency, cadence, dates, due days, notes or auto_generate flag. Periods already invoiced are never re-issued, so changing the amount affects future invoices only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
everyNoHow 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
itemsNo
notesNo
clientNo
currencyNo
due_daysNo
end_dateNonull clears the end date
tax_noteNoReplace the tax reason carried onto every future generated invoice. Pass an empty string to clear it
anchor_dayNoPro
start_dateNo
end_of_monthNoPro
auto_generateNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It usefully discloses that invoiced periods are never re-issued and that amount changes affect future invoices only. However, it does not mention partial-update semantics, whether this is destructive in any way, or what happens to existing future invoices when interval/date fields change.

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

Conciseness5/5

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

Two sentences with no filler. The action and key field list are front-loaded, and the important future-invoice caveat is clearly stated immediately after. Every sentence earns its place.

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

Completeness2/5

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

Given 13 parameters, a partial-update semantic (required id only), and no output schema, the description is under-specified. It does not state whether this is a patch (only provided fields change) or a replace operation, what the response contains, whether omitted fields are preserved, or whether certain changes are invalid when invoices exist. The one behavioral caveat is helpful but insufficient for this complexity.

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

Parameters2/5

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

Schema description coverage is only 38%, so the description should compensate by explaining parameter meaning or update behavior. It merely lists field groups already visible in the schema and omits tax_note, anchor_day, end_of_month. It adds no guidance on formats, relationships between fields, or which combinations are valid.

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

Purpose4/5

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

The description clearly identifies a specific action ('Change a schedule's client, items, currency, cadence, dates, due days, notes or auto_generate flag') and names the resource. It does not explicitly differentiate from schedule_create or schedule_pause/resume, but the 'change' framing makes the update purpose evident.

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

Usage Guidelines3/5

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

Usage is implied: this tool modifies an existing schedule, as opposed to creating, pausing, or deleting one. However, there is no explicit guidance about when to prefer this over schedule_create or when a schedule should not be updated, nor mention that only changing fields need to be passed.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the new column. It must not already exist on the sheet
pathYesPath to the source .xlsx/.xlsm/.xlsb/.ods/.csv/.tsv file (~ is expanded); it is never modified
sheetNoSheet name; default is the first sheet
valuesNoExplicit values, one per data row, instead of a formula. Missing entries are left blank
formulaNoExpression 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
decimalsNoRound 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_pathNoOutput file; default <source>-plus-<column>.<same ext>. The source file is left untouched unless this points at it

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full 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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds 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.

Purpose5/5

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

The description uses a specific verb and resource: '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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesTarget format; the default out_path takes this as its extension
pathYesPath to the source .xlsx/.xlsm/.xlsb/.ods/.csv/.tsv file (~ is expanded); it is never modified
sheetNoSheet to convert; default is the first sheet. Only that one sheet is written
out_pathNoWhere to write; default is the source name with the new extension, next to the source. It must differ from the source path

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the .xlsx/.xlsm/.xlsb/.ods/.csv/.tsv file (~ is expanded)
textYesText to look for; matched case insensitively anywhere inside a cell. Up to 200 hits are returned
sheetNoSheet name; default searches every sheet

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. 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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the .xlsx/.xlsm/.xlsb/.ods/.csv/.tsv file (~ is expanded)

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 spreadsheets and must not be used for them. Filters, groups, aggregates and sorts in one call, e.g. where '[Qty] > 10'.

ParametersJSON Schema
NameRequiredDescriptionDefault
asNo
pathYesPath to the .xlsx or .csv file
sortNoSort column; may be an aggregate alias such as total_units
limitNoDefault 100
sheetNo
whereNoFilter, e.g. [Qty] >= 5 AND ([Status] = "open" OR [Status] = "new")
selectNoColumn names to return; default all (with group_by, defaults to the group columns plus the aggregates)
group_byNoGroup rows by these columns before aggregating, e.g. ["Rep"] or ["Region","Rep"]
aggregateNoAggregates per group, e.g. [{"col":"Units","fn":"sum","as":"total_units"}]. Defaults to a row count when group_by is given.

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It discloses that the tool parses spreadspreadsheets and performs filter/group/aggregate/sort operations in one call. It does not state whether the file is modified, nor describe output shape or defaults, but the query-oriented wording implies a read-only transformation, leaving room for more transparency.

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

Conciseness5/5

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

Two sentences with no filler: the first routes to the right class of files, the second states the core multi-operation behavior and gives a concrete filter example. It is front-loaded and every sentence earns its place.

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

Completeness3/5

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

The tool has 9 parameters, nested aggregate objects, and no output schema, so a minimal viable description needs more than two sentences. The schema covers most parameters, but the description does not explain return shape, default limit, or when to prefer sibling tools like sheet_read or sheet_stats. It is adequate but has clear gaps.

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

Parameters3/5

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

Schema description coverage is 78%, so most parameters are already documented. The description adds the helpful where-syntax example ('[Qty] > 10') and reinforces the combined query capability, but it adds no meaning beyond the schema for group_by, aggregate, sort, or the as output enum. Baseline 3 is appropriate.

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

Purpose4/5

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

The description uses specific operation verbs ('Filters, groups, aggregates and sorts in one call') and identifies the target resource (spreadsheet or CSV path). It also clearly distances itself from built-in file readers. However, it does not explicitly contrast with sibling spreadsheet tools like sheet_read, sheet_stats, or sheet_find, 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.

Usage Guidelines4/5

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

The description gives explicit routing: call this tool for any spreadsheet or CSV file path, and warns that built-in file readers must not be used for them. This is clearer than implied usage. It lacks explicit guidance on when to choose this over sibling sheet_* tools, but it does provide a clear context and an exclusion.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
asNoOutput format, default table
pathYes
limitNoRows to return, default 100
rangeNoA1 range such as A1:D50; overrides limit/offset
sheetNoSheet name; defaults to the first sheet
offsetNoRows to skip, default 0

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
sheetNo
columnsNoLimit to these columns; default all

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 excel (xlsx) or csv/tsv/json file. Returns the rows, columns, byte size and column names of the file written.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYesnew_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
pathYesSource file for append/overwrite, or the intended file for new_file (~ is expanded)
rowsYesArray of objects, whose keys become the headers, or an array of arrays with the header row first
sheetNoSheet 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_pathNoWhere 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

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries more burden, and it does disclose the write side effect and the return payload (rows, columns, byte size, column names). However, it does not describe clobbering behavior, preservation of other sheets, or failure conditions; these are left mostly to the schema's mode descriptions rather than the tool description.

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

Conciseness5/5

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

A single sentence with no filler, front-loading the primary action and the key return information. Every part of the sentence contributes to understanding the tool's purpose and output.

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

Completeness4/5

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

The schema is rich enough to cover the parameters, and the description fills the missing return-value information plus file-type scope. It could also mention mode side effects or route to sibling tools, but the essential invocation context is present.

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

Parameters3/5

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

Schema description coverage is 100%, and the mode, path, rows, sheet, and out_path are all explained in the schema. The description itself adds no parameter-level nuance, so it meets the baseline but does not exceed it.

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

Purpose5/5

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

The description names a specific action ('write rows') and a concrete resource ('an excel (xlsx) or csv/tsv/json file'), and it also states what the tool returns. This clearly separates it from read/query/find siblings by the write verb.

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

Usage Guidelines2/5

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

The opening 'Call this tool to write rows...' is a direct instruction but not usage guidance. It does not mention when to choose this over sheet_read, sheet_query, or sheet_convert, nor does it explain prerequisites or when append vs overwrite vs new_file should be selected.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many keywords to extract from the posting. Default 30.
variantNo
job_descriptionYesPaste the posting. The free tier reads up to 2,000 characters; Pro reads any length.

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 billable work on a project or client (timesheet / hours per project). Only one timer runs at a time: starting a new one stops and logs the previous one.

ParametersJSON Schema
NameRequiredDescriptionDefault
rateNoHourly 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.
tagsNoFree-form tags, e.g. ['dev','meeting']
taskNoWhat you are working on right now
projectYesProject or client name, e.g. 'acme-website'. A partial name that matches exactly one existing project is used as that project.
currencyNoCurrency of the rate: EUR, USD, GBP, PLN, or words like 'euros'. Defaults to the project currency, else USD.

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden; it discloses the key side effect: only one timer runs and starting a new one stops and logs the previous one. It does not elaborate on output or persistence beyond that, but the core behavioral trap is explicitly flagged.

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

Conciseness5/5

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

Two sentences with no filler. The first sentence front-loads action and scope; the second delivers the most important behavioral caveat.

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

Completeness4/5

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

For a simple state-transition tool with fully described schema parameters, the description captures purpose and the critical runtime constraint. It does not describe return values, but no output schema exists and the endpoint's behavior is adequately specified for selecting and invoking it.

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

Parameters3/5

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

The input schema covers all 5 parameters with their own descriptions, so the description does not need to repeat those semantics. It adds 'project or client' context but leaves rate, tags, and currency details to the schema, which is appropriate at full schema coverage.

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

Purpose5/5

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

States a specific action ('Start a stopwatch') and resource scope ('billable work on a project or client'), and the single-timer limitation distinguishes it from siblings like timer_stop and timer_status. The title and name are expanded, not merely echoed.

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

Usage Guidelines4/5

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

Clear context: use when beginning billable tracking for a project or client. It does not explicitly name alternatives or exclusions, so it stops short of the top score.

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

timer_statusTimer statusA

Show the running timer, how long it has been running, and today's total hours so far.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

No annotations exist, so the description carries the full behavioral burden. It does disclose that this is a read-style operation ('Show') and specifies what data it returns. It does not, however, describe behavior when no timer is running (error, empty state, or zeroes), which is a meaningful gap for a status tool.

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

Conciseness5/5

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

A single sentence with zero filler. The primary purpose ('Show the running timer') is front-loaded, and the additional details ('how long it has been running,' 'today's total hours') are packed efficiently into one clause.

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

Completeness3/5

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

For a zero-parameter read tool, the description covers the core return content adequately. The omission of the no-active-timer case is the main gap, and with no output schema available, the agent must guess the return shape when a timer isn't running.

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

Parameters4/5

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

The tool has zero parameters and the schema is an empty object, so there is nothing for the description to add. Per the zero-parameter baseline of 4, this dimension is adequately handled; no param documentation is needed.

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

Purpose5/5

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

The description names a specific verb ('Show'), a clear resource (the running timer), and enumerates exactly what the agent will learn: elapsed running time and today's total hours. It naturally distinguishes itself from sibling mutations like timer_start and timer_stop, which are 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.

Usage Guidelines3/5

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

The intended use is implied well: an agent calls this when asked about the ongoing timer's state or today's hours. However, it never explicitly says when to prefer this over siblings such as entry_list or forecast, nor does it state exclusions or prerequisites (e.g., whether a timer must be active).

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 a time entry. Returns the duration and the entry id.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoOptional note stored with the entry

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must convey side effects. It states that the timer is stopped and an entry is logged, and that duration and entry id are returned. However, it does not mention error handling for when no timer is running or potential idempotency issues.

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

Conciseness5/5

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

Two concise sentences with no redundant wording. The main action is front-loaded, and the return value is stated clearly.

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

Completeness4/5

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

For a simple tool with one parameter and no output schema, the description covers the main behavior and result. It lacks explicit preconditions (e.g., a timer must be running) but that is implied and acceptable for this scope.

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

Parameters3/5

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

The only parameter 'note' is fully described in the schema, and the description repeats it as 'Optional note stored with the entry'. Schema coverage is 100%, so baseline 3 applies.

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

Purpose5/5

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

Clearly states the action 'Stop' and the resource 'running timer', and adds context that it logs the time entry. This distinguishes it from timer_start and timer_status, and aligns with sibling tools like entry_add.

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

Usage Guidelines4/5

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

The use case is implied: use when there is a running timer to end and record. It does not explicitly mention alternatives or when not to use, but the action is straightforward and the intent is clear.

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

Given a set of clauses, list every {{variable}} they use and which clause uses it, so nothing is missed before assembling.

ParametersJSON Schema
NameRequiredDescriptionDefault
clause_idsYesClause ids or titles

TDQS

A4/5.0
Behavior3/5

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 clearly states what the tool does: list variables used across clauses and map them to clause usage. However, it does not disclose the exact return format, whether results are deduplicated, or what happens if a clause is invalid or a variable is repeated across clauses.

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

Conciseness5/5

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

The description is a single sentence that front-loads the input condition and immediately states the action and purpose. Every phrase earns its place, and the 'nothing missed' motivation clarifies why an agent would call the tool.

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

Completeness4/5

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

For a one-parameter read-only list operation, the description covers what the tool does, why to use it, and what the output contains (variables and their clause usage). No output schema exists, so the stated result shape is the main fallback, and it is adequately described. Minor details like return formatting or empty results are not necessary for basic invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents clause_ids as clause IDs or titles. The description adds the conceptual meaning of clauses as the source of variables, but does not add new parameter-level detail. Baseline 3 is appropriate.

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

Purpose5/5

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

The description names a specific operation (list every variable), the input (a set of clauses), and the output scope (which clause uses each variable). This clearly distinguishes it from any sibling tool and makes the tool's purpose immediately obvious.

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

Usage Guidelines4/5

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

The description gives explicit context: this should be used before assembling something and is meant to ensure nothing is missed. It does not explicitly name alternative tools or exclusions, but the sibling list contains no competing variable-listing tool, so this is sufficient guidance.

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, optional target, re-read by watch_refresh.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesProduct page URL
labelNoShort name for this item
currencyNoISO code such as USD or EUR, if the page does not say
target_priceNoReport this watch in alerts_pending when the price is at or below this (positive number)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It transparently states that calling the tool starts tracking the URL, records an initial observation, supports an optional target, and is re-read via watch_refresh. This makes the side-effecting, stateful nature of the tool clear without relying on annotations.

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

Conciseness5/5

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

The description is three short sentences with no filler. It front-loads the core instruction and rationale, then compactly summarizes the watch lifecycle and the relationship to watch_refresh. Every sentence contributes useful information.

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

Completeness4/5

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

Given the simple parameter set, no annotations, and no output schema, the description is largely complete: it explains what the tool does, why it exists, what side effects occur, and what to call next. It does not mention the return value or any watch identifier needed for later operations, but this is a modest gap for a straightforward creation tool.

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

Parameters3/5

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

The input schema already describes all four parameters with 100% coverage, so the baseline is 3. The description adds little beyond restating that a product URL is the input and that a target is optional; it does not provide additional format, constraint, or interaction details beyond the schema.

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

Purpose5/5

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

The description states a clear action: 'Starts tracking it' for any product URL, with an explicit first observation and optional target. It differentiates itself from a generic web fetch tool by explaining that generic fetching returns raw HTML without the price, and names watch_refresh as the follow-up action.

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

Usage Guidelines4/5

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

The description gives explicit guidance: call this tool for product URLs when a generic web tool would be insufficient because it returns raw HTML without the price. It also points to watch_refresh for re-reading. It does not discuss when to prefer related tools like price_check or price_add_manual, but the core when/why is clear.

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 its current price, previous price, min, max, change %, target, extraction confidence and last check time. Prices are as of the last watch_refresh, not live.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses that the tool returns stored prices from the last refresh rather than live values, which is a meaningful behavioral trait. It does not mention pagination, ordering, or empty-list behavior, but for a simple no-parameter listing tool this is acceptable.

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

Conciseness5/5

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

The description is a single well-structured sentence that front-loads the action and resource, lists the return fields, and ends with the critical freshness caveat. Every word earns its place.

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

Completeness5/5

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

For a no-parameter list tool with no output schema, the description adequately conveys both the return content and the relevant staleness behavior. An agent knows what to expect and how the data relates to watch_refresh.

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

Parameters4/5

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

The input schema has zero parameters, so there is nothing for the description to clarify. Baseline 4 applies because parameter semantics are not a concern.

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

Purpose5/5

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

The description uses a specific verb ('Show') with a clear resource ('every tracked item') and enumerates the exact data fields returned. This unambiguously identifies it as the watch-list listing tool and distances it from watch_add/watch_remove or price_history.

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

Usage Guidelines4/5

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

The caveat 'Prices are as of the last watch_refresh, not live' provides clear context that this is a read-only snapshot and implicitly points to watch_refresh for more current data. It does not explicitly name alternatives or exclusion conditions, but the freshness context is enough for an agent to choose correctly.

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

watch_refreshRefresh pricesA

This is what actually checks prices: re-fetches one watch or every watch, appends the new observations and returns current, previous, min, max, change %, extraction confidence and target hits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoWatch 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.
allNoRefresh every watch in one call (Pro; on free, refresh one id at a time)

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It discloses that it re-fetches, appends new observations (a write operation), and returns specific metrics. However, it does not mention potential side effects like generating alerts, rate limits, or whether it is long-running. The schema description adds 'Nothing runs in the background', but that is not in the main description.

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

Conciseness4/5

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

The description is a single sentence that front-loads the purpose ('This is what actually checks prices') and then lists the key behaviors and return values. It is concise and every clause adds value, though it could be split into clearer sentences for readability.

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

Completeness3/5

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

The description explains what the tool does and what it returns, which covers the core functionality. However, it omits important contextual details like the recommended usage pattern (call once per session, then read alerts_pending) which is only present in the schema description. There is no output schema, so the return fields are described, but side effects or prerequisites are not fully addressed.

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

Parameters3/5

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

The input schema covers 100% of the parameters (id and all) with clear descriptions. The description adds little beyond the schema: it mentions 'one watch or every watch' which mirrors the schema. No extra parameter-specific semantics are provided.

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

Purpose5/5

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

The description clearly states the action: 're-fetches one watch or every watch' and the resource 'watch'. It lists the exact return data (current, previous, min, max, change %, extraction confidence, target hits), making it distinct from siblings like price_check (likely a one-off check) or price_history (likely returns historical data without refreshing).

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

Usage Guidelines3/5

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

The description only hints at usage with 'This is what actually checks prices' but does not explicitly state when to use this tool vs alternatives or mention exclusions. However, the parameter schema for 'id' includes guidance ('call this whenever the user asks about prices, drops or alerts - typically once at the start of a session, then read alerts_pending'), which is part of the tool definition but not in the main description text.

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 an item, by watch id or by URL. Give either id or url. Its stored observation history is deleted and cannot be recovered.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoWatch id from watch_list
urlNoURL of the watch, if you do not have the id

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses a critical behavioral trait: stored observation history is deleted and cannot be recovered, which alerts the agent to the irreversible destructive nature of this operation.

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

Conciseness5/5

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

Two sentences with no filler. The action is front-loaded, the parameter options are stated, and the critical irreversible consequence is included in a compact second sentence.

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

Completeness5/5

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

For a simple two-parameter tool with no output schema, the description fully covers purpose, parameter selection, and the only significant behavioral consequence. There is no missing guidance an agent would need to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the parameter descriptions already provide baseline meaning. The description adds value by explicitly presenting id and url as alternatives ('Give either id or url'), clarifying that they should not both be supplied.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('stop tracking') and clearly identifies the resource ('an item' or watch). It distinguishes this tool from siblings like watch_add, watch_list, and watch_refresh by focusing on removal.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool: when you want to stop tracking an item. It also clarifies the two input modes (id or URL), though it doesn't explicitly name alternatives or exclusion conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 117 tool updatesv0.20.0
    • First observedalerts_pending
    • First observedbusiness_days
    • First observedcache_status
    • First observedcalendars_list
    • First observedclause_add
    • First observedclause_delete
    • First observedclause_export
    • First observedclause_get
    • First observedclause_import
    • First observedclause_list
    • First observedclause_search
    • First observedclause_update
    • First observedclient_add
    • First observedclient_delete
    • First observedclient_list
    • First observedconflicts
    • First observedcontacts_list
    • First observedcontacts_set
    • First observedcontract_assemble
    • First observedcontract_create
    • First observedconvert
    • First observedconvert_many
    • First observedconvert_time
    • First observedcover_letter_create
    • First observedcurrencies_list
    • First observeddoc_create
    • First observeddoc_fill_template
    • First observeddoc_from_markdown
    • First observeddoc_read
    • First observeddoc_to_html
    • First observeddocx_business_set
    • First observeddst_changes
    • First observedentry_add
    • First observedentry_delete
    • First observedentry_edit
    • First observedentry_list
    • First observedentry_mark_billed
    • First observedevent_export
    • First observedevent_to_time_entry
    • First observedevents_list
    • First observedevents_search
    • First observedexport_csv
    • First observedfind_meeting_slots
    • First observedforecast
    • First observedfree_busy
    • First observedfx_rates_for
    • First observedics_create
    • First observedics_forget
    • First observedics_import
    • First observedinvoice_business_set
    • First observedinvoice_create
    • First observedinvoice_from_hours
    • First observedinvoice_generate_due
    • First observedinvoice_get
    • First observedinvoice_list
    • First observedinvoice_mark_paid
    • First observedinvoice_pdf
    • First observedinvoice_summary
    • First observedlicense_activate
    • First observedlicense_status
    • First observednext_event
    • First observednow
    • First observedoverdue_report
    • First observedoverlap
    • First observedpdf_count
    • First observedpdf_info
    • First observedpdf_merge
    • First observedpdf_pages
    • First observedpdf_reorder
    • First observedpdf_rotate
    • First observedpdf_split
    • First observedpdf_stamp
    • First observedpdf_text
    • First observedpdf_watermark_business
    • First observedprice_add_manual
    • First observedprice_check
    • First observedprice_history
    • First observedprofile_get
    • First observedprofile_set
    • First observedproject_set_rate
    • First observedproposal_create
    • First observedproposal_update
    • First observedrate_history
    • First observedrate_on
    • First observedrates_latest
    • First observedreport
    • First observedresume_create
    • First observedresume_read
    • First observedresume_to_html
    • First observedresume_to_markdown
    • First observedschedule_create
    • First observedschedule_delete
    • First observedschedule_get
    • First observedschedule_history
    • First observedschedule_list
    • First observedschedule_pause
    • First observedschedule_resume
    • First observedschedule_skip
    • First observedschedule_upcoming
    • First observedschedule_update
    • First observedsheet_add_column
    • First observedsheet_convert
    • First observedsheet_find
    • First observedsheet_info
    • First observedsheet_query
    • First observedsheet_read
    • First observedsheet_stats
    • First observedsheet_write
    • First observedtailor_to_job
    • First observedtimer_start
    • First observedtimer_status
    • First observedtimer_stop
    • First observedvariables_list
    • First observedwatch_add
    • First observedwatch_list
    • First observedwatch_refresh
    • First observedwatch_remove

TDQS

B3/5.0

Scored across 117 tools

Disambiguation3/5

Tools are grouped by domain and individually well-specified, but clusters such as pdf_info/pdf_count, pdf_merge/pages/reorder, price_check/watch_add, resume_create/to_markdown/to_html, and convert/convert_time share enough purpose that an agent can easily pick the wrong one. The detailed descriptions help, but the sheer number of similar utilities makes boundaries less crisp than in a smaller, focused server.

Naming Consistency3/5

Most names use the expected snake_case verb_noun pattern with domain prefixes like schedule_, pdf_, sheet_, invoice_, and clause_, which is helpful. However, one-word commands (now, report, forecast, overlap, convert, conflicts, free_busy), mixed creation verbs (add/create/set), and convert/convert_time/convert_many break the pattern and reduce predictability.

Tool Count1/5

117 tools for one server is far beyond a practical selection surface. Even if an office suite covers many subdomains, bundling them into a single MCP server makes every agent scan a huge flat list and massively increases selection cost; this should be split into several focused servers.

Completeness4/5

Each subdomain is well covered: schedules, clauses, PDF operations, time tracking, price watches, spreadsheets, invoices, FX rates, docx, and calendar events all have lifecycle or read/write coverage with few dead ends. Minor gaps remain, such as no proposal/contract get/list/delete and credit notes only being referenced, but they are workable rather than blocking.

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A 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
    -
  • A
    license
    B
    quality
    D
    maintenance
    A 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.
    3
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Unifies multiple MCP servers behind a single endpoint with lazy loading, auto-cleanup, Python plugins, and role-based filtering.
    2
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    A 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.
    -