Skip to main content
Glama
nubiia-dev
by nubiia-dev

MCP Holded

CI npm version License: MIT codecov by Nubiia

A Model Context Protocol (MCP) server for the Holded API. This server lets AI assistants like Claude interact with Holded's invoicing, accounting, contacts, products, treasury, HR, time tracking and more.

Built and maintained by Nubiia β€” automatizaciΓ³n e integraciones con IA para negocios (MCP, Holded, Pipedrive y mΓ‘s). ΒΏQuieres algo asΓ­ para tu empresa? EscrΓ­benos en nubiia.es.

Features

This MCP server provides access to the Holded API v2 across all supported modules:

  • Documents (16 tools): Create, list, update, delete invoices, estimates, credit notes, etc. Also pay, send, get PDF, ship items, and more.

  • Contacts (7 tools): Manage clients and suppliers with attachments.

  • Products (9 tools): Full product management including images and stock.

  • Treasuries (3 tools): Manage legacy treasury accounts.

  • Treasury v2 (15 tools): Bank accounts, bank movements, cash movements, invoicing forecasts and reconciliation.

  • Expenses Accounts (5 tools): Handle expense account categories.

  • Numbering Series (4 tools): Configure document numbering.

  • Sales Channels (5 tools): Manage sales channels.

  • Warehouses (6 tools): Warehouse management.

  • Payments (5 tools): Payment method configuration.

  • Taxes (1 tool): Get available taxes.

  • Contact Groups (5 tools): Organize contacts into groups.

  • Remittances (2 tools): Access remittance data.

  • Services (5 tools): Manage services.

  • Time Tracking (3 tools): List time-tracking entries and project times (read and write).

  • Accounting (2 tools, read-only): Get the chart of accounts and the daily ledger.

  • Ledger (4 tools): List and create accounting/ledger entries.

  • Team/HR (22 tools): Employee management, payroll records, employee time entries and clock in/out.

Total: 119 tools β€” all registered unconditionally once a valid v2 key is configured.

Related MCP server: invoiceninja-mcp

Installation

Prerequisites

  • Node.js 22.14 or higher

  • A Holded account with API access

  • A Holded API v2 key (pat_… or sk_live_…) β€” generate it in Holded β†’ Settings β†’ API

Install from npm

npm install -g @nubiia/mcp-holded

Install from source

git clone https://github.com/nubiia-dev/mcp-holded.git
cd mcp-holded
npm install
npm run build

Configuration

Environment Variables

All tools call the Holded API v2 (Bearer auth, cursor pagination). You need a single v2 key:

# Recommended β€” primary key name
export HOLDED_API_KEY=pat_your_v2_key_here

# Alternative β€” accepted as an alias; wins over HOLDED_API_KEY if both are set
export HOLDED_API_KEY_V2=sk_live_your_v2_key_here

Generate the key in Holded β†’ Settings β†’ API. The key must start with pat_ or sk_live_. A 403 response means the key is missing a required scope.

For multi-tenant setups use the same logic per tenant:

export TENANT_1_NAME=company-a
export TENANT_1_API_KEY=pat_key_for_company_a
export TENANT_2_NAME=company-b
export TENANT_2_API_KEY=sk_live_key_for_company_b

TENANT_N_API_KEY_V2 is accepted as an alias for TENANT_N_API_KEY (wins if both are set).

Claude Desktop Configuration

Add to your Claude Desktop config file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "holded": {
      "command": "npx",
      "args": ["-y", "@nubiia/mcp-holded"],
      "env": {
        "HOLDED_API_KEY": "pat_your_v2_key_here"
      }
    }
  }
}

Or if installed from source:

{
  "mcpServers": {
    "holded": {
      "command": "node",
      "args": ["/path/to/mcp-holded/dist/index.js"],
      "env": {
        "HOLDED_API_KEY": "pat_your_v2_key_here"
      }
    }
  }
}

Migrating from 1.x

API key

The server now calls the Holded API v2 exclusively. Your 1.x API key (a plain hex string like abc123…) no longer works. Generate a v2 key in Holded β†’ Settings β†’ API; the key will start with pat_ or sk_live_.

Set it as HOLDED_API_KEY (or the alias HOLDED_API_KEY_V2). The separate HOLDED_API_KEY_V2 variable used in 1.x to opt-in to HR/Ledger/Treasury tools is no longer needed β€” all 119 tools are always registered.

Pagination

List tools changed from page-based to cursor-based pagination:

1.x argument

2.x argument

Notes

page

(removed)

Server no longer accepts offset pages

pageSize

limit

Server-paginated; use limit to control page size

(none)

cursor

Pass the nextCursor from the previous response

Responses now follow this envelope:

{
  "items": [...],
  "nextCursor": "opaque-string-or-null",
  "hasMore": true
}

Iterate by passing nextCursor as cursor until hasMore is false.

Response format

  • Field names are snake_case throughout (e.g. contact_id, created_at).

  • Monetary amounts are strings with a decimal comma (e.g. "1.234,56") β€” parse with your locale-aware number parser before doing arithmetic.

Removed or changed operations

Operation

1.x behaviour

2.x behaviour

purchaserefund list/get/update/delete/pay

Supported

Removed β€” create only via /purchases/refund

update_document tracking

All document types

Only salesorder and waybill

Ship operations

All document types

Only salesorder and purchaseorder

Experimental banking (reconcile_bank_transaction)

Opt-in via env flag

Removed β€” use reconcile_bank_movement (treasury v2)

get_daily_ledger dates

Unix timestamps (starttmp/endtmp)

ISO 8601 strings (start_date/end_date); legacy Unix args still accepted as a convenience

get_taxes

Paginated

Returns all taxes in one call (no pagination args)

update_product_stock

Optional warehouse

warehouse_id is now required

List tools field projections

Reduced default set of fields

Full v2 payload returned; use fields argument to filter

Contact attachments

Attachments are now fetched by filename instead of attachment ID. Use get_contact_attachment with the filename field returned by list_contact_attachments.

Usage Examples

Once configured, you can ask Claude to:

Documents

  • "List all my invoices from Holded"

  • "Create an invoice for client X with 2 items"

  • "Send invoice #123 to the client by email"

  • "Get the PDF of invoice #456"

  • "Mark invoice #789 as paid"

Contacts

  • "List all my clients in Holded"

  • "Create a new client named Acme Corp"

  • "Update the email for contact #123"

Products

  • "Show me all products"

  • "Create a new product called Widget with price 50 EUR"

  • "Update stock for product #123 adding 10 units in warehouse W1"

HR & Payroll

  • "List all employees"

  • "Clock in employee #456"

  • "Get the salary record for employee #789 for June 2025"

Reports

  • "Get all my taxes"

  • "List all treasury bank accounts"

  • "Show me the daily ledger for January 2025"

  • "Get the chart of accounts"

Document Types

The API supports these document types:

Type

Description

invoice

Sales invoices

salesreceipt

Sales receipts

creditnote

Credit notes (refunds)

receiptnote

Receipt notes

estimate

Estimates/Quotes

salesorder

Sales orders

waybill

Packing lists

proform

Proforma invoices

purchase

Purchases

purchaserefund

Purchase refunds (create only in v2)

purchaseorder

Purchase orders

API Reference

Base URL

https://api.holded.com/api/

The server routes each tool to the appropriate v2 sub-path (e.g. /invoicing/v2/, /team/v2/, /accounting/v2/).

Authentication

All requests use Bearer authentication with your v2 key:

Authorization: Bearer pat_your_v2_key_here

Pagination

List endpoints use cursor-based pagination via limit and cursor arguments (see Migrating from 1.x).

Development

# Install dependencies
npm install

# Build
npm run build

# Watch mode
npm run dev

Write Safety

Create/update/delete tools modify real data in Holded. The server applies per-tool rate limits (stricter for destructive operations) to prevent accidental bulk mutations. Destructive operations are capped at 10 requests/minute by default; update operations at 30 requests/minute.

Privacy Policy

Data Collection: This MCP server requires your Holded API key to function. The API key is read from your local environment variable (HOLDED_API_KEY) and is never stored by this server. All API requests and responses are passed through in real-time to facilitate communication between your AI assistant and the Holded API.

Data Usage & Sharing: Your API key and all data processed through this server are used exclusively to interact with the Holded API on your behalf. The server acts as a pass-through proxy - it does not store, log, or retain any data. Your Holded API key and data are transmitted only to Holded's official API endpoints (api.holded.com). No data is shared with any third parties beyond Holded.

Your Security: We recommend following security best practices: store your API key in environment variables (never commit it to version control), regularly update to the latest version, and review the permissions granted to this MCP server in your AI assistant. For more information, see our full Privacy Policy.

Support

For questions, issues, or feature requests:

About Nubiia

This MCP server is built and maintained by Nubiia.

Nubiia ayuda a empresas a automatizar procesos e integrar sus herramientas con IA: servidores MCP a medida, integraciones con Holded, Pipedrive y otros ERPs/CRMs, y agentes que conectan tus datos de negocio con asistentes como Claude. Este @nubiia/mcp-holded es un ejemplo open source de lo que hacemos.

πŸ‘‰ ΒΏQuieres una integraciΓ³n o automatizaciΓ³n con IA para tu negocio? nubiia.es Β· βœ‰οΈ hola@nubiia.es

License

MIT - See LICENSE file for details.

Author

Built by Nubiia β€” nubiia.es Β· hola@nubiia.es

Maintainer: Samuel Fraga β€” GitHub Β· LinkedIn

Available Tools

78 tools
attach_file_to_documentB

Attach a file to a document

ParametersJSON Schema
NameRequiredDescriptionDefault
docTypeYesType of document
filenameYesName of the file
documentIdYesDocument ID
fileBase64YesFile content as base64 encoded string

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, so the description must disclose behavioral traits. It does not state whether the attachment replaces existing files, adds to them, or requires specific permissions. Missing important side-effect details.

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 extremely concise (5 words) and front-loaded. While it could benefit from additional context, the brevity is appropriate for a simple action with fully described schema parameters.

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 4 required parameters, no output schema, and no annotations, the description lacks details on return values, error handling, file size limits, or confirmation of success. Important for an agent to use effectively.

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 description adds no meaning beyond what the schema already provides for each parameter. 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 action ('Attach') and the target ('a file to a document'), distinguishing it from sibling tools that create, delete, or retrieve documents without file attachment functionality.

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 provided on when to use this tool versus alternatives such as get_document_pdf (for retrieval) or create_document (for new documents). Contexts that disfavor use (e.g., document not found, file format issues) are not mentioned.

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

create_contactC

Create a new contact

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoNIF / CIF / VAT number or tax identification code for the contact. This is the correct Holded API field for tax IDs. Note: the legacy "vatnumber" field does not exist in Holded and is silently ignored.
nameYesContact name
noteNoNotes about the contact
typeNoContact type
emailNoContact email
phoneNoContact phone number
tradenameNoTrade name
billAddressNoBilling address
contactPersonsNoList of contact persons associated with this contact

TDQS

C2.8/5.0
Behavior1/5

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

With no annotations provided, the description must cover behavioral traits. It only states the action, omitting side effects, idempotency, error conditions, or behavior on duplicate contacts.

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 extremely concise (one sentence) and front-loaded, but may be too brief to convey necessary context.

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

Completeness1/5

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

For a tool with 9 parameters, nested objects, and no output schema, the minimal description is completely inadequate. It should at least note required fields and 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 description coverage is 100%, so baseline is 3. The description adds no 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.

Purpose5/5

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

The description 'Create a new contact' is a specific verb+resource pair that clearly distinguishes this tool from siblings like update_contact, delete_contact, and create_contact_group.

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 provides no guidance on when to use this tool versus alternatives (e.g., updating an existing contact) or any prerequisites.

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

create_contact_groupC

Create a new contact group

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesContact group name

TDQS

C2.1/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 only states the basic action without mentioning effects, idempotency, permissions, or error conditions.

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

Conciseness3/5

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

The description is very concise (one sentence), but it does not add value beyond the tool name, making it somewhat arbitrary. It is not misleading but lacks substance.

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 the simple tool with one parameter and no output schema, the description is insufficient. It does not explain what the tool returns or confirm creation behavior, leaving the agent uninformed.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter 'name', and the description adds no additional meaning beyond the schema's description. Baseline is 3 per guidelines.

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 description 'Create a new contact group' is essentially a tautology, restating the tool name without adding any specificity beyond the verb and resource.

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

Usage Guidelines2/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 alternatives like list_contact_groups or delete_contact_group. The description lacks any context for appropriate usage.

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

create_documentA

Create a new document (invoice, estimate, purchase, etc.). By default the document is approved (finalized) so it appears in the Holded UI; pass approveDoc:false to create a draft instead. Set the expense/income account at document level via expAccountId (it cascades to all lines); a per-line account is rejected because Holded ignores it. On SALES documents an auto-incrementing numbering series may OVERRIDE the requested invoiceNum β€” the tool re-reads the created document and returns a _warnings note if that happened. On purchases the supplier number in invoiceNum is preserved. retention (IRPF) is accepted on sales but rejected on purchases (Holded ignores it there).

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesDocument date as Unix timestamp
itemsYesArray of line items
notesNoNotes for the document
docTypeYesType of document to create
currencyNoCurrency code (e.g., EUR, USD)
contactIdYesContact ID for the document
retentionNoIRPF retention percentage. Accepted on SALES documents only; rejected on purchases because Holded silently ignores it there.
approveDocNoWhether to immediately approve (finalize) the document instead of saving it as a draft. Defaults to true so the document is visible in the Holded UI. When the Holded API receives no value it defaults to draft, and drafts do not appear in Sales > Invoices, the contact Sales tab or global search. Pass false only when you intentionally want a draft. Note: approved documents are permanently locked by Holded.
invoiceNumNoDocument reference number (e.g. invoice number from supplier)
expAccountIdNoExpense account ID for expense documents
salesChannelIdNoSales channel ID to associate with the document

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description bears full burden and excels. It discloses default approval, draft behavior, numbering override for sales, preservation for purchases, retention rules, expAccountId cascading, per-line account rejection, and permanent locking of approved documents.

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

Conciseness4/5

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

The description is a single dense paragraph of five sentences covering many points without wasted words. It could be slightly improved with structure (e.g., bullet points), but it remains efficient and readable.

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's complexity (11 parameters, multiple behaviors), the description covers all key aspects: approval, numbering, retention, account cascading, and warning mechanism. No gaps are evident for typical use.

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

Parameters5/5

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

Although schema coverage is 100%, the description adds significant value beyond schema descriptions by explaining the practical implications of approveDoc (default behavior, draft visibility), invoiceNum (override warning), retention (accepted/rejected), and expAccountId cascading.

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 'Create a new document (invoice, estimate, purchase, etc.)' with a specific verb and resource. It lists the docType enum values, covering all document types, and distinguishes itself from sibling tools like update_document and delete_document.

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 explicit guidance on when to use approveDoc:false for drafts, explains numbering behavior for sales vs purchases, and notes retention acceptance/rejection. While it doesn't directly compare to alternatives, the context is clear enough for most use cases.

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

create_expenses_accountC

Create a new expenses account

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoPGC account number (e.g. "62900000"). This is the value surfaced as `accountNum` by list_expenses_accounts β€” Holded accepts it under the `code` key on create/update.
nameYesExpenses account name

TDQS

C2.9/5.0
Behavior1/5

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

No annotations are present, and the description provides no behavioral details beyond the fact that it creates; it lacks transparency on error conditions, idempotency, or 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.

Conciseness4/5

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

The description is extremely concise (one sentence) with no extra fluff, but it may be too minimal for a tool with nuanced behaviors. However, for what it conveys, it is efficient.

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 description lacks contextual completeness; it does not mention what the tool returns (e.g., the created account object) or any error conditions, which is valuable for an AI agent to verify success.

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 fully describes the parameters (100% coverage), and the tool description does not add any extra semantic information, resulting in a baseline score 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 ('Create') and resource ('expenses account'), clearly distinguishing it from siblings like delete, update, get, and list operations.

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

Usage Guidelines2/5

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

The description is minimal and does not include any usage guidelines, such as when to create an expenses account vs. updating or listing them, or any required preconditions.

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

create_numbering_serieB

Create a new numbering serie

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSerie name
prefixNoSerie prefix
docTypeYesDocument type
nextNumberNoNext number in the serie

TDQS

B3.2/5.0
Behavior2/5

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

No annotations exist, so the description must convey behavioral traits. It only says 'create', omitting side effects (e.g., duplicate handling, default values for optional fields, or what happens if the name already 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?

Single concise sentence that front-loads the core action. No unnecessary words.

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

Completeness2/5

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

With 4 parameters (1 enum) and no output schema, the description is too minimal. It doesn't explain the purpose of numbering series or what the tool returns. The agent lacks context 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?

All 4 parameters have descriptions in the input schema (100% coverage). The description adds no extra semantic information 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?

Description clearly states the action ('create') and the resource ('numbering serie'), and it distinguishes from siblings like update, delete, and get.

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

Usage Guidelines2/5

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

No guidance on when to create a numbering serie, prerequisites, or relationship with other tools (e.g., document creation). The agent is left to infer usage context.

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

create_paymentC

Create a new payment

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoDays until due
nameYesPayment method name

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden. It only states it creates a payment, but does not disclose mutability, required permissions, reversibility, or any side effects beyond the action.

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

Conciseness3/5

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

The description is extremely concise at one sentence, but it is under-specified. It lacks any contextual details that would make it more informative while remaining concise.

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 description is too brief for a creation tool. It does not explain what a 'payment' entails, the result of creation, or any prerequisites. Given the simple schema and no output schema, more context is needed.

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 both parameters documented. The description does not add any extra meaning beyond the schema, but the schema itself is sufficient; 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 'Create a new payment' clearly states the action and resource. However, it does not differentiate from sibling tools like 'update_payment' or 'get_payment', which share the same action 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?

No guidance is provided on when to use this tool versus alternatives such as 'update_payment' or 'list_payments'. The description lacks context for appropriate triggering conditions.

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

create_productB

Create a new product

ParametersJSON Schema
NameRequiredDescriptionDefault
skuNoProduct SKU
taxNoTax percentage
kindNoProduct kind
nameYesProduct name
priceNoProduct price
stockNoInitial stock quantity
barcodeNoProduct barcode
costPriceNoCost price
descriptionNoProduct description

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 carries full burden. It states a creation action but discloses no behavioral details such as authentication requirements, side effects, idempotency, or whether existing SKU checks occur. The minimal description leaves significant behavioral uncertainty.

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 redundant words. It is front-loaded with the verb and resource, which suffices for a simple creation tool. Every word contributes to the purpose.

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 9 parameters, no output schema, and no annotations, the description lacks completeness. It does not explain what is returned (e.g., created product ID), error conditions, or parameter dependencies. A more complete description would add value for 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?

All 9 parameters have descriptions in the input schema (100% coverage), so the description does not need to add parameter details. However, it adds no extra context about parameter relationships, defaults, or validation rules beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description 'Create a new product' clearly states the action (create) and resource (product). It distinguishes from sibling tools like create_contact or create_document by specifying the resource type, and from update_product by indicating creation rather than modification.

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 provides no guidance on when to use this tool versus alternatives (e.g., create_contact, create_document). It does not mention prerequisites, typical use cases, or scenarios where creation is appropriate.

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

create_sales_channelC

Create a new sales channel

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSales channel name

TDQS

C2.7/5.0
Behavior1/5

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

No annotations are present, and the description does not disclose any behavioral traits such as side effects, authorization requirements, rate limits, or error conditions (e.g., duplicate name handling). The description is insufficient for the agent to understand the tool's full behavior.

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

Conciseness4/5

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

The description is extremely concise (one short phrase) and front-loaded. Every word is necessary, but the lack of detail may be considered underspecification rather than conciseness.

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 the tool's simplicity (one required parameter, no output schema) and the presence of full CRUD siblings, the description is minimal but still misses behavioral context. It is not complete for an agent to reliably invoke the tool without guessing.

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 a description for the single required parameter 'name' ('Sales channel name'), achieving 100% coverage. The tool description adds no additional meaning 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.

Purpose4/5

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

The description clearly states the action ('create') and the resource ('sales channel'), which distinguishes it from sibling tools like delete, update, get, and list. However, it does not elaborate on what a sales channel is or any nuances.

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 usage guidance is provided. There is no mention of when to use this tool, prerequisites, or alternatives (e.g., updating an existing channel). The purpose is implied but not explicitly contextualized.

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

create_serviceB

Create a new service

ParametersJSON Schema
NameRequiredDescriptionDefault
skuNoService SKU
taxNoTax percentage
nameYesService name
priceNoService price
descriptionNoService description

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It only states the action without any details about side effects, idempotency, or requirements (e.g., authorization, uniqueness constraints). For a mutation tool, 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.

Conciseness3/5

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

The description is very concise (one sentence) but lacks structure. While it is not verbose, it could be more informative without being wordy. There is room to add valuable context without sacrificing conciseness.

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 5 parameters, 1 required, no output schema, and no annotations, the description is minimal. It does not mention required fields, return behavior, or differentiate from similar tools like create_product. It is incomplete for effective tool selection.

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 each parameter. The description adds no additional meaning beyond the schema. 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 'Create a new service' clearly states the action (create) and the resource (service). It is specific and distinguishes from sibling tools like create_product or create_contact.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. No prerequisites, exclusions, or context provided. The agent has no basis to decide between create_service and other create tools.

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

create_treasuryB

Create a new treasury account

ParametersJSON Schema
NameRequiredDescriptionDefault
bicNoBIC/SWIFT code
ibanNoIBAN number
nameYesTreasury account name
balanceNoInitial balance

TDQS

B3.1/5.0
Behavior2/5

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

Without annotations, the description should disclose behavioral traits. It only states it creates an account, but omits details like whether the operation is reversible, what happens on creation, 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.

Conciseness4/5

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

The description is a single sentence with no wasted words. While it could benefit from more detail, it is efficient and front-loaded.

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 no output schema and the presence of sibling tools like list_treasuries and get_treasury, the description lacks information about return values or follow-up actions, making it incomplete.

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 descriptions for all four parameters. The tool description does not add extra meaning beyond the schema, 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?

The description 'Create a new treasury account' clearly states the action (create) and the resource (treasury account), distinguishing it from other create tools like create_contact or create_document.

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 provided on when to create a treasury account versus other entity types, nor any prerequisites or context for its use.

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

create_warehouseC

Create a new warehouse

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoCity
nameYesWarehouse name
addressNoWarehouse address
countryNoCountry
provinceNoProvince
postalCodeNoPostal code

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, description should disclose trade-offs, permissions, or side effects. Only states 'Create', missing details like creation behavior or return value.

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?

Single sentence is concise but lacks necessary detail. Appropriate length for a simple creation tool, but could better balance brevity and completeness.

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?

No output schema or stated return behavior. Minimal addition beyond schema; misses context like what the created warehouse object contains.

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 descriptions for all 6 parameters. Description adds no extra meaning, so 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?

Clearly states 'Create a new warehouse', specifying verb and resource. Sibling tools create different entities (contacts, products, etc.), so purpose is clear, but no explicit differentiation.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs. alternatives. No prerequisites or conditions mentioned.

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

delete_contactB

Delete a contact

ParametersJSON Schema
NameRequiredDescriptionDefault
contactIdYesContact ID to delete

TDQS

B3.1/5.0
Behavior2/5

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

Without annotations, the description must disclose behavioral traits. It only states 'Delete a contact' without confirming irreversibility, cascading deletions, or required permissions. Minimal 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 a single, concise sentence that front-loads the core action. No wasted 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 simple delete tool with one required parameter and no output schema, the description is minimally adequate but lacks context on whether deletion is permanent, confirmation steps, or related data impacts.

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 a single parameter 'contactId' described as 'Contact ID to delete'. The description adds no extra meaning, which is acceptable given full schema coverage, but no elaboration on ID format or source is provided.

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 'Delete a contact' clearly states the action (delete) and resource (contact), distinguishing it from sibling tools like update_contact and get_contact. It is not a tautology, though it could be more specific (e.g., permanent removal).

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives like update_contact or deactivate flags. The description does not mention prerequisites or side effects, leaving the agent to infer usage context.

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

delete_contact_groupC

Delete a contact group

ParametersJSON Schema
NameRequiredDescriptionDefault
groupIdYesContact group ID to delete

TDQS

C2.9/5.0
Behavior2/5

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

The description only states that the tool deletes a contact group, with no details about side effects, irreversibility, authorization requirements, or whether cascade deletions occur. Annotations are absent, so the description carries full burden and fails to provide meaningful behavioral insight.

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 extremely concise with no unnecessary words. While more detail could be valuable, the brevity does not harm clarity for a simple action.

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 tool's simplicity (one required parameter, no output schema, no annotations), the description is minimally adequate. It informs the agent of the core action and required input, but lacks any operational context that could aid 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 coverage is 100%, and the parameter 'groupId' is self-explanatory from the schema description. The tool description adds no additional meaning beyond what the schema already provides, so a baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the verb 'Delete' and the resource 'contact group', making the tool's purpose immediately understandable. It distinguishes from sibling tools by naming the specific resource, but lacks additional context to differentiate it from other delete 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?

No guidance is provided on when to use this tool versus alternatives (e.g., update_contact_group or other delete tools). There is no mention of prerequisites, consequences, or context for deletion.

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

delete_documentC

Delete a document

ParametersJSON Schema
NameRequiredDescriptionDefault
docTypeYesType of document
documentIdYesDocument ID to delete

TDQS

C2.2/5.0
Behavior2/5

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

The description only states the obvious destructive nature of the operation, without disclosing any side effects, permanence, or authorization requirements. With no annotations, more behavioral context is needed.

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?

While extremely short, the description fails to provide useful information beyond the tool name, making it insufficiently informative for its length.

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 the lack of annotations and output schema, the description does not adequately explain the implications of deletion (e.g., reversibility, effects on related data), leaving the agent underinformed.

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 schema already describes both parameters. The description adds no additional 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.

Purpose2/5

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

The description 'Delete a document' is a tautology that merely restates the tool name, with no additional specificity about the document types involved that could distinguish it from similar delete tools for other entities.

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 provided on when to use this tool versus alternatives, such as prerequisites, required permissions, or conditions for deletion.

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

delete_expenses_accountC

Delete an expenses account

ParametersJSON Schema
NameRequiredDescriptionDefault
accountIdYesExpenses account ID to delete

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description bears full responsibility for behavioral disclosure. It only states 'Delete an expenses account' without mentioning whether the action is irreversible, cascading, or requires special permissions. This is insufficient for a destructive tool.

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

Conciseness4/5

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

At four words, the description is very concise and front-loaded. However, it sacrifices context for brevity; a slightly longer description could improve completeness without harming conciseness.

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 the simplicity of the tool (one parameter, no output schema), the description is too minimal. It omits critical details about the deletion's impact, such as whether it is permanent or if linked records are affected, making it less complete for an 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?

The input schema has 100% coverage with a single parameter 'accountId' described adequately. The description adds no additional meaning beyond what the schema provides, meeting the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the verb 'Delete' and the resource 'expenses account', following a standard verb+resource pattern. It distinguishes from sibling tools like 'create_expenses_account' and 'update_expenses_account' by indicating the destructive action, but doesn't specify if it is permanent or soft.

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 provided on when to use this tool versus alternatives like 'update_expenses_account' for modifying an account. There are no prerequisites, warnings about dependencies (e.g., transactions associated with the account), or context for safe usage.

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

delete_numbering_serieB

Delete a numbering serie

ParametersJSON Schema
NameRequiredDescriptionDefault
docTypeYesDocument type
serieIdYesSerie ID to delete

TDQS

B3.1/5.0
Behavior2/5

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

The description lacks behavioral details. A delete operation typically implies irreversible removal, but this is not stated. No annotations are provided, so the description should cover safety aspects. It fails to do so.

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, clear sentence that efficiently communicates the tool's purpose. It could be slightly expanded with behavioral info, but conciseness is good.

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 operation, the description should include warnings about irreversibility or impact on related data. It lacks this context, making it incomplete despite the good schema coverage.

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, with docType and serieId fully described. The description adds no extra meaning beyond the schema, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description 'Delete a numbering serie' clearly states the action (delete) and the resource (numbering serie). It distinguishes itself from sibling tools like 'create_numbering_serie' and 'update_numbering_serie', which have different verbs.

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 provided on when to use this tool, prerequisites, or consequences. For example, it does not mention that deleting a numbering serie might affect existing documents or that it is irreversible.

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

delete_paymentC

Delete a payment

ParametersJSON Schema
NameRequiredDescriptionDefault
paymentIdYesPayment ID to delete

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavior. It only states 'Delete a payment,' implying a destructive action but omitting critical details such as whether the deletion is permanent, cascading effects, authorization needs, or constraints on payment status. The minimal information is not sufficient for safe invocation.

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 extremely concise at three words, which avoids verbosity. However, it lacks structure such as front-loading key constraints or implications. For a simple tool, the brevity is acceptable but could benefit from slightly more structure.

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 the tool's simplicity (one parameter, no output schema, no annotations), the description is minimally complete but fails to provide essential context like deletion behavior, irreversibility, and any required prior conditions. An agent would be under-informed to use this tool safely.

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 covers the single parameter with a description 'Payment ID to delete,' achieving 100% coverage. The tool description adds no additional semantic value beyond what the schema already provides, 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.

Purpose3/5

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

The description 'Delete a payment' is a clear verb+resource combination that distinguishes this tool from sibling delete tools for other entities (e.g., delete_contact, delete_product). However, it is essentially a tautology of the tool name and does not add specificity about what deletion entails (e.g., irreversible, soft delete, scope).

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 provided on when to use this tool versus alternatives like update_payment or other deletion tools. There is no mention of prerequisites, when not to use, or potential consequences, leaving the agent without decision-making support.

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

delete_productC

Delete a product

ParametersJSON Schema
NameRequiredDescriptionDefault
productIdYesProduct ID to delete

TDQS

C2.7/5.0
Behavior1/5

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

The description lacks behavioral details such as whether deletion is permanent, requires permissions, or has side effects. Since no annotations are provided, the description should carry this burden but fails to do so.

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 wasted words. It is appropriately sized for a simple tool.

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

Completeness1/5

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

Given the tool's simplicity, the description omits crucial context such as irreversibility, required permissions, or effects on related data. It is incomplete for effective agent usage.

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 the parameter 'productId' described as 'Product ID to delete'. The description adds no additional meaning 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 'Delete a product' clearly states the action and resource, aligned with the tool name. However, it does not add any distinguishing nuance beyond the name itself.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus other delete tools (e.g., delete_contact). There are no prerequisites or exclusions mentioned.

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

delete_sales_channelC

Delete a sales channel

ParametersJSON Schema
NameRequiredDescriptionDefault
channelIdYesSales channel ID to delete

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits. It only states 'delete', implying destruction, but lacks details on cascading effects, permissions, irreversibility, or other 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.

Conciseness4/5

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

Extremely concise, one sentence. No wasted words. However, for a destructive operation, slightly more detail would be beneficial without sacrificing conciseness.

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 tool's simplicity (single parameter, no output schema), the description is adequate but lacks context about consequences. Considering sibling tools, more guidance on when to delete vs other actions would improve completeness.

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

Parameters3/5

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

Only one parameter (channelId) with 100% schema description coverage. The tool description adds no additional meaning beyond what the schema already provides ('Sales channel ID to delete'). Baseline of 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?

Description 'Delete a sales channel' clearly states the action and resource, distinguishing it from siblings like create or update. However, it is minimal and lacks any further context about scope or effects.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like update_sales_channel or create_sales_channel. No context about prerequisites or side effects.

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

delete_serviceD

Delete a service

ParametersJSON Schema
NameRequiredDescriptionDefault
serviceIdYesService ID to delete

TDQS

D1.6/5.0
Behavior1/5

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

No annotations provided, and the description fails to disclose critical behavioral traits such as whether deletion is permanent, cascading, or requires specific permissions.

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?

Extremely short but at the cost of vague and under-informative content. Fails to communicate effectively for a deletion operation.

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

Completeness1/5

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

Insufficient for a delete tool with no output schema and sibling differentiation needed. Lacks details on consequences, required permissions, or return behavior.

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 a single parameter described as 'Service ID to delete'. The description adds no additional context beyond what is already in the schema, meeting the baseline but not enhancing it.

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

Purpose1/5

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

Description 'Delete a service' is a tautology that restates the tool name without adding specificity about what 'service' means or distinguishing it from other delete tools like delete_contact or delete_document.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, no prerequisites, and no mention of side effects or irreversible actions.

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

delete_warehouseC

Delete a warehouse

ParametersJSON Schema
NameRequiredDescriptionDefault
warehouseIdYesWarehouse ID to delete

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only says 'Delete', which implies destruction, but fails to mention whether deletion is irreversible, requires permissions, or affects related data.

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?

Extremely concise but under-informative. A single sentence without elaboration on usage or behavior is under-specification, not effective conciseness.

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 the destructive nature of the tool, the description lacks essential context like irreversibility, confirmation steps, or permission requirements. No output schema or annotations to supplement.

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 a clear parameter description. The tool description adds no additional meaning beyond the schema, earning a baseline score of 3.

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 verb 'Delete' and resource 'warehouse' clearly state the action and target, distinguishing it from non-delete siblings like 'create_warehouse' and 'get_warehouse', but does not differentiate from other delete tools like 'delete_contact'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives. No indications of prerequisites, consequences, or what makes this tool appropriate over other delete tools.

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

get_chart_of_accountsA

Get the full chart of accounts for the ACTIVE fiscal year (Accounting API). Returns every account with num (PGC number, e.g. 40000000), name, group, debit, credit, and balance. Unlike list_expenses_accounts (group-6 only), this includes all groups (assets, liabilities, income, expenses). Read-only.

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 exist, so the description fully handles transparency. It explicit states 'Read-only' and notes it returns data for the 'ACTIVE fiscal year' with specific fields. No additional behavioral traits (e.g., caching, permissions) mentioned, but for a simple zero-parameter GET, this is adequate.

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

Conciseness5/5

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

Two sentences, zero waste. First sentence states main purpose and scope, second lists returned fields and distinguishes from sibling. Perfectly front-loaded and concise.

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 parameters, no output schema, and no annotations, the description is sufficiently complete. It explains output fields, scope (active fiscal year, all groups), and safety (read-only). Minor gaps: no error handling or performance notes, but acceptable for a simple retrieval 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?

No parameters exist (input schema is empty with 100% coverage). The description adds value by explaining what the tool returns (fields and scope) which goes beyond the empty schema, compensating for lack of 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?

Description clearly states the tool gets the full chart of accounts for the active fiscal year, lists the returned fields (num, name, group, debit, credit, balance), and explicitly distinguishes itself from list_expenses_accounts by noting it includes all groups. Very specific verb+resource with 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 Guidelines3/5

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

Indicates use when needing the full chart (all groups) vs list_expenses_accounts (group-6 only), but provides no explicit when-to-use or when-not-to-use guidelines, prerequisites, or context beyond the sibling comparison. Implied usage but no explicit direction.

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

get_contactC

Get a specific contact by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
contactIdYesContact ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description should disclose behavior beyond the basic action. It doesn't mention what happens if contact not found, side effects (read-only), or response structure.

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

Conciseness4/5

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

Extremely concise one-sentence description with no extraneous words. However, it sacrifices completeness for brevity.

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 no output schema and simple parameter, description should at least hint at return content (e.g., contact details). It does not, leaving the agent uninformed.

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 100% but description adds no extra meaning beyond 'by ID'. No format or usage context 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 verb (Get), resource (contact), and method (by ID). It distinguishes itself from siblings like list_contacts and other get 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?

No guidance on when to use this tool vs alternatives. Doesn't mention that it requires an existing contact ID or that it's for single contact retrieval versus listing.

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

get_contact_attachmentB

Get a specific attachment from a contact

ParametersJSON Schema
NameRequiredDescriptionDefault
contactIdYesContact ID
attachmentIdYesAttachment ID

TDQS

B3.3/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 burden. It only states 'Get a specific attachment', implying a read operation, but it does not disclose any potential side effects, authentication requirements, or return format. The description adds minimal behavioral 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 extremely concise at 6 words with no wasted text. It is front-loaded with the key action and resource.

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 simple nature of the tool (get by ID), the description is minimally adequate. However, without an output schema, it would benefit from mentioning the return type or indicating that it returns the attachment data. It is complete in the sense of stating the purpose but lacks detail.

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 basic descriptions ('Contact ID', 'Attachment ID'). The tool description does not add any additional meaning beyond these schema descriptions, so the baseline score of 3 applies.

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

Purpose5/5

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

The description 'Get a specific attachment from a contact' clearly states the verb 'Get' and resource 'attachment from a contact'. It distinguishes from sibling tools like list_contact_attachments (which lists all attachments) and get_contact (which gets the contact itself).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like list_contact_attachments or other get tools. There is no mention of prerequisites, context, or 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.

get_contact_groupA

Get a specific contact group by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
groupIdYesContact group ID

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, and the description only states the basic action. It does not disclose what happens if the group ID is not found (e.g., error vs null), any authentication requirements, or whether this is a read-only safe 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 a single, concise sentence with no unnecessary words or repetition. It is front-loaded with the verb and resource.

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 getter with one parameter and no output schema, the description is adequate but incomplete. It does not indicate what the return value is (e.g., the full contact group object) or any error handling behavior, leaving the agent to infer.

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

Parameters3/5

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

The input schema has 100% description coverage, with the parameter 'groupId' described as 'Contact group ID'. The description adds no additional meaning beyond what the schema provides, so 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 clearly states the action (Get) and the resource (a specific contact group by ID), distinguishing it from sibling tools like list_contact_groups (which lists all) or create_contact_group (which creates).

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 on when to use this tool versus alternatives. The description implies usage for retrieving a single group by ID, but doesn't mention when not to use it or provide alternative tool names.

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

get_daily_ledgerA

Get the daily ledger (journal / asientos) between two Unix timestamps (Accounting API). Returns one row per ledger line with entryNumber, line, timestamp, type (collect/payment/purchase/...), description, account (PGC num), debit, and credit. This is the authoritative source for balance-sheet and tax-return figures. Range must not exceed 1 year. Set groupByEntry to nest lines into full double-entry entries with per-entry debit/credit totals. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
endtmpYesRange end as a Unix timestamp in seconds (inclusive)
starttmpYesRange start as a Unix timestamp in seconds (inclusive)
groupByEntryNoGroup lines by entryNumber into full journal entries (each with totalDebit/totalCredit). Default: false (flat lines)

TDQS

A4.6/5.0
Behavior4/5

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

The description states 'Read-only' at the end, clearly indicating non-destructive behavior. It also describes the output structure (one row per line with specific fields) and the effect of the groupByEntry parameter. However, it lacks information about pagination, rate limits, or authentication requirements, which would enhance 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 concise (6 sentences) and front-loaded, starting with the main purpose, then listing returned fields, followed by usage constraints and option. Every sentence contributes meaning without redundancy.

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

Completeness5/5

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

Given the tool has 3 parameters, no output schema, and no annotations, the description sufficiently covers purpose, input constraints, output structure, and usage options. It provides enough information 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.

Parameters5/5

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

The input schema covers all parameters with descriptions (100% coverage), providing baseline. The description adds significant value by explaining that groupByEntry groups lines into full entries with debit/credit totals, that the range must not exceed 1 year, and it lists the returned fields (entryNumber, line, timestamp, type, description, account, debit, credit) which are not in 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 explicitly states the tool retrieves the daily ledger (journal/asientos) between two Unix timestamps, specifies it's from the Accounting API, and lists the returned fields. It distinguishes itself as the authoritative source for balance-sheet and tax-return figures, differentiating it from sibling tools that deal with individual entities.

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 usage context, including a maximum range of 1 year and an optional groupByEntry parameter to nest lines into full double-entry entries. It does not explicitly state when not to use the tool or mention alternatives, but the context is sufficient for an agent to understand its scope.

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

get_documentB

Get a specific document by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
docTypeYesType of document
documentIdYesDocument ID

TDQS

B3.1/5.0
Behavior2/5

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

Annotations are absent, so description must fully disclose behavior. It only says 'Get a specific document by ID' without stating it is read-only, what happens on failure (e.g., 404), or authentication requirements. Minimal behavioral context.

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

Conciseness4/5

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

Single short sentence with no superfluous words. Efficient, but could include more information without becoming verbose.

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?

Tool has two required parameters and no output schema. Description lacks details about expected output format, error handling, or any limitations. Incomplete for an agent to fully understand the tool's behavior.

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 baseline is 3. Description adds no extra meaning beyond what is in the schema; does not explain the enum values of docType or the format of documentId.

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 tool retrieves a specific document by ID, using action verb 'Get' and specifying resource 'document'. It differentiates from sibling tools like list_documents (list all) and get_document_pdf (get PDF).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as get_contact or get_product. Does not mention any prerequisites or context for invocation.

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

get_document_paymentsA

Get the payments registered against a specific document, read directly from the document's paymentsDetail. Unlike list_payments β€” which is filtered to the ACTIVE fiscal year β€” this surfaces payments from ANY year, so use it for cross-year payment audits (e.g. an invoice dated last year that was paid this year). Returns { documentId, paymentsDetail }. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
docTypeYesType of document
documentIdYesDocument ID

TDQS

A4.5/5.0
Behavior4/5

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

Declares read-only nature and describes the return format `{ documentId, paymentsDetail }`. With no annotations, this provides necessary behavioral context, though could mention auth or rate limits (not critical for a read).

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?

Efficient three-sentence structure: main purpose, contrasting sibling info, and return type. No wasted words.

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

Completeness5/5

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

Covers purpose, usage guidance, return shape, and safety (read-only). Adequate for a simple read tool without 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?

Schema coverage is 100% with descriptions for both parameters. The description adds no additional details beyond what the schema already provides, meeting the baseline expectation.

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 verb 'Get' and resource 'payments registered against a specific document', and immediately distinguishes itself from sibling `list_payments` by highlighting the cross-year scope.

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 advises use for 'cross-year payment audits' and contrasts with `list_payments` which is filtered to active fiscal year, providing both when-to-use and an alternative.

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

get_document_pdfC

Get the PDF of a document

ParametersJSON Schema
NameRequiredDescriptionDefault
docTypeYesType of document
documentIdYesDocument ID

TDQS

C2.6/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 full burden. It only states 'Get the PDF' without disclosing whether it returns binary data, a URL, or requires special permissions. This lack of behavioral insight is insufficient for an agent to understand side effects or prerequisites.

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

Conciseness4/5

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

The description is extremely concise with one sentence. It is front-loaded and gets to the point, but could benefit from additional context without becoming verbose. Slight deduction for being overly minimal.

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 no output schema and no annotations, the description fails to mention the return format (e.g., binary PDF, base64 string). For a simple tool, this missing information makes it incomplete for an AI agent to process the output 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% (both parameters have descriptions). The description adds no extra meaning beyond the schema, such as clarifying docType enum values or how to obtain documentId. Baseline of 3 is appropriate.

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

Purpose3/5

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

The description 'Get the PDF of a document' clearly states the action and resource but does not distinguish from sibling tools like get_document or send_document. It lacks specificity about what 'get' means (download, link, etc.) and how it differs from other document-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 Guidelines2/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 alternatives. For example, it does not mention that get_document is for metadata or that send_document is for emailing the PDF. Without such context, an AI agent may misuse it.

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

get_expenses_accountA

Get a single account by its Holded id. Despite the "expenses" name, this endpoint serves ANY account (including income/group-7 accounts that list_expenses_accounts omits) when you already know its id.

ParametersJSON Schema
NameRequiredDescriptionDefault
accountIdYesAccount Holded id (the `id` field, not the PGC accountNum)

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 full burden. It discloses that the tool is a read operation ('Get') and covers all account types. However, it does not mention response format, error cases, or authorization needs, which are minor gaps for a simple get endpoint.

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, front-loaded with the main purpose, and zero wasted words. Every sentence adds essential 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 low complexity (one required param, no output schema), the description is adequate. It clarifies scope and intended use compared to siblings. Could optionally mention return value shape, but not necessary for a straightforward get 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, already explaining accountId as the Holded id. The tool description only repeats 'its Holded id' without adding new meaning, so it adds no value beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool gets a single account by its Holded id, and explicitly clarifies that despite the 'expenses' name, it serves any account, including those omitted by list_expenses_accounts. This distinguishes it from sibling tools effectively.

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 that the tool should be used when you already know the account id and need any account, contrasting with list_expenses_accounts which omits income/group-7 accounts. It implicitly suggests when not to use alternatives, though lacks explicit exclusions.

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

get_numbering_seriesA

Get numbering series for a specific document type with pagination support. Supports field filtering to reduce response size.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (starting from 1, default: 1)
fieldsNoSelect specific fields to return (e.g., ["id", "name", "prefix", "nextNumber"]). Reduces response size by 70-90%. If not provided, returns default fields: id, name, prefix, nextNumber
docTypeYesDocument type
summaryNoReturn only total count and page count without items (default: false)
pageSizeNoNumber of items per page (default: 50, max: 500)

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 burden. It mentions pagination and field filtering, which adds some transparency about performance. However, it does not disclose side effects, error handling, or response format, leaving gaps in behavioral understanding.

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 consists of two concise sentences that front-load the main purpose and then add a key feature (field filtering). No wasted words, and it is easy to scan.

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

Completeness4/5

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

Given the simplicity of the tool and the complete schema descriptions, the description is mostly adequate. It covers the core functionality but could benefit from a brief note on the response structure, especially since there is no 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?

Schema description coverage is 100%, so all parameters are documented in the schema. The description reinforces the schema by mentioning 'pagination support' and 'field filtering', but adds no new semantic meaning beyond what is already in the parameter 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 clearly states the verb 'Get' and the resource 'numbering series for a specific document type'. It also mentions pagination support and field filtering, which distinguishes it from sibling tools like create_numbering_serie and update_numbering_serie. The purpose is specific and unambiguous.

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

Usage Guidelines3/5

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

The description implies that this tool is for retrieving numbering series configurations, but it does not explicitly state when to use it over alternatives (e.g., other get tools like get_document). There is no guidance on when not to use it or prerequisites.

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

get_paymentB

Get a specific payment by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
paymentIdYesPayment ID

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It only states it's a read operation (implied by 'get') but omits authorization requirements, rate limits, response format, or potential 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.

Conciseness4/5

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

Extremely concise single sentence with no fluff. However, it could be slightly more informative without losing conciseness.

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 simple retrieval tool with one parameter and no output schema, the description should at least hint at the return value or error conditions. It does not, making it incomplete.

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 one parameter described as 'Payment ID'. The description adds 'by ID' but does not enrich beyond what the schema provides. 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 clearly states the verb 'get', the resource 'payment', and the scope 'specific by ID'. It distinguishes from siblings like list_payments that fetch multiple payments.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as list_payments for multiple payments, or create/update/delete for mutations. The agent is left 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.

get_productA

Get a specific product by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
productIdYesProduct ID

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 full burden. It states a read operation with no side effects, but lacks details on required permissions, return structure, or limitations. Minimal but not misleading.

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 short sentence, front-loaded, no wasted words. 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?

Given simplicity (1 param, no output schema), the description is adequate but could be enhanced by hinting at return data (e.g., full product details). It does not exploit the opportunity to add value beyond the bare minimum.

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 one parameter 'productId' described as 'Product ID'. The description adds no additional meaning beyond the schema, 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?

The description 'Get a specific product by ID' clearly states the action (get), resource (product), and method (by ID). It is specific and distinguishes from sibling tools like 'list_products'.

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

Usage Guidelines2/5

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

No guidance on when to use or alternatives. The description implies usage when needing a single product, but does not provide explicit context or mention 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.

get_product_main_imageB

Get the main image of a product

ParametersJSON Schema
NameRequiredDescriptionDefault
productIdYesProduct ID

TDQS

B3.1/5.0
Behavior2/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 only states 'get', implying a read operation, but does not describe response format (e.g., URL, binary), error handling, or authentication needs.

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

Conciseness5/5

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

Single sentence, no unnecessary words. Concisely states the tool's purpose.

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 tool with one parameter and no output schema, the description is minimal but adequate. Lacks info on response type or edge cases, which would be helpful.

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 a single parameter productId described as 'Product ID'. The description adds no additional meaning beyond the schema, meeting the baseline for high coverage.

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

Purpose4/5

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

The description 'Get the main image of a product' clearly identifies the action and resource. It differentiates from siblings like 'get_product_secondary_image' via the name, but does not explicitly state the distinction.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., list_product_images, get_product_secondary_image). The description does not provide context for appropriate usage.

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

get_product_secondary_imageC

Get a secondary image of a product

ParametersJSON Schema
NameRequiredDescriptionDefault
imageIdYesImage ID
productIdYesProduct ID

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only says 'Get a secondary image', but does not mention required permissions, return format (binary? URL?), or whether it is read-only.

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

Conciseness3/5

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

The description is a single short sentence with no wasted words, but it is too brief and lacks structural elements like usage hints or output details. It is minimally concise but not optimally informative.

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 the lack of output schema and annotations, the description is incomplete. It does not explain what is returned (e.g., image data vs URL) or clarify the relationship between this tool and 'get_product_main_image'.

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 both parameters described as 'Product ID' and 'Image ID'. The description adds no additional semantic value beyond the schema, earning the baseline score of 3.

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?

Description clearly states 'Get a secondary image of a product', using a specific verb and resource. However, it lacks differentiation from sibling 'get_product_main_image' and does not clarify what 'secondary' means in this context.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives like 'get_product_main_image' or 'list_product_images'. The description provides no usage context or exclusion criteria.

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

get_project_timeA

Get a single time-tracking entry by project ID and time-tracking ID (Projects API). Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesThe Holded project ID
timeTrackingIdYesThe time-tracking entry ID (the entry timeId)

TDQS

A3.7/5.0
Behavior3/5

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

The description includes 'Read-only' which is a key behavioral trait. However, given no annotations are provided, it lacks information on permissions, error handling, or response details. It provides minimal behavioral context beyond safety.

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 conveys the core purpose and a safety note. It is front-loaded and concise with no wasted 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?

Given the tool has only two required parameters and no output schema, the description covers the basic purpose and read-only nature. However, it does not explain what the response contains or handle missing entries. It is minimally adequate.

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 both parameters described. The description adds no additional meaning beyond the schema, repeating that it gets by project ID and time-tracking ID. 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 clearly states the tool retrieves a single time-tracking entry by its IDs, specifying it is from the Projects API. It distinguishes from sibling tools like list_project_times which list multiple entries.

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 it (to get a single entry), but does not explicitly state when not to use it or mention alternatives like list_project_times or list_project_times_by_project.

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

get_remittanceB

Get a specific remittance by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
remittanceIdYesRemittance ID

TDQS

B3.2/5.0
Behavior2/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 only states the basic action, omitting details about error responses, null handling, or return format.

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?

Extremely concise (one sentence, six words). While efficient, it sacrifices useful context that could be included without bloating.

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 get-by-ID tool with no output schema, the description covers the core functionality but lacks edge-case guidance or behavioral expectations.

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 a description for 'remittanceId'. The tool description adds no further meaning beyond 'by ID', 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?

The description clearly states the action ('Get'), the resource ('specific remittance'), and the method ('by ID'). It effectively distinguishes from sibling tools like list_remittances.

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

Usage Guidelines2/5

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

No guidance on when to use this tool or when alternatives are better. The description does not mention prerequisites like needing the remittance ID from a list operation.

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

get_sales_channelA

Get a specific sales channel by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
channelIdYesSales channel ID

TDQS

A3.5/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 full burden. It only states 'Get' (read operation), but lacks details on response structure, error handling, or permissions, which are relevant for a 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?

The description is a single, well-structured sentence with no wasted words. It is front-loaded with the action and resource.

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 tool's simplicity (1 parameter, no nested objects, no output schema), the description is adequate but minimal. It provides the core purpose but lacks additional context like return type or error conditions.

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 channelId described as 'Sales channel ID'. The description adds no additional meaning beyond the schema, meeting 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?

The description 'Get a specific sales channel by ID' uses a specific verb ('Get') and identifies the resource ('sales channel') and qualifier ('specific...by ID'). It clearly distinguishes from sibling tools like list_sales_channels.

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

Usage Guidelines3/5

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

Usage is implied (use when you need one channel by ID), but the description does not explicitly state when to use this versus alternatives like list_sales_channels, nor does it provide conditions or exclusions.

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

get_serviceB

Get a specific service by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
serviceIdYesService ID

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, and the description lacks any behavioral traits such as read-only nature, authentication requirements, or side effects, leaving the agent uninformed about operational context.

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

Conciseness4/5

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

The description is a single concise sentence, front-loading the purpose without unnecessary words. However, it may be too brief to fully inform the agent.

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 get-by-ID tool with no output schema, the description is minimally adequate but does not explain what data is returned, which could be useful for 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?

The description adds no additional meaning beyond the input schema, which already describes 'serviceId' as 'Service ID'. 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?

The description clearly states the action (Get) and resource (service) with an identifier (by ID), making it distinct from sibling tools like list_services and other get_* 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 usage for retrieving a single service by ID but provides no explicit guidance on when to use this tool versus alternatives like list_services for multiple services.

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

get_shipped_unitsC

Get shipped units by item for a document

ParametersJSON Schema
NameRequiredDescriptionDefault
docTypeYesType of document
documentIdYesDocument ID

TDQS

C2.9/5.0
Behavior2/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 does not disclose read-only nature, permissions, or response format, which is insufficient for a retrieval tool.

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

Conciseness4/5

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

Single sentence, no wasted words. Could include more detail without harming conciseness, but it is front-loaded and efficient.

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 the simple parameters and no output schema, the description lacks context about return values, behavior, or how it relates to other document tools. Incomplete for optimal agent decision-making.

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 descriptions for docType and documentId. The description adds no extra meaning beyond the schema, so baseline of 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 states 'Get shipped units by item for a document' with a specific verb and resource. It is unambiguous, though it doesn't distinguish from similar tools like get_document or ship_items_by_line.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like get_document that might also return shipped units. No exclusions or context provided.

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

get_taxesA

Get all available taxes with pagination support. Supports field filtering to reduce response size. Each tax has: key (the stable identifier, e.g. "s_iva_21"/"p_iva_21" β€” this is the value used in a document line's taxes[]), id (mirrors key), name, amount (the percentage as a string, e.g. "21"), scope ("sales" or "purchase"), group (e.g. "iva"), and type.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (starting from 1, default: 1)
fieldsNoSelect specific fields to return (e.g., ["key", "name", "amount", "scope"]). Reduces response size. If not provided, returns default fields: id, key, name, amount, scope, group, type. NOTE: the tax rate field is `amount` (not `percentage`) and the identifier is `key`.
summaryNoReturn only total count and page count without items (default: false)
pageSizeNoNumber of items per page (default: 50, max: 500)

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It describes the fields returned and pagination features but does not explicitly state that the operation is read-only, safe, or idempotent. No contradictions, but could be more explicit about non-destructive nature.

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?

Single paragraph, concise, well-structured. First sentence states primary purpose, then lists fields and parameter details. No redundant 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?

Covers pagination, field filtering, and all return fields. Lacks explicit mention of response structure (e.g., an array of objects with pagination metadata) but since no output schema, this is acceptable. Minor gap for a listing 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 covers 100% of parameters. Description adds valuable context beyond schema: clarifies field names ('amount' vs 'percentage'), highlights that 'key' is the stable identifier for document lines, and explains the effect of 'summary' parameter. This enhances 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?

Description clearly states the verb 'Get', resource 'taxes', and key features (pagination, field filtering). It distinguishes from sibling tools by specifying the exact resource and capabilities.

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 on when to use this tool vs alternatives. However, the purpose is straightforward, and the sibling list makes it clear that this is the tool for retrieving tax definitions. Lacks when-not or alternative recommendations.

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

get_treasuryA

Get a specific treasury account by ID. WARNING: the balance field is a STATIC opening figure set on the account, not a live balance computed from transactions β€” do NOT use it for reconciliation or as the current cash position.

ParametersJSON Schema
NameRequiredDescriptionDefault
treasuryIdYesTreasury account ID

TDQS

A4/5.0
Behavior4/5

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

Warns that the 'balance' field is a static opening figure, not a live balance, which is critical behavioral information. With no annotations, this disclosure adds significant value 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?

Two succinct sentences: the first states the purpose, the second provides a crucial warning. No filler or redundant 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?

Adequate for a simple get-by-ID tool with no output schema. The warning about balance adds important context, though it could mention that the full account object is returned.

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

Parameters3/5

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

Schema covers the single parameter fully (100% coverage). Description does not add extra meaning to the parameter itself, only to a response field, 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 'Get a specific treasury account by ID', specifying verb, resource, and method. Distinguishes from sibling tools like list_treasuries and create_treasury.

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?

Implies usage when needing a specific account by ID, but provides no explicit guidance on when not to use it or alternatives.

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

get_warehouseB

Get a specific warehouse by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
warehouseIdYesWarehouse ID

TDQS

B3.2/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 full burden for behavioral disclosure. The description only states 'Get a specific warehouse by ID' without mentioning read-only behavior, authentication requirements, error handling (e.g., what happens if warehouse doesn't exist), or response format.

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 extremely concise (5 words) and front-loaded with key information. Every word is necessary. For a simple get-by-ID operation, this length is appropriate.

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 the lack of an output schema, the description should explain what is returned (e.g., warehouse object) or possible edge cases (e.g., null if not found). It does not, leaving the agent with incomplete understanding of the tool's behavior.

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% (1 parameter warehouseId described as 'Warehouse ID'). The description adds no extra meaning beyond the schema. Baseline 3 is appropriate as the description does not improve 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 'Get a specific warehouse by ID' clearly states the verb (Get), resource (warehouse), and the method (by ID). It distinguishes the tool from siblings like list_warehouses (which lists all) and other get_* tools by specifying the unique identifier.

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 usage guidelines are provided. The description does not mention when to use this tool versus alternatives (e.g., list_warehouses for multiple warehouses) or when not to use it. The agent must infer usage from the tool name and purpose alone.

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

list_contact_attachmentsA

Get list of attachments for a contact

ParametersJSON Schema
NameRequiredDescriptionDefault
contactIdYesContact ID

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states 'Get list', indicating a read operation. It does not disclose any additional behavioral traits such as data freshness, pagination, or 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?

Single sentence with no unnecessary words, perfectly concise and front-loaded with the action and resource.

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

Completeness4/5

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

For a simple list tool with one required parameter and no output schema, the description is mostly adequate. However, it lacks any mention of the return structure or pagination, which would be 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?

Schema coverage is 100% with a single parameter 'contactId' described as 'Contact ID'. The description does not add any extra meaning beyond what the schema provides, resulting in a baseline score 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 'Get list of attachments for a contact' clearly identifies the action (list) and resource (attachments for a contact), distinguishing it from the sibling 'get_contact_attachment' which retrieves a single attachment.

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 listing attachments, but provides no explicit guidance on when not to use it or comparisons with alternatives like 'get_contact_attachment' for single attachment retrieval.

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

list_contact_groupsA

List all contact groups with pagination support. Supports field filtering to reduce response size.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (starting from 1, default: 1)
fieldsNoSelect specific fields to return (e.g., ["id", "name"]). Reduces response size by 70-90%. If not provided, returns default fields: id, name
summaryNoReturn only total count and page count without items (default: false)
pageSizeNoNumber of items per page (default: 50, max: 500)

TDQS

A3.7/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It mentions pagination and field filtering but lacks details on ordering, response limits, or potential errors. Basic behavioral info is present but not 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?

Two concise sentences covering purpose and a key feature. No unnecessary words, front-loaded with the main action.

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

Completeness3/5

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

No output schema exists, and the description does not explain the response structure or pagination metadata. While the input schema is thorough, the lack of output documentation leaves partial gaps for a list 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 covers 100% of parameters with descriptions. The description reinforces the fields parameter but adds little beyond what the schema already provides. 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 clearly states the action (list) and resource (contact groups), and mentions specific features (pagination, field filtering) that differentiate it from sibling list tools like list_contacts.

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 (need to list contact groups with pagination/filtering) but does not explicitly state when not to use or mention alternatives like get_contact_group for single items.

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

list_contactsA

List all contacts with optional filters for phone, mobile, or custom ID. Supports field filtering to reduce response size.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination (optional)
limitNoMaximum number of items to return (default: 50, max: 500)
phoneNoFilter by exact phone number match
fieldsNoSelect specific fields to return (e.g., ["id", "name", "email"]). Reduces response size by 70-90%. If not provided, returns default fields: id, customId, name, email
mobileNoFilter by exact mobile number match
summaryNoReturn only count and pagination metadata without items (default: false)
customIdNoFilter by custom ID(s)

TDQS

A3.9/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 full burden. It mentions filtering capabilities and field size reduction but omits behavioral details like pagination behavior, rate limits, or error handling. It is adequate but not rich.

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

Conciseness5/5

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

Two concise sentences that front-load the purpose. No wasted words; every sentence adds value. Perfect structure for a list tool.

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 7 parameters, no output schema, and no annotations, the description is too brief. It does not mention pagination parameters (page, limit) or the summary option, which are important for usage. The schema covers these, but the description should provide a more complete overview.

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 baseline is 3. The description adds value by stating that field filtering reduces response size by 70-90% and listing filterable fields (phone, mobile, custom ID), which is not in the 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 clearly states the action (list), resource (contacts), and key features (filters for phone, mobile, custom ID; field filtering). It distinguishes from sibling tools like get_contact (single) and list_contact_groups (groups).

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 for listing multiple contacts with filters but does not explicitly state when to use this tool over alternatives such as get_contact for a single contact or other list tools. No exclusions or contextual hints are provided.

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

list_documentsA

List all documents of a specific type with optional filters for date range, contact, payment status, approval, and sorting. Supports field filtering to reduce response size. NOTE: a document carries three INDEPENDENT and sometimes-conflicting flags β€” (1) the stored Paid/Pending badge status (set when the document is imported, NOT recomputed), (2) the real outstanding amount paymentsPending (the authoritative math), and (3) approval (filter with approved). A document can be badge-Paid, math-unpaid, and not-approved all at once, so check the flag you actually mean.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination (optional)
paidNoFilter by payment status: 0=not paid, 1=paid, 2=partially paid
sortNoSort order by creation date
limitNoMaximum number of items to return (default: 50, max: 500)
billedNoFilter by billed status: 0=not billed, 1=billed
endtmpNoEnding timestamp (Unix timestamp) for filtering documents by date
fieldsNoSelect specific fields to return (e.g., ["id", "contactName", "total"]). Reduces response size by 70-90%. If not provided, returns default fields: id, contact, contactName, date, tax, total, status, paymentsPending
docTypeYesType of document to list
summaryNoReturn only count and pagination metadata without items (default: false)
approvedNoFilter by approval state: 0=not approved, 1=approved. Maps to Holded `filter=approved-<n>`. Independent of the Paid/Pending badge and of paymentsPending.
starttmpNoStarting timestamp (Unix timestamp) for filtering documents by date
contactidNoFilter documents by contact ID

TDQS

A4.5/5.0
Behavior5/5

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

The description excels by including a detailed NOTE about the three independent payment status flags (badge, paymentsPending, approval), clarifying potentially confusing behavior. This goes beyond what annotations (none provided) would require.

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 mostly concise with a clear first paragraph and a second paragraph containing essential caveats. The note is somewhat lengthy but justified by the complexity of the payment flags.

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 12 parameters and no output schema, the description covers key filtering capabilities and the important flag nuance. It could mention pagination defaults or the summary parameter, but the schema already handles those.

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?

While the input schema covers 100% of parameters with descriptions, the description adds critical context for the 'paid' parameter, explaining it filters on the badge status, not the real outstanding amount. This adds value 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 clearly states the tool lists documents by type with optional filters, using specific verbs and resources. It distinguishes from sibling tools like get_document, create_document, etc., by focusing on listing multiple documents with filtering.

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 on when to use the tool (listing documents with filters) and includes practical tips like field filtering to reduce response size. However, it does not explicitly mention when not to use it or suggest alternatives like get_document for single documents.

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

list_expenses_accountsA

List expenses accounts with pagination support. Supports field filtering to reduce response size. Each account has id (Holded internal id), name, and accountNum (the PGC account number, e.g. 62900000). NOTE: this endpoint only returns expense/purchase accounts (PGC group 6). Income accounts (group 7, e.g. 700/705/759) are NOT listed here β€” fetch the full chart via get_chart_of_accounts, or read a known account by id via get_expenses_account.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (starting from 1, default: 1)
fieldsNoSelect specific fields to return (e.g., ["id", "name", "accountNum"]). Reduces response size. If not provided, returns default fields: id, name, accountNum. NOTE: the PGC number field is `accountNum` (not `code`).
summaryNoReturn only total count and page count without items (default: false)
pageSizeNoNumber of items per page (default: 50, max: 500)

TDQS

A4.8/5.0
Behavior4/5

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

Without annotations, the description carries the full burden. It discloses pagination, field filtering, summary option, and field naming details. However, it does not explicitly state that the tool is read-only or describe any side effects, which would be beneficial for a list endpoint.

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 and front-loaded with the main purpose. It uses a single paragraph with clear notes, no redundancy, and every sentence provides useful information.

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

Completeness5/5

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

Given the tool has 4 parameters and no output schema, the description provides complete context: pagination, field filtering, summary, field details, and account scope. An agent can correctly invoke the tool without ambiguity.

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%, so baseline is 3. The description adds significant value by explaining default values, constraints (max pageSize 500), and clarifying that the field name is accountNum not code. It also explains the summary parameter's effect.

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 it lists expenses accounts with pagination and field filtering. It distinguishes from siblings by specifying it only returns expense/purchase accounts (PGC group 6) and suggests alternatives like get_chart_of_accounts or get_expenses_account for other account types.

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?

The description includes explicit guidance on when to use this tool vs alternatives: it notes that income accounts are not included and recommends fetching the full chart via get_chart_of_accounts or reading a known account by id via get_expenses_account.

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

list_payment_methodsB

List available payment methods

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 burden. It indicates a read operation by the verb 'list', but does not disclose what information is returned, authentication requirements, or edge cases. For a simple no-parameter tool, the lack of detail is acceptable but not ideal.

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 extremely concise (4 words) and front-loaded. However, it misses opportunities to add value without increasing length, such as mentioning typical return fields.

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 no parameters and no output schema. The description is adequate for a simple list operation, but doesn't specify the nature of the returned data (e.g., codes, names). It is minimally complete for the tool's simplicity.

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

Parameters3/5

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

There are no parameters, and schema coverage is 100% (the schema is minimal). The description adds no additional parameter information, meeting the baseline of 3 per guidelines 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?

The description 'List available payment methods' clearly states the verb (list) and resource (payment methods). It effectively distinguishes this tool from sibling 'list_payments' which lists payment transactions, not method types.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. The description does not mention context, prerequisites, or when not to use it, leaving the AI agent with only the name to infer usage.

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

list_paymentsA

List all payments with optional filters for date range. Supports field filtering to reduce response size. NOTE: this endpoint is filtered to the ACTIVE fiscal year, so payments made in a prior year do NOT appear here even if they are linked to documents. For cross-year payment audits, read a document's payments via get_document_payments (the document paymentsDetail).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination (optional)
limitNoMaximum number of items to return (default: 50, max: 500)
endtmpNoEnding timestamp (Unix timestamp) for filtering payments by date
fieldsNoSelect specific fields to return (e.g., ["id", "name", "days", "discount"]). Reduces response size by 70-90%. If not provided, returns default fields: id, name, days, discount
summaryNoReturn only count and pagination metadata without items (default: false)
starttmpNoStarting timestamp (Unix timestamp) for filtering payments by date

TDQS

A4/5.0
Behavior3/5

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

Given no annotations, the description discloses the critical limitation of active fiscal year filtering. However, it does not mention pagination behavior (page/limit), default sorting, or whether fields are returned in any particular order. The field filtering optimization is noted, but more behavioral context (e.g., rate limits, auth) is missing.

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 plus a note, all front-loaded with key details. No redundant information. Slightly longer due to the note, but that note is essential. Efficient and clear.

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 tool with 6 parameters and no output schema, the description covers the main purpose and critical limitation (fiscal year filtering). However, it omits pagination behavior, default sort order, and a general idea of the response structure. Schema covers default fields, so that is acceptable, but the lack of pagination guidance reduces completeness.

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 baseline 3. The description adds limited value beyond schema: only mentions optional date range and field filtering, without elaborating on the Unix timestamp format or pagination semantics. The field filtering benefit (reduces response size) is a useful addition but not substantial.

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 it lists all payments with optional filters, and distinguishes from get_payment (single payment) and get_document_payments (payments per document) by explicitly mentioning the cross-year audit alternative. The scope (active fiscal year) is specified.

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?

Provides explicit guidance: use for current fiscal year payments, and for cross-year audits, use get_document_payments. This helps the agent decide when to invoke this tool versus alternatives.

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

list_product_imagesB

List all images of a product

ParametersJSON Schema
NameRequiredDescriptionDefault
productIdYesProduct ID

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, and the description only states what the tool does without disclosing behavioral traits like return format, pagination, ordering, or authentication requirements. For a read operation, minimal transparency is provided.

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 extremely concise, consisting of a single sentence with no wasted words. 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?

While the description is simple and the tool only has one parameter, no output schema is provided, and the description does not mention what the output contains or any constraints. It is minimally adequate but could be more complete for an AI 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?

The schema fully describes the single parameter (productId) with 100% coverage. The description adds no extra meaning beyond what the schema already provides, so baseline score of 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 states the verb ('List') and resource ('images of a product'). It is unambiguous but does not explicitly distinguish from sibling tools like get_product_main_image or get_product_secondary_image, which also deal with product images.

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 provided on when to use this tool versus alternatives such as get_product_main_image or get_product_secondary_image. The description lacks context for appropriate usage.

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

list_productsB

List all products with optional pagination. Supports field filtering to reduce response size.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination (optional)
limitNoMaximum number of items to return (default: 50, max: 500)
fieldsNoSelect specific fields to return (e.g., ["id", "name", "price"]). Reduces response size by 70-90%. If not provided, returns default fields: id, name, sku, price, stock
summaryNoReturn only count and pagination metadata without items (default: false)

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It mentions pagination and field filtering but omits behavioral details like read-only nature, authentication, rate limits, or what happens with no results. Only basic functionality is described.

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 purpose, no redundant words. 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?

Given no output schema and no annotations, the description covers main features but lacks context on default limit, max limit, and summary parameter. Adequate but could summarize key defaults.

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 descriptions for all 4 parameters. Description adds value by explaining 'field filtering to reduce response size' but otherwise relies on schema. Baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states the verb 'List' and the resource 'all products', and mentions pagination and field filtering. It distinguishes from 'get_product' but does not differentiate among other list_* 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 Guidelines2/5

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

No guidance on when to use versus alternatives (e.g., get_product, other list tools). No when-not or explicit usage context.

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

list_project_timesA

List time-tracking entries across all Holded projects (Projects API). Each project includes a timeTracking[] array of entries with duration (seconds), date (Unix seconds), user, and approved (0/1). Optionally filter by date range (YYYY-MM-DD, inclusive) and approved-only, and flatten into a single entry list with hours pre-computed. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
endDateNoKeep only entries on or before this date (YYYY-MM-DD, inclusive)
flattenNoReturn a flat array of entries (each with projectId, projectName, and hours = duration/3600) instead of the nested per-project structure. Default: false
startDateNoKeep only entries on or after this date (YYYY-MM-DD, inclusive)
approvedOnlyNoKeep only approved entries (approved === 1). Default: false

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. It explicitly states 'Read-only,' indicating no destructive behavior. It describes the response structure and optional preprocessing (flattening, hours pre-computed). No hidden behaviors are apparent.

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 long, front-loading the core purpose and then adding filter options. Every sentence adds value without 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?

Given 4 optional parameters, no output schema, and no annotations, the description provides sufficient context: response structure, filtering, flattening, and read-only. It lacks mention of ordering or pagination, but for a list tool with no pagination indicated, it is nearly 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?

Schema coverage is 100% with each parameter described. The description adds value by explaining how flatten works ('single entry list with hours pre-computed') and clarifying the date format and default values, going 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 clearly states the action ('List'), the resource ('time-tracking entries across all Holded projects'), and the API. It distinguishes from sibling tools like list_project_times_by_project by specifying 'all projects' and from get_project_time by indicating a list operation. The read-only nature is also mentioned.

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 for listing time entries from all projects with optional filters, but it does not explicitly state when to use this tool versus alternatives like list_project_times_by_project. No when-not-to-use guidance is provided.

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

list_project_times_by_projectA

List time-tracking entries for a single Holded project (Projects API). Returns a one-element array holding the project and its filtered timeTracking[] entries; set flatten: true to get a flat list of entries with hours pre-computed instead. Supports the same date-range and approved-only filters as list_project_times. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
endDateNoKeep only entries on or before this date (YYYY-MM-DD, inclusive)
flattenNoReturn a flat array of entries (each with projectId, projectName, and hours = duration/3600) instead of the nested structure. Default: false
projectIdYesThe Holded project ID
startDateNoKeep only entries on or after this date (YYYY-MM-DD, inclusive)
approvedOnlyNoKeep only approved entries (approved === 1). Default: false

TDQS

A4.4/5.0
Behavior4/5

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

Without annotations, the description carries the burden of behavioral disclosure. It explicitly states 'Read-only' and describes the return format (one-element array vs flat list with hours pre-computed). This is sufficient for a straightforward list operation, though it could mention permissions or limits.

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

Conciseness5/5

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

The description is extremely concise with two sentences. The first sentence clearly states purpose and return structure, and the second adds parameter behavior. No unnecessary words 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?

Given no output schema, the description explains the return format and filter options. It also declares read-only status. For a tool with 5 parameters and no nested objects, this is fairly complete, though it could mention that projectId is required (already in schema).

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 has a description. The tool description adds meaning by explaining the 'flatten' parameter's effect on output structure and the filter similarities to 'list_project_times'. This goes beyond the schema alone.

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 verb 'List' and the resource 'time-tracking entries for a single Holded project'. It differentiates from sibling tools like 'list_project_times' by specifying it works for a single project and mentions a distinct return format with 'flatten'.

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 context on when to use this tool versus 'list_project_times' by indicating it is for a single project and supports similar filters. However, it does not explicitly state when not to use it or mention alternatives, but the contrast with the sibling is helpful.

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

list_remittancesA

List all remittances with pagination support. Supports field filtering to reduce response size.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (starting from 1, default: 1)
fieldsNoSelect specific fields to return (e.g., ["id", "name", "date"]). Reduces response size by 70-90%. If not provided, returns default fields: id, name, date
summaryNoReturn only total count and page count without items (default: false)
pageSizeNoNumber of items per page (default: 50, max: 500)

TDQS

A3.7/5.0
Behavior3/5

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

Discloses pagination and field filtering but does not specify default field behavior, ordering, or pagination metadata in response. No annotations provided, so description carries burden but is insufficiently 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?

Two concise sentences, front-loaded with purpose. No redundant or missing 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?

Adequate but does not mention return shape or pagination metadata. With no output schema, description could hint at typical list response structure.

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 all parameters with full descriptions (100% coverage). Description adds only that field filtering reduces response size, which repeats schema info. 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?

Description clearly states verb 'List' and resource 'remittances' with pagination and field filtering. Distinguishes from siblings like get_remittance (single item) and other list_* 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?

No explicit when-to-use or alternatives. Implies usage for paginated listing with field filtering, but no exclusions or comparisons to similar list tools.

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

list_sales_channelsA

List all sales channels with pagination support. Supports field filtering to reduce response size.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (starting from 1, default: 1)
fieldsNoSelect specific fields to return (e.g., ["id", "name"]). Reduces response size by 70-90%. If not provided, returns default fields: id, name
summaryNoReturn only total count and page count without items (default: false)
pageSizeNoNumber of items per page (default: 50, max: 500)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It mentions pagination and field filtering but does not disclose behavioral traits like authentication requirements, rate limits, or any side effects. The description adds minimal behavioral context 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?

The description is concise with two sentences, front-loaded with the core purpose. Every sentence adds value without 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?

Given 4 parameters and no output schema, the description is incomplete. It does not explain the return format, pagination behavior (e.g., how to iterate pages), or ordering of results.

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

Parameters3/5

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

Schema coverage is 100%, so the description does not need to add much. The description provides an overview but does not add meaning beyond what is already in the parameter 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 clearly states the verb 'List' and the resource 'sales channels', and mentions key features (pagination, field filtering). It differentiates from sibling tools like get_sales_channel.

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 for listing multiple sales channels but does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives.

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

list_servicesA

List all services with optional pagination. Supports field filtering to reduce response size.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination (optional)
limitNoMaximum number of items to return (default: 50, max: 500)
fieldsNoSelect specific fields to return (e.g., ["id", "name", "price", "tax"]). Reduces response size by 70-90%. If not provided, returns default fields: id, name, price, tax
summaryNoReturn only count and pagination metadata without items (default: false)

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 full burden. It mentions optional pagination and field filtering, but does not disclose that the tool is read-only, that it returns paginated results by default (limit defaults to 50), or any authentication or rate limit details. The phrase 'List all services' could be misinterpreted as returning everything at once.

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, front-loading the purpose and then adding key features. Every word contributes value, with no redundancy or irrelevant 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 4-parameter list tool with no output schema, the description covers the essential purpose and features (pagination, field filtering). However, it omits details about default pagination behavior, ordering, or error handling. Given the simplicity of the tool, it is mostly complete but could be more explicit.

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 minimal value by noting field filtering reduces response size, but it does not clarify parameter relationships or provide additional context beyond the schema's own parameter 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 clearly states the verb 'List' and the resource 'services', making the tool's purpose unambiguous. It also distinguishes from sibling tools like list_contacts or get_service by specifying 'services' and mentioning pagination and field filtering, which are unique to this tool.

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

Usage Guidelines3/5

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

The description implies usage for listing services via the verb 'List', but it does not explicitly state when to use this tool vs alternatives (e.g., get_service for a single service, or create_service for adding). No 'when not to use' or alternative tool references are provided.

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

list_treasuriesA

List all treasury accounts with pagination support. Supports field filtering to reduce response size. WARNING: the balance field is a STATIC opening figure, not a live balance derived from transactions β€” do NOT rely on it for reconciliation or to compute the current cash position.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (starting from 1, default: 1)
fieldsNoSelect specific fields to return (e.g., ["id", "name", "balance"]). Reduces response size by 70-90%. If not provided, returns default fields: id, name, balance
summaryNoReturn only total count and page count without items (default: false)
pageSizeNoNumber of items per page (default: 50, max: 500)

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 full burden. It discloses the static nature of the balance field, warning against misuse for reconciliation. This is critical behavioral context. However, it omits details like default sorting, potential data freshness, or permissions required.

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 plus a warning, front-loaded with main purpose. It is efficient but the warning could be integrated. No wasted language, but the parameter descriptions in the schema are more detailed, making the description supplementary.

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

Completeness3/5

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

With no output schema, the description should explain response structure (e.g., pagination metadata) beyond the balance warning. It covers basic pagination and field filtering but does not clarify the summary parameter or what 'default fields' are returned.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are already documented. The description adds 'field filtering reduces response size by 70-90%' but that is an elaboration rather than new semantics. The warning about balance refers to the response field, not input 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 clearly states 'List all treasury accounts with pagination support', identifying the specific verb (list) and resource (treasury accounts). It distinguishes itself from sibling tools like 'get_treasury' implicitly and mentions field filtering, which is a unique feature.

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 for listing treasuries but does not explicitly state when to use this tool over alternatives (e.g., get_treasury for a single account). It provides guidance on using field filtering to reduce response size but lacks exclusions or contextual triggers.

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

list_warehousesB

List all warehouses with pagination support. Supports field filtering to reduce response size.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (starting from 1, default: 1)
fieldsNoSelect specific fields to return (e.g., ["id", "name", "address"]). Reduces response size by 70-90%. If not provided, returns default fields: id, name, address
summaryNoReturn only total count and page count without items (default: false)
pageSizeNoNumber of items per page (default: 50, max: 500)

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so description bears full burden. Only mentions pagination and field filtering but does not disclose behavioral traits like authorization requirements, rate limits, or potential side effects. Minimal transparency beyond basic features.

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 with no redundancy. Every sentence adds meaningful 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 tool with no output schema and fully documented parameters, the description covers the main features (paginated listing, field filtering). It doesn't describe return format but is adequate for a straightforward list operation.

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

Parameters4/5

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

Input schema covers all 4 parameters with descriptions, achieving 100% coverage. The description adds value by quantifying the response size reduction ('70-90%') and clarifying the purpose of field filtering beyond the schema's default fields note.

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?

Description clearly states verb 'list' and resource 'warehouses' with pagination and field filtering. While it doesn't differentiate from sibling 'list_warehouse_stock', the purpose is specific and unambiguous.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. Does not mention when not to use it or provide context about prerequisites. The description implies use for listing with pagination and filtering but lacks comparative guidance.

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

list_warehouse_stockA

List all products stock in a specific warehouse. Supports field filtering to reduce response size.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination (optional)
limitNoMaximum number of items to return (default: 50, max: 500)
fieldsNoSelect specific fields to return (e.g., ["productId", "productName", "sku", "stock"]). Reduces response size by 70-90%. If not provided, returns default fields: productId, productName, sku, stock
summaryNoReturn only count and pagination metadata without items (default: false)
warehouseIdYesWarehouse ID

TDQS

A3.5/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 full burden for behavioral disclosure. It describes a read operation but does not explicitly state that it is read-only, safe, or idempotent. It also does not disclose what happens if the warehouse ID is invalid, authentication requirements, or any side effects. The description adds minimal behavioral context 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?

The description is two short sentences, front-loaded with the main purpose, and includes a key feature (field filtering) without any extraneous information. Every word adds value.

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 tool has 5 parameters and no output schema, the description is functional but minimal. It does not explain what the response looks like (e.g., whether it's a list of stock items with quantities), which would be helpful. However, the schema covers pagination and field selection details, partially compensating.

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. The description does not add new meaning beyond the schema field descriptions; it only reiterates that field filtering is supported. The parameter descriptions in the schema are already clear and complete.

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 ('List') and the resource ('all products stock in a specific warehouse'). It distinguishes from sibling tools like 'list_products' (which likely lists products without warehouse context) and 'get_warehouse' (which retrieves warehouse details). The scope is precise 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 Guidelines3/5

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

The description implies usage for querying stock in a specific warehouse, but does not explicitly state when to use this tool over alternatives like 'list_products' or 'get_warehouse'. It mentions field filtering as a feature but provides no guidance on when not to use the tool or prerequisites. Usage is implied but not directly contrasted with siblings.

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

pay_documentA

Register a payment for a document. IMPORTANT: this AUTO-APPROVES the document as a side effect (status 0β†’1) β€” Holded has no separate approve endpoint, and approval cannot be undone via the API. paymentmethod is the payment-method catalog id (from list_payment_methods), NOT a bank/treasury id. To link the payment to a bank account, pass bankId: the /pay endpoint can't set it, so the tool performs a second step (PUT /payments/{id}) and reports the outcome in _warnings.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoPayment date as Unix timestamp
amountYesPayment amount
bankIdNoBank account id to link the payment to. Triggers a second step (PUT /payments/{id}) because /pay cannot set the bank link.
docTypeYesType of document
documentIdYesDocument ID
treasuryIdNoTreasury account ID
paymentmethodNoPayment-method catalog id (from list_payment_methods), NOT a bank/treasury id.

TDQS

A4.9/5.0
Behavior5/5

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

Discloses the auto-approval side effect, the irreversibility of approval via API, and the second-step process for linking a bank account. No annotations are provided, so the description carries the full burden and does so comprehensively.

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, but the second is quite long. Still, it front-loads the purpose and crucial warning. Could be slightly more structured but remains concise and informative.

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 complexity (7 parameters, side effects, no output schema), the description covers all critical aspects: side-effect, parameter clarification, workflow, and warnings. It is fully complete for an agent to use 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?

Adds meaning beyond the schema by explaining that paymentmethod is a catalog id from list_payment_methods, not a bank/treasury id, and that bankId triggers a PUT step reported in _warnings. Schema coverage is 100% but the description still adds valuable context.

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 'Register a payment for a document,' which is a specific verb+resource. It distinguishes from siblings like create_payment and update_payment by emphasizing the side effect of auto-approval.

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 warns about auto-approving the document and that approval cannot be undone. Clarifies that paymentmethod is a catalog id and bankId triggers a second step, providing guidance on when to use each parameter.

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

send_documentC

Send a document by email

ParametersJSON Schema
NameRequiredDescriptionDefault
emailsNoArray of email addresses to send to
docTypeYesType of document
messageNoEmail message body
subjectNoEmail subject
documentIdYesDocument ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It only implies a send action without disclosing side effects, permissions, or success/error behavior. Minimal behavioral transparency.

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 very concise (one sentence) with no unnecessary words. However, it is arguably too brief, sacrificing detail for brevity.

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 5 parameters (including enum), no output schema, and no annotations, the description is incomplete. It omits essential context such as document existence requirements, email sending behavior, and error handling.

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 descriptions, but the tool description adds no extra meaning beyond the schema. Baseline 3 is appropriate as schema already documents parameters.

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

Purpose4/5

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

The description clearly states the verb ('send'), resource ('document'), and method ('by email'). It distinguishes from sibling tools like attach_file_to_document and pay_document, but lacks specific scope details.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, no prerequisites or context provided. The description merely states the action without any usage boundaries.

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

ship_all_itemsC

Ship all items of a document

ParametersJSON Schema
NameRequiredDescriptionDefault
docTypeYesType of document
documentIdYesDocument ID

TDQS

C2.9/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 behavioral disclosure, but it only says 'Ship all items of a document'. It does not describe side effects (e.g., irreversible action), prerequisites (e.g., document must be in certain status), or any other behavioral traits.

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 concise sentence with no wasted words. It is appropriately short for the tool's simplicity, though it could benefit from slightly more detail.

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 description is incomplete given the lack of output schema and annotations. It does not describe the result of the operation (e.g., what indicates success), error conditions, or any post-shipment state changes.

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. The description adds no additional meaning beyond what the schema already provides for 'docType' and 'documentId'.

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 verb 'ship' and the resource 'all items of a document', clearly indicating the action. However, it does not distinguish from the sibling tool 'ship_items_by_line', missing an opportunity to highlight the 'all items' scope.

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 provided on when to use this tool versus alternatives like 'ship_items_by_line'. There is no mention of prerequisites, document state requirements, or any when-not-to-use conditions.

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

ship_items_by_lineC

Ship specific items by line

ParametersJSON Schema
NameRequiredDescriptionDefault
linesYesArray of line items to ship
docTypeYesType of document
documentIdYesDocument ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations exist, and the description provides minimal behavioral information. It does not disclose side effects, inventory implications, or reversibility. The agent gains no insight beyond the tool's basic function.

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?

Description is a single concise sentence with no superfluous words. While efficient, it could benefit from additional context without being overly verbose.

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 the existence of sibling 'ship_all_items', the description should clarify what 'by line' means and when to use this tool. Without output schema, return behavior is unclear. Incomplete for decision-making.

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 schema has 100% coverage with descriptions for all parameters (docType, documentId, lines). The description adds no extra meaning beyond the schema, meeting the baseline for high coverage.

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

Purpose4/5

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

Description states verb 'ship' and resource 'items by line', clearly indicating it ships specific line items. However, it does not distinguish from sibling 'ship_all_items' which ships all items, missing differentiation.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives like 'ship_all_items'. No context provided for appropriate scenarios or exclusions, leaving the agent without decision support.

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

update_contactC

Update an existing contact

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoNIF / CIF / VAT number or tax identification code for the contact. This is the correct Holded API field for tax IDs. Note: the legacy "vatnumber" field does not exist in Holded and is silently ignored.
nameNoContact name
noteNoNotes about the contact
typeNoContact type
emailNoContact email
phoneNoContact phone number
contactIdYesContact ID to update
tradenameNoTrade name
billAddressNoBilling address
contactPersonsNoList of contact persons associated with this contact

TDQS

C2.7/5.0
Behavior1/5

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

No annotations provided, and the description does not disclose behavioral traits (e.g., idempotency, partial update behavior, error handling, side effects). For a tool with 10 parameters and nested objects, this is a significant 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?

Single sentence, no wasted words. Highly concise and to the point.

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 the complexity (10 parameters, nested objects, no output schema, no annotations), the description is insufficient. It does not explain partial update behavior, validation, or any constraints.

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 description does not need to add much. The description 'Update an existing contact' adds no parameter meaning beyond the schema. Baseline 3 is appropriate.

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

Purpose4/5

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

Description clearly states the verb 'Update' and resource 'an existing contact'. It distinguishes from sibling tools like create_contact, delete_contact, and get_contact. However, it lacks detail on scope or constraints.

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

Usage Guidelines2/5

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

No guidance on when to use or avoid this tool. No mention of prerequisites (e.g., contact must exist) or comparison to siblings like create_contact. The description provides no context for tool selection.

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

update_contact_groupC

Update an existing contact group

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoContact group name
groupIdYesContact group ID to update

TDQS

C2.8/5.0
Behavior2/5

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

No annotations provided. Description does not disclose side effects, idempotency, error handling, or permissions required. For a mutation tool, 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.

Conciseness3/5

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

Single sentence is efficient but lacks substance. Could include more detail without being verbose; current length borders on under-specification.

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?

No output schema and minimal description leave gaps about return values, error conditions, and behavior. Not complete given the tool's complexity and sibling context.

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 schema covers both parameters with descriptions (100% coverage). Description adds no extra semantic detail 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?

Description states 'Update an existing contact group', which clearly identifies the verb and resource. However, it does not distinguish from sibling update tools like 'update_contact'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as create or delete. No prerequisites or context for invocation.

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

update_documentC

Update an existing document

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDocument date as Unix timestamp
itemsNoArray of line items
notesNoNotes for the document
docTypeYesType of document
currencyNoCurrency code (e.g., EUR, USD)
contactIdNoContact ID for the document
retentionNoIRPF retention percentage. Accepted on SALES documents only; rejected on purchases because Holded silently ignores it there.
documentIdYesDocument ID to update
invoiceNumNoDocument reference number (e.g. invoice number from supplier)
expAccountIdNoExpense account ID for expense documents
salesChannelIdNoSales channel ID to associate with the document

TDQS

C2.7/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 full burden. It only says 'Update an existing document' without disclosing whether it performs a partial or full update, what happens if the document doesn't exist, or any mutation side effects. This is inadequate for a mutation tool with 11 parameters.

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 single-sentence description is extremely brief but under-specified for a tool with 11 parameters. It lacks structure (e.g., behavioral notes, examples) and does not earn its place. True conciseness would convey more information efficiently.

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 the complexity of 11 parameters, the absence of an output schema, and no behavioral details in the description, the tool is incomplete. The agent lacks information about update semantics, error cases, or document type constraints beyond 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 coverage is 100%, so the schema already documents all parameters. The description adds no additional meaning or guidance on parameter interactions (e.g., required vs optional, relationships like tax vs taxes array). 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 states the verb 'update' and resource 'existing document', which is accurate. However, it lacks specificity to distinguish from sibling tools like update_document_pipeline or update_document_tracking, which also update documents but with different scopes. The schema provides additional context via docType enum, but the description itself is generic.

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 provided on when to use this tool versus create_document, delete_document, or other update tools. There are no hints about prerequisites, when not to use it, or alternatives. The agent must infer from the tool name alone.

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

update_document_pipelineC

Update pipeline stage for a document

ParametersJSON Schema
NameRequiredDescriptionDefault
docTypeYesType of document
stageIdYesStage ID within the pipeline
documentIdYesDocument ID
pipelineIdYesPipeline ID

TDQS

C2.8/5.0
Behavior2/5

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

The description does not disclose any behavioral traits beyond stating it's an update. With no annotations, the description carries full responsibility for disclosing side effects, permissions, or reversibility, but it fails to do so.

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

Conciseness3/5

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

The description is very concise (one sentence) but lacks crucial information. It could be expanded without becoming verbose.

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 description does not provide enough context for an agent to understand when or how to use this tool correctly. It misses details like whether the document must already be in a pipeline, or what the stages represent. Given no output schema, more context is needed.

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 cover all 4 parameters with basic labels. The tool description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.

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

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: updating a pipeline stage for a document. It uses a specific verb ('Update') and resource ('pipeline stage for a document'), differentiating it from general update tools like 'update_document'.

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 provided on when to use this tool versus alternatives (e.g., 'update_document', 'update_document_tracking'). There is no mention of prerequisites, context, or 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.

update_document_trackingA

Update tracking information for a document

ParametersJSON Schema
NameRequiredDescriptionDefault
carrierNoCarrier name
docTypeYesType of document
documentIdYesDocument ID
trackingNumberNoTracking number

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only states 'Update tracking information', without clarifying whether updates are additive or overwriting, if authorization is needed, or any destructive side effects. This is insufficient for a mutation 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?

Single sentence, no filler, directly addresses the core function. Every word is justified.

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 update tool with 4 parameters and no output schema, the description is marginally adequate. It fails to cover usage context or behavioral nuances, but the parameter descriptions and tool name provide some completeness.

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. The description adds no additional meaning beyond restating the tool's purpose. 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 uses a specific verb ('Update') and resource ('tracking information for a document'), clearly distinguishing it from siblings like 'update_document' (which modifies other fields) and shipping tools. The purpose is immediately understood.

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 on when to use this tool versus alternatives (e.g., 'update_document'). The description does not mention prerequisites, such as requiring an existing document, or warn against conflicting uses. Usage is implied but not articulated.

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

update_expenses_accountC

Update an existing expenses account

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoPGC account number (e.g. "62900000"). This is the value surfaced as `accountNum` by list_expenses_accounts β€” Holded accepts it under the `code` key on create/update.
nameNoExpenses account name
accountIdYesExpenses account ID to update

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description should cover behavioral aspects like idempotency, error handling, or side effects. It only states the basic action, omitting details such as whether partial updates are allowed, what happens if the account doesn't exist, or if permissions are required.

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, clear sentence without fluff. It is appropriately sized, though it could be more informative without becoming verbose.

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 update tool, the description is minimally adequate given that the schema documents all parameters. However, it lacks context on return values or error states, which is reasonable without an output schema but still leaves gaps.

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

Parameters3/5

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

Schema coverage is 100%, so the description does not need to add parameter details. It adds no extra meaning beyond what the schema provides, which is acceptable but not improved.

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 action ('Update') and resource ('expenses account'), making the purpose unambiguous. However, it does not differentiate from sibling tools like create_expenses_account or delete_expenses_account, which is expected from the name but not explicitly clarified.

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 provided on when to use this tool versus alternatives (e.g., create for new accounts, list to find accounts). There are no prerequisites or context for typical use cases.

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

update_numbering_serieC

Update an existing numbering serie

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoSerie name
prefixNoSerie prefix
docTypeYesDocument type
serieIdYesSerie ID to update
nextNumberNoNext number in the serie

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It only states 'Update an existing numbering serie' without disclosing behavior such as partial update, error handling for nonexistent series, or side effects. This is insufficient for a mutation tool.

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

Conciseness3/5

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

The description is very short and to the point, but it lacks important information that would justify its brevity. It could be considered under-specified rather than concise.

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

Completeness2/5

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

With 5 parameters, no output schema, and no annotations, the description is incomplete. It fails to explain update semantics (e.g., which fields can be updated, whether partial updates are allowed) or return values.

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 5 parameters are documented in the input schema with descriptions (100% coverage). The description adds no additional 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.

Purpose4/5

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

The description clearly states the action (update) and the resource (existing numbering serie). However, it does not differentiate from sibling tools like 'create_numbering_serie' or 'delete_numbering_serie', which is a minor gap.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. The description does not mention that this is for updating existing series, not creating new ones, nor does it provide any context about prerequisites or postconditions.

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

update_paymentA

Update an existing payment. IMPORTANT: Holded's PUT /payments/{id} REPLACES the record rather than merging, so any field omitted from the body is blanked. To prevent that, this tool first re-reads the current payment and merges your changes over it, preserving fields you did not pass (contactId, bankId, date, ...).

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoPayment date as a Unix timestamp (seconds)
daysNoDays until due
nameNoPayment method name
amountNoPayment amount
bankIdNoBank account id to link the payment to
contactIdNoContact id associated with the payment
paymentIdYesPayment ID to update

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses that the underlying API does full replacement, but this tool merges changes. This is key behavioral insight. Could add more like authorization needs.

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

Conciseness5/5

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

Two sentences: first states purpose, second explains the important behavioral note. No wasted words, 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 covers input behavior well but does not mention return values. Since there is no output schema, the agent might need to know what the tool returns (e.g., the updated payment object).

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 individual parameters are documented. The description adds value by explaining the overall merge behavior, which clarifies how parameters interact and why omitted fields are preserved.

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 'Update an existing payment' with a specific verb and resource. It clearly distinguishes from sibling tools like create_payment and delete_payment by focusing on the update 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 explains the critical behavior of read-merge-update, which guides when to use this tool (to update with partial fields without blanking omitted ones). It does not explicitly mention when not to use, but the context is clear.

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

update_productC

Update an existing product

ParametersJSON Schema
NameRequiredDescriptionDefault
skuNoProduct SKU
taxNoTax percentage
nameNoProduct name
priceNoProduct price
barcodeNoProduct barcode
costPriceNoCost price
productIdYesProduct ID to update
descriptionNoProduct description

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits, but it only says 'Update an existing product'. Missing information on side effects, required permissions, error handling, or idempotency.

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?

Extremely concise (one sentence) but lacks structure. It is not verbose but also not particularly efficient in conveying useful information beyond the 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?

Given 8 parameters and no output schema, the description is incomplete. It does not explain return values, error conditions, or what happens if the product does not exist.

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 description does not need to add parameter details. The description provides no additional meaning 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 clearly states the verb 'Update' and the resource 'product', distinguishing it from create and delete siblings. However, it does not specify which fields can be updated, though they are listed in the schema.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., create_product or update_product_stock). No prerequisites or limitations mentioned.

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

update_product_stockC

Update stock quantity for a product

ParametersJSON Schema
NameRequiredDescriptionDefault
unitsYesNumber of units to add or subtract
productIdYesProduct ID
warehouseIdNoWarehouse ID (optional)

TDQS

C2.9/5.0
Behavior2/5

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

The description only says 'update stock quantity' without disclosing behavioral traits such as whether units can be positive/negative (add/subtract), what happens to negative stock, or if warehouse is optional. No annotations compensate, so the agent must infer behavior from 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?

Single sentence, front-loaded with the core action, no extraneous text. Efficient and to the point.

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 3 parameters, no output schema, and no annotations. The description does not explain return values, success/failure indicators, or prerequisites (e.g., product existence, permissions). It is insufficient for an agent to invoke the tool correctly without additional assumptions.

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 parameter descriptions are already clear ('Product ID', 'Warehouse ID (optional)', 'Number of units to add or subtract'). The tool description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states it updates stock quantity for a product. It is specific and distinguishes from sibling tools like 'update_product' which may update other fields. However, it doesn't explicitly differentiate itself from potential alternative stock adjustment 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?

No guidance on when to use this tool vs alternatives (e.g., shipping tools or other stock updates). No exclusions or prerequisites provided, leaving the agent to guess the appropriate context.

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

update_sales_channelC

Update an existing sales channel

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoSales channel name
channelIdYesSales channel ID to update

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description bears the full burden of behavioral disclosure. It does not mention whether the operation is destructive or reversible, required permissions, or effects on other resources.

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 concise sentence. It is appropriately front-loaded but could be slightly more informative without becoming verbose.

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 simplicity of the tool (2 parameters, no output schema), the description is minimally adequate. However, it lacks key context such as whether the update is partial or full, and what the response looks like.

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 input schema already documents both parameters (channelId and name). The description adds no additional meaning beyond what the schema provides, resulting in a baseline score of 3.

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 'Update an existing sales channel' clearly identifies the action (update) and the resource (sales channel). It distinguishes from sibling tools like create, delete, get, and list by using a different 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?

No usage guidelines are provided. The description does not indicate when to use this tool, prerequisites (e.g., channel must exist), or how it differs from alternatives like create or delete.

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

update_serviceB

Update an existing service

ParametersJSON Schema
NameRequiredDescriptionDefault
skuNoService SKU
taxNoTax percentage
nameNoService name
priceNoService price
serviceIdYesService ID to update
descriptionNoService description

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided. Description only says 'update', lacking details on partial vs full update, idempotency, permissions, or 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.

Conciseness4/5

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

One short sentence, minimal but not wasteful. Could be more informative while staying concise.

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 high schema coverage, missing update semantics (partial/replace), no return value info, and no output schema to compensate.

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 has 100% description coverage. Description adds no extra meaning beyond schema-defined parameter 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?

Clear verb+resource: 'Update an existing service'. Distinct from siblings like create_service and delete_service.

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

Usage Guidelines2/5

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

No guidance on when to use vs alternatives (e.g., create_service, delete_service). No context about prerequisites.

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

update_warehouseB

Update an existing warehouse

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoCity
nameNoWarehouse name
addressNoWarehouse address
countryNoCountry
provinceNoProvince
postalCodeNoPostal code
warehouseIdYesWarehouse ID to update

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. The description only states 'Update an existing warehouse' with no behavioral traits like idempotency, error handling, or required permissions.

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

Conciseness4/5

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

One sentence, no fluff. Efficient but lacks structure; no front-loading of key info.

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?

No output schema, no mention of return values, and no indication that only provided fields are updated. Incomplete for a mutation tool with 7 optional parameters.

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 baseline is 3. Description adds no extra meaning beyond property names and types.

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

Purpose5/5

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

Clearly states 'Update an existing warehouse', which is specific verb+resource and distinguishes from sibling tools like create_warehouse, delete_warehouse.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives. Does not mention prerequisites, when-not-to-use, or context.

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. 16 tool updatesv1.7.0
    • Changedcreate_document1 field changed
      • addedInput schema / properties / retention
        Added value: +{
        +  "description": "IRPF retention percentage. Accepted on SALES documents only; rejected on purchases because Holded silently ignores it there.",
        +  "type": "number"
        +}
    • Changedcreate_expenses_account1 field changed
      • changedInput schema / properties / code / description
        Previous value: -"Account code"New value: +"PGC account number (e.g. \"62900000\"). This is the value surfaced as `accountNum` by list_expenses_accounts β€” Holded accepts it under the `code` key on create/update."
    • Addedget_chart_of_accounts
    • Addedget_daily_ledger
    • Addedget_document_payments
    • Changedget_expenses_account1 field changed
      • changedInput schema / properties / accountId / description
        Previous value: -"Expenses account ID"New value: +"Account Holded id (the `id` field, not the PGC accountNum)"
    • Addedget_project_time
    • Changedget_taxes1 field changed
      • changedInput schema / properties / fields / description
        Previous value: -"Select specific fields to return (e.g., [\"id\", \"name\", \"percentage\"]). Reduces response size by 70-90%. If not provided, returns default fields: id, name, percentage"New value: +"Select specific fields to return (e.g., [\"key\", \"name\", \"amount\", \"scope\"]). Reduces response size. If not provided, returns default fields: id, key, name, amount, scope, group, type. NOTE: the tax rate field is `amount` (not `percentage`) and the identifier is `key`."
    • Changedlist_documents2 fields changed
      • addedInput schema / properties / approved
        Added value: +{
        +  "description": "Filter by approval state: 0=not approved, 1=approved. Maps to Holded `filter=approved-<n>`. Independent of the Paid/Pending badge and of paymentsPending.",
        +  "enum": [
        +    "0",
        +    "1"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / fields / description
        Previous value: -"Select specific fields to return (e.g., [\"id\", \"contactName\", \"total\"]). Reduces response size by 70-90%. If not provided, returns default fields: id, contact, contactName, date, tax, total, status"New value: +"Select specific fields to return (e.g., [\"id\", \"contactName\", \"total\"]). Reduces response size by 70-90%. If not provided, returns default fields: id, contact, contactName, date, tax, total, status, paymentsPending"
    • Changedlist_expenses_accounts1 field changed
      • changedInput schema / properties / fields / description
        Previous value: -"Select specific fields to return (e.g., [\"id\", \"name\", \"code\"]). Reduces response size by 70-90%. If not provided, returns default fields: id, name, code"New value: +"Select specific fields to return (e.g., [\"id\", \"name\", \"accountNum\"]). Reduces response size. If not provided, returns default fields: id, name, accountNum. NOTE: the PGC number field is `accountNum` (not `code`)."
    • Addedlist_project_times
    • Addedlist_project_times_by_project
    • Changedpay_document2 fields changed
      • addedInput schema / properties / bankId
        Added value: +{
        +  "description": "Bank account id to link the payment to. Triggers a second step (PUT /payments/{id}) because /pay cannot set the bank link.",
        +  "type": "string"
        +}
      • addedInput schema / properties / paymentmethod
        Added value: +{
        +  "description": "Payment-method catalog id (from list_payment_methods), NOT a bank/treasury id.",
        +  "type": "string"
        +}
    • Changedupdate_document1 field changed
      • addedInput schema / properties / retention
        Added value: +{
        +  "description": "IRPF retention percentage. Accepted on SALES documents only; rejected on purchases because Holded silently ignores it there.",
        +  "type": "number"
        +}
    • Changedupdate_expenses_account1 field changed
      • changedInput schema / properties / code / description
        Previous value: -"Account code"New value: +"PGC account number (e.g. \"62900000\"). This is the value surfaced as `accountNum` by list_expenses_accounts β€” Holded accepts it under the `code` key on create/update."
    • Changedupdate_payment4 fields changed
      • addedInput schema / properties / amount
        Added value: +{
        +  "description": "Payment amount",
        +  "type": "number"
        +}
      • addedInput schema / properties / bankId
        Added value: +{
        +  "description": "Bank account id to link the payment to",
        +  "type": "string"
        +}
      • addedInput schema / properties / contactId
        Added value: +{
        +  "description": "Contact id associated with the payment",
        +  "type": "string"
        +}
      • addedInput schema / properties / date
        Added value: +{
        +  "description": "Payment date as a Unix timestamp (seconds)",
        +  "type": "number"
        +}
  2. 72 tool updatesv1.6.0
    • First observedattach_file_to_document
    • First observedcreate_contact
    • First observedcreate_contact_group
    • First observedcreate_document
    • First observedcreate_expenses_account
    • First observedcreate_numbering_serie
    • First observedcreate_payment
    • First observedcreate_product
    • First observedcreate_sales_channel
    • First observedcreate_service
    • First observedcreate_treasury
    • First observedcreate_warehouse
    • First observeddelete_contact
    • First observeddelete_contact_group
    • First observeddelete_document
    • First observeddelete_expenses_account
    • First observeddelete_numbering_serie
    • First observeddelete_payment
    • First observeddelete_product
    • First observeddelete_sales_channel
    • First observeddelete_service
    • First observeddelete_warehouse
    • First observedget_contact
    • First observedget_contact_attachment
    • First observedget_contact_group
    • First observedget_document
    • First observedget_document_pdf
    • First observedget_expenses_account
    • First observedget_numbering_series
    • First observedget_payment
    • First observedget_product
    • First observedget_product_main_image
    • First observedget_product_secondary_image
    • First observedget_remittance
    • First observedget_sales_channel
    • First observedget_service
    • First observedget_shipped_units
    • First observedget_taxes
    • First observedget_treasury
    • First observedget_warehouse
    • First observedlist_contact_attachments
    • First observedlist_contact_groups
    • First observedlist_contacts
    • First observedlist_documents
    • First observedlist_expenses_accounts
    • First observedlist_payment_methods
    • First observedlist_payments
    • First observedlist_product_images
    • First observedlist_products
    • First observedlist_remittances
    • First observedlist_sales_channels
    • First observedlist_services
    • First observedlist_treasuries
    • First observedlist_warehouse_stock
    • First observedlist_warehouses
    • First observedpay_document
    • First observedsend_document
    • First observedship_all_items
    • First observedship_items_by_line
    • First observedupdate_contact
    • First observedupdate_contact_group
    • First observedupdate_document
    • First observedupdate_document_pipeline
    • First observedupdate_document_tracking
    • First observedupdate_expenses_account
    • First observedupdate_numbering_serie
    • First observedupdate_payment
    • First observedupdate_product
    • First observedupdate_product_stock
    • First observedupdate_sales_channel
    • First observedupdate_service
    • First observedupdate_warehouse

TDQS

B3.2/5.0

Scored across 78 tools

Disambiguation5/5

Each tool targets a specific entity and action, with detailed descriptions that clarify potential overlaps (e.g., list_expenses_accounts vs get_chart_of_accounts, list_payments vs get_document_payments). The distinctions are clear, so an agent can reliably select the correct tool.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., create_contact, list_documents, update_product). Even compound actions like attach_file_to_document use a predictable structure. No mixing of styles or vague verbs.

Tool Count4/5

With 78 tools, the server is comprehensive but slightly heavy. However, the number is justified by the breadth of ERP entities covered (contacts, documents, products, payments, accounting, etc.) and the inclusion of both basic CRUD and specialized operations (shipping, pipeline tracking).

Completeness4/5

The tool surface covers most core ERP operations: full CRUD for major entities, document workflows (pay, send, ship, attach), accounting (chart, ledger, taxes), and time tracking read. Minor gaps exist, such as missing create/update for projects and lack of user management, but the overall coverage is strong.

Maintenance

ActivityStale
ResponsivenessWithin a week

Related MCP Connectors

  • Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server

  • MCP server for Quaderno β€” tax-rate calculation, invoices, contacts, products, receipts & expenses.

  • MCP server for Codat β€” companies, connections, invoices, bills and financial statements.

  • The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server that connects Claude Code to the Holded API for natural language financial, accounting, and invoicing queries, with built-in Spanish PGC context.
    13
    2
    Apache 2.0
  • A
    license
    B
    quality
    D
    maintenance
    MCP server for Invoice Ninja v5 API. Enables AI assistants to manage clients, invoices, quotes, payments, and time tracking through natural language.
    32
    19 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Model Context Protocol (MCP) server for SuperFaktura invoicing system. Enables AI assistants to interact with SuperFaktura API for managing invoices, clients, and expenses.
    Apache 2.0
  • A
    license
    B
    quality
    B
    maintenance
    MCP server for Holded API v2, enabling listing and querying of contacts, invoices, purchases, products, services, and payments, with low-level access to any endpoint.
    15
    241 npm
    MIT