Skip to main content
Glama
crisgon0295

Siigo MCP Server

by crisgon0295

Siigo MCP Server

A Model Context Protocol (MCP) server that provides full integration with the Siigo API, enabling access to Colombian accounting software features including products, customers, invoices, quotations, purchases, credit notes, vouchers, payment receipts, journals, webhooks, and more.

v3.2.0 - Split tool modules for maintainability, 75 tools, purchase support documents, updated cash receipt support, MCP SDK v1.29, Zod schemas, improved MCP error propagation, and complete TypeScript type safety.

Features

This MCP server provides access to all Siigo API endpoints:

Core Resources

  • Products: Full CRUD for products, services, consumer goods, and Combo products with components

  • Customers: Manage customers, suppliers, and third parties

  • Invoices: Sales invoices with electronic invoicing, healthcare sector, batch creation, annulment, PDF, XML, and DIAN error queries

  • Quotations: Full CRUD for quotations (cotizaciones) -- NEW in v3

  • Purchase Support Documents: Full CRUD for documentos soporte (/purchase-support-documents)

  • Purchases: Purchase invoices and expenses

  • Credit Notes: Create and query credit notes with PDF support and healthcare sector fields

  • Vouchers: Cash receipts (recibos de caja), including debt payments, advance payments, and miscellaneous income

  • Payment Receipts: Payment receipts / disbursements (recibos de pago / comprobantes de egreso) - full CRUD

  • Journals: Accounting journal entries (comprobantes contables)

  • Webhooks: Subscribe to and manage webhook events -- NEW in v3

Inventory Management

  • Account Groups: Create and edit inventory categories -- NEW in v3

Catalogs

  • Document types (FV, RC, NC, FC, CC, RP, C, DS)

  • Taxes, payment types, cost centers

  • Users/sellers, warehouses, price lists

  • Account groups, cities, ID types

  • Fiscal responsibilities, fixed assets, expenses, miscellaneous income concepts

Reports

  • Trial balance reports (general and by third party)

  • Accounts payable reports

Related MCP server: Siigo MCP Server

Installation

npx @jdlar/siigo-mcp

Option 2: Global Installation

npm install -g @jdlar/siigo-mcp
siigo-mcp

Option 3: Local Development / Building from Source

git clone https://github.com/jdlar1/siigo-mcp.git
cd siigo-mcp
npm install
npm run build
cp .env.example .env
# Edit .env with your Siigo credentials

Configuration

Required Environment Variables

Variable

Description

SIIGO_USERNAME

Your Siigo API username

SIIGO_ACCESS_KEY

Your Siigo API access key

SIIGO_PARTNER_ID

Partner ID for API identification (3-100 alphanumeric chars, no spaces)

Optional Environment Variables

Variable

Default

Description

SIIGO_BASE_URL

https://api.siigo.com

API base URL

Getting Siigo API Credentials

  1. Sign up for a Siigo account at siigo.com

  2. Access the API section in your Siigo dashboard

  3. Generate your API credentials (username and access key)

  4. For testing, use the sandbox environment

MCP Client Configuration

Claude Desktop

Add to your Claude Desktop config (claude_desktop_config.json):

{
  "mcpServers": {
    "siigo": {
      "command": "npx",
      "args": ["@jdlar/siigo-mcp"],
      "env": {
        "SIIGO_USERNAME": "your_username",
        "SIIGO_ACCESS_KEY": "your_access_key",
        "SIIGO_PARTNER_ID": "your_app_name"
      }
    }
  }
}

Available Tools (68 total)

Products (6 tools)

Tool

Description

Annotations

siigo_get_products

List products with pagination

read-only

siigo_get_product

Get a product by ID

read-only

siigo_create_product

Create product (supports Combo type with components)

siigo_update_product

Update a product

siigo_delete_product

Delete a product

destructive

siigo_search_products

Search by code, name, or reference (partial match)

read-only

Account Groups / Inventory Categories (3 tools)

Tool

Description

Annotations

siigo_get_account_groups

List inventory categories

read-only

siigo_create_account_group

Create inventory category

siigo_update_account_group

Update inventory category

Customers (5 tools)

Tool

Description

Annotations

siigo_get_customers

List customers

read-only

siigo_get_customer

Get a customer by ID

read-only

siigo_create_customer

Create a customer/third party

siigo_update_customer

Update a customer

siigo_search_customers

Search by identification, name, or type

read-only

Invoices (10 tools)

Tool

Description

Annotations

siigo_get_invoices

List invoices with date filters

read-only

siigo_get_invoice

Get an invoice by ID

read-only

siigo_create_invoice

Create invoice (supports healthcare and transport sectors)

siigo_update_invoice

Update an invoice

siigo_delete_invoice

Delete an invoice

destructive

siigo_annul_invoice

Annul (void) an invoice

destructive

siigo_get_invoice_pdf

Get invoice PDF (base64)

read-only

siigo_get_invoice_xml

Get invoice electronic XML (base64)

read-only

siigo_get_invoice_stamp_errors

Get DIAN rejection errors

read-only

siigo_send_invoice_email

Send invoice by email (up to 5 addresses)

Batch Invoices (1 tool)

Tool

Description

Annotations

siigo_create_invoice_batch

Create invoices in batch (async with webhook notification)

Quotations (5 tools)

Tool

Description

Annotations

siigo_get_quotations

List quotations with date filters

read-only

siigo_get_quotation

Get a quotation by ID

read-only

siigo_create_quotation

Create a quotation (document type C)

siigo_update_quotation

Update a quotation

siigo_delete_quotation

Delete a quotation

destructive

Credit Notes (4 tools)

Tool

Description

Annotations

siigo_get_credit_notes

List credit notes

read-only

siigo_get_credit_note

Get a credit note by ID

read-only

siigo_create_credit_note

Create credit note (supports healthcare sector, external invoice refs)

siigo_get_credit_note_pdf

Get credit note PDF (base64)

read-only

Vouchers / Cash Receipts (3 tools)

Tool

Description

Annotations

siigo_get_vouchers

List cash receipts (recibos de caja)

read-only

siigo_get_voucher

Get a cash receipt by ID

read-only

siigo_create_voucher

Create cash receipt (DebtPayment, AdvancePayment, MiscIncome)

Purchase Support Documents (5 tools)

Tool

Description

Annotations

siigo_get_purchase_support_documents

List purchase support documents

read-only

siigo_get_purchase_support_document

Get a purchase support document by ID

read-only

siigo_create_purchase_support_document

Create purchase support document (document type DS)

siigo_update_purchase_support_document

Update a purchase support document

siigo_delete_purchase_support_document

Delete a purchase support document

destructive

Purchases (5 tools)

Tool

Description

Annotations

siigo_get_purchases

List purchase invoices

read-only

siigo_get_purchase

Get a purchase by ID

read-only

siigo_create_purchase

Create purchase (use FC type with document_support for Documento Soporte)

siigo_update_purchase

Update a purchase

siigo_delete_purchase

Delete a purchase

destructive

Payment Receipts / Disbursements (5 tools)

Tool

Description

Annotations

siigo_get_payment_receipts

List payment receipts (recibos de pago / comprobantes de egreso)

read-only

siigo_get_payment_receipt

Get a payment receipt by ID

read-only

siigo_create_payment_receipt

Create payment receipt (DebtPayment, AdvancePayment, Advanced)

siigo_update_payment_receipt

Update a payment receipt

siigo_delete_payment_receipt

Delete a payment receipt

destructive

Journals / Accounting Entries (3 tools)

Tool

Description

Annotations

siigo_get_journals

List accounting journals (comprobantes contables)

read-only

siigo_get_journal

Get a journal by ID

read-only

siigo_create_journal

Create journal entry (debits must equal credits)

Webhooks (4 tools)

Tool

Description

Annotations

siigo_get_webhooks

List webhook subscriptions

read-only

siigo_create_webhook

Subscribe to a webhook event

siigo_update_webhook

Update a webhook subscription

siigo_delete_webhook

Delete a webhook subscription

destructive

Catalogs (13 tools + account groups above)

Tool

Description

siigo_get_document_types

Document types (FV, RC, NC, FC, CC, RP, C, DS)

siigo_get_taxes

Taxes (IVA, Retefuente, ReteIVA, ReteICA, etc.)

siigo_get_payment_types

Payment methods

siigo_get_cost_centers

Cost centers

siigo_get_users

Users/sellers

siigo_get_warehouses

Warehouses

siigo_get_price_lists

Price lists (up to 12)

siigo_get_cities

Colombian cities

siigo_get_expenses

Expenses for cash receipt adjustments

siigo_get_misc_income

Miscellaneous income concepts for cash receipts

siigo_get_id_types

Identification types

siigo_get_fiscal_responsibilities

Fiscal responsibilities

siigo_get_fixed_assets

Fixed assets

Reports (3 tools)

Tool

Description

siigo_get_trial_balance

Trial balance report (Excel)

siigo_get_trial_balance_by_third

Trial balance by third party (Excel)

siigo_get_accounts_payable

Accounts payable report

Document Types Reference

Code

Spanish Name

English Name

MCP Support

FV

Factura de Venta

Sales Invoice

Full CRUD + PDF/XML/Email/Batch/Annul

RC

Recibo de Caja

Cash Receipt

Create + Query

NC

Nota Credito

Credit Note

Create + Query + PDF

FC

Factura de Compra

Purchase Invoice

Full CRUD

CC

Comprobante Contable

Accounting Journal

Create + Query

RP

Recibo de Pago/Egreso

Payment Receipt

Full CRUD

C

Cotizacion

Quotation

Full CRUD

Example Usage

Create a Quotation

{
  "name": "siigo_create_quotation",
  "arguments": {
    "quotation": {
      "document": { "id": 12345 },
      "date": "2026-02-13",
      "customer": { "identification": "13832081", "branch_office": 0 },
      "seller": 629,
      "items": [{
        "code": "PROD001",
        "quantity": 5,
        "price": 50000,
        "taxes": [{ "id": 13156 }]
      }]
    }
  }
}

Create a Combo Product

{
  "name": "siigo_create_product",
  "arguments": {
    "product": {
      "code": "COMBO-001",
      "name": "Kit de oficina",
      "account_group": 1253,
      "type": "Combo",
      "components": [
        { "code": "PROD-001", "quantity": 2 },
        { "code": "PROD-002", "quantity": 1 }
      ]
    }
  }
}

Create a Healthcare Invoice

{
  "name": "siigo_create_invoice",
  "arguments": {
    "invoice": {
      "document": { "id": 24446 },
      "date": "2026-02-13",
      "customer": { "identification": "13832081" },
      "seller": 629,
      "items": [{ "code": "SRV001", "quantity": 1, "price": 150000 }],
      "payments": [{ "id": 5636, "value": 150000 }],
      "healthcare_company": {
        "operation_type": "SS-CUFE",
        "period_start": "2026-01-01",
        "period_end": "2026-01-31"
      }
    }
  }
}

Create Batch Invoices

{
  "name": "siigo_create_invoice_batch",
  "arguments": {
    "notification_url": "https://myapp.com/webhooks/siigo-batch",
    "invoices": [
      {
        "idempotency_key": "INV202602001",
        "document": { "id": 24446 },
        "date": "2026-02-13",
        "customer": { "identification": "13832081" },
        "seller": 629,
        "items": [{ "code": "PROD001", "quantity": 1, "price": 50000 }],
        "payments": [{ "id": 5636, "value": 50000 }]
      }
    ]
  }
}

API Rate Limits

  • Production: 100 requests per minute per company

  • Sandbox: 10 requests per minute

The server uses a 120-second HTTP timeout as recommended by Siigo for long-running operations.

Error Handling

The server handles Siigo API errors and returns structured error responses with error codes, messages, and details. See the Siigo API docs for a full list of error codes.

Development

Project Structure

siigo-mcp/
├── src/
│   ├── index.ts          # MCP server - tool registration with Zod schemas
│   ├── siigo-client.ts   # HTTP client for all Siigo API endpoints
│   └── types.ts          # Full TypeScript interfaces for all document types
├── dist/                 # Compiled output (ESM)
├── package.json
├── tsconfig.json
├── CHANGELOG.md
└── README.md

Building

npm run build

Running for Development

npm run dev

Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Run npm run build to verify

  5. Submit a pull request

License

MIT License

Support

Available Tools

44 tools
siigo_get_account_groupsGet Account GroupsA
Read-only

Get inventory classification groups (account groups) catalog

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows it's safe and non-destructive. The description adds 'catalog', which implies a list of items, but does not disclose further behavioral traits like pagination or output format. With annotations covering the key safety profile, a 3 is appropriate.

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, front-loaded, with no wasted words. It efficiently conveys the tool's purpose.

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

Completeness5/5

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

For a simple catalog retrieval with no parameters and annotations covering safety, the description is complete. It tells the agent exactly what the tool does, and no additional context is necessary.

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

Parameters4/5

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

There are no parameters, and the schema coverage is 100% (empty). The description does not need to add parameter details. Baseline for 0 parameters is 4.

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 the inventory classification groups (account groups) catalog. The verb 'Get' and the specific resource 'account groups' are explicit, and it distinguishes from siblings like siigo_get_warehouses or siigo_get_products.

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 provides no explicit usage guidance or mention of alternatives. However, given the tool has no parameters and is a simple catalog retrieval, the implied use case is straightforward, but it lacks when-not-to-use or context for when to choose this over other catalog tools.

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

siigo_get_accounts_payableGet Accounts PayableC
Read-only

Get accounts payable report

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
page_sizeNoNumber of items per page

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false, but the description adds no behavioral context (e.g., pagination behavior, data freshness, or output format).

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 (6 words) but lacks substantive guidance. It is not wasteful, but it is too minimal to be fully effective.

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?

Without an output schema, the description should explain what the report contains, but it does not. The tool also lacks contextual info among many similar reporting tools.

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 descriptions are clear. The tool description adds no additional parameter context, 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.

Purpose3/5

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

The description 'Get accounts payable report' clearly identifies the verb and resource, but it's vague (what kind of report?) and does not distinguish from siblings like siigo_get_invoices or siigo_get_expenses.

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, nor any prerequisites or exclusions.

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

siigo_get_citiesGet CitiesA
Read-only

Get cities catalog (Colombian cities with country/state/city codes)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, indicating a safe read operation. The description adds context about the content (Colombian cities with codes) but does not disclose additional behavioral traits like pagination or filtering. With annotations covering the safety profile, a 3 is appropriate.

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, front-loaded with the action 'Get cities catalog'. Every word earns its place.

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

Completeness4/5

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

Despite no output schema, the description adequately explains what the tool returns (Colombian cities with codes). For a simple catalog lookup, this is complete enough for an agent to understand the result.

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

Parameters4/5

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

Tool has zero parameters, so baseline score is 4. No parameter information needed beyond what the schema already provides (none).

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 gets cities catalog and specifies it's Colombian cities with country/state/city codes. This verb+resource combination is specific and distinguishes it from sibling tools which are about invoices, products, etc.

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 vs alternatives, but there are no direct alternatives for city catalog among siblings. The description implies its use for obtaining city data without providing context or exclusions.

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

siigo_get_cost_centersGet Cost CentersB
Read-only

Get cost centers catalog

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety. The description adds no extra behavioral context but is consistent. With annotations, 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?

Single sentence with no redundant information. Every word earns its place; it is appropriately sized for a simple catalog retrieval.

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 exists, and the description does not specify return format (e.g., list of objects with id/name). While annotations cover safety, missing output details reduces completeness for a tool with no parameters.

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

Parameters4/5

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

No parameters exist; schema coverage is 100% by default. The description is not needed for parameter semantics, and baseline for 0 parameters is 4.

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

Purpose4/5

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

The description 'Get cost centers catalog' clearly identifies the action (Get) and resource (cost centers catalog). It distinguishes from sibling tools by naming a specific entity, but could be more precise by stating it returns a list.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like siigo_get_cities or siigo_get_account_groups. The description only states the action without 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.

siigo_get_credit_noteGet Credit NoteB
Read-only

Get a specific credit note by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCredit note ID

TDQS

B3.3/5.0
Behavior3/5

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

The description correctly implies a read-only operation, matching the annotations (readOnlyHint: true, destructiveHint: false). However, it adds no additional behavioral context, such as error conditions or ID format requirements. With annotations already covering safety, a score of 3 is appropriate.

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 unnecessary words. It is front-loaded and efficiently communicates the tool's core 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 retrieval tool with one parameter and annotations present, the description is minimally complete. However, it lacks information about the return value (what fields are included), which would be helpful for agent decision-making. Given the complexity, a score of 3 is fair.

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% described coverage (the 'id' parameter has a description). The tool description merely repeats 'by ID' without adding formatting, validation, or source details. Baseline 3 is correct as the schema does the heavy lifting.

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 retrieves a specific credit note by ID. The verb 'Get' and resource 'credit note' are explicit, and the phrase 'specific' distinguishes it from sibling tools like siigo_get_credit_notes that likely list all credit notes. However, it does not explicitly contrast with other 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 on when to use this tool versus alternatives. For example, it does not mention that siigo_get_credit_notes is for listing, or that siigo_get_credit_note_pdf is for PDF retrieval. The agent must infer usage from names alone.

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

siigo_get_credit_note_pdfGet Credit Note PDFB
Read-only

Get credit note PDF as base64

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCredit note ID

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already indicate a safe read operation (readOnlyHint=true, destructiveHint=false). The description adds that the output is base64-encoded PDF, which is useful, but it does not disclose potential error handling, response structure (e.g., whether the base64 is wrapped in a JSON field), or size limitations.

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 concise (one sentence) and front-loaded with the key information. However, it lacks structure (e.g., bullet points) and could be slightly more detailed without sacrificing brevity.

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 low complexity (one input, no output schema), the description is minimal but arguably adequate. However, the lack of output schema places burden on the description to clarify the response format; stating 'as base64' is vague, and the agent has no certainty about the JSON 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?

The input schema covers 100% of parameters, including a description for the single 'id' parameter. The tool description does not add any additional meaning or context beyond what the schema 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.

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 ('credit note PDF'), and the output format ('as base64'), effectively distinguishing it from sibling tools like siigo_get_credit_note (which returns JSON data) and siigo_get_invoice_pdf (different document type).

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. The description does not mention prerequisites (e.g., having the credit note ID) or typical use cases, leaving the agent without context for selection among similar 'get' tools.

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

siigo_get_credit_notesGet Credit NotesB
Read-only

Get list of credit notes from Siigo

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
page_sizeNoNumber of items per page

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds no behavioral context beyond 'list', such as pagination behavior or response structure. With annotations covering safety, the description is adequate but not enriched.

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 with no waste. It is front-loaded with the key action and resource. For a simple list tool, this is appropriately concise.

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

Completeness3/5

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

Given the tool's simplicity, presence of annotations, and complete schema, the description is minimally sufficient. However, it lacks details on pagination behavior, such as default page size or total count, which would enhance completeness for 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?

The input schema has 100% coverage with descriptions for 'page' and 'page_size' (page number, number of items per page). The description does not add any additional semantics beyond what the schema provides, meeting the baseline expectation.

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 list of credit notes from Siigo', specifying the action and resource. Sibling tools include siigo_get_credit_note (singular) and siigo_get_credit_note_pdf, which suggests this tool is for listing, but the description does not explicitly differentiate it.

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 siigo_get_credit_note (for a single note). There is no context on prerequisites, such as requiring a customer ID or date range, nor 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.

siigo_get_customerGet CustomerA
Read-only

Get a specific customer by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCustomer ID

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds no additional behavioral context beyond what is obvious 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?

Extremely concise (5 words), front-loaded, and no extraneous 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 tool's simplicity (1 required param, no output schema), the description is largely adequate, though it could mention potential errors or return format.

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

Parameters3/5

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

Schema coverage is 100% with the 'id' parameter described as 'Customer ID'. The description adds no new meaning beyond 'by ID'.

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 customer by ID' uses a specific verb and resource, and clearly distinguishes from sibling tools like 'siigo_get_customers' (list all) and 'siigo_search_customers' (search).

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 when you have a specific ID, but no explicit guidance on when not to use it or alternatives for listing/searching customers.

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

siigo_get_customersGet CustomersB
Read-only

Get list of customers from Siigo

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
typeNoCustomer type filter
page_sizeNoNumber of items per page

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. However, the description adds no additional behavioral context such as pagination behavior, sorting defaults, or any side effects.

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

Conciseness5/5

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

The description is a single sentence with no redundant or unnecessary information. It is concise and front-loaded.

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 is a simple list operation with full schema coverage and annotations, the description is adequate but minimal. It could mention pagination or default behavior to be more complete, but it is not insufficient.

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

Parameters3/5

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

Schema description coverage is 100% with each parameter having a description. The tool description does not add additional meaning beyond what the schema already provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Get' and resource 'list of customers'. It is specific and distinguishes from sibling tools like siigo_get_customer (singular) and siigo_search_customers (search vs list).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool vs alternatives such as siigo_search_customers or siigo_get_customer. No usage context or exclusions are mentioned.

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

siigo_get_document_typesGet Document TypesA
Read-only

Get document types catalog. Filter by type: FV (sales invoice), RC (cash receipt), NC (credit note), FC (purchase invoice), CC (journal), RP (payment receipt), C (quotation), DS (purchase support document).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoDocument type filter

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, so the description doesn't need to repeat safety. It adds the filter behavior (enum values with meanings), which is consistent and provides useful context beyond annotations.

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

Conciseness5/5

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

Two sentences that front-load the main purpose and efficiently list filter options. 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?

For a simple catalog lookup with one optional parameter and no output schema, the description fully covers the tool's purpose and filtering capability.

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

Parameters5/5

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

Schema coverage is 100%, and the description expands each enum value with its meaning (e.g., 'FV (sales invoice)'), adding significant value beyond the schema's minimal description.

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

Purpose5/5

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

The description clearly states 'Get document types catalog' with specific verb and resource, and lists filter options, distinguishing it from sibling tools that retrieve different 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 implies usage for retrieving a catalog of document types with optional filtering. However, it doesn't explicitly state when to use this tool versus alternatives, but the context and sibling names make the purpose clear.

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

siigo_get_expensesGet ExpensesA
Read-only

Get expenses catalog used by cash receipt debt payment adjustments

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that this is a 'catalog' used for a specific process, providing mild behavioral context beyond the annotations. No contradictions.

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

Conciseness5/5

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

Single sentence with no fluff. Every word is meaningful. Highly 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 simple read-only behavior, the description adequately explains the tool's purpose and use case. It could mention the return format (list of expense items) but is not required since no output schema exists.

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

Parameters4/5

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

No parameters exist, so the description cannot add parameter-level detail. The baseline for zero parameters is 4. The description does not repeat schema info (which is empty).

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 retrieves an expenses catalog used for cash receipt debt payment adjustments. The verb 'get' and resource 'expenses catalog' are specific. It distinguishes from siblings like siigo_get_payment_receipts by specifying the catalog context, though not explicitly excluding other uses.

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 prerequisites, exclusions, or comparative context among the many similar get_ tools.

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

siigo_get_fiscal_responsibilitiesGet Fiscal ResponsibilitiesB
Read-only

Get fiscal responsibilities catalog

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds minimal context ('catalog') but does not elaborate on return behavior or limitations.

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 at five words, front-loading the key action and resource. However, it lacks any structural elements or supplementary details that might aid comprehension.

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

Completeness3/5

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

For a zero-parameter, read-only tool with good annotations, the description is adequate but minimal. It names the output ('catalog') but provides no details on format, contents, or usage context, which could be improved.

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

Parameters4/5

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

There are no parameters, so the schema coverage is trivially 100%. Per the calibration rules, a baseline of 4 is appropriate as the description does not need to add parameter details.

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 'Get' and the resource 'fiscal responsibilities catalog', specifying the tool's purpose. It is distinct from sibling tools that target different entities, though it does not differentiate further.

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. With many sibling tools, explicit context or exclusions would be helpful.

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

siigo_get_fixed_assetsGet Fixed AssetsB
Read-only

Get fixed assets catalog

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds 'catalog' but fails to disclose other behavioral traits such as pagination, filtering, or output specifics.

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 (4 words) and front-loaded with the verb. Every word is meaningful, though a bit more context could improve it without harming 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 simplicity (no parameters, no output schema, annotations cover safety), the description is minimally adequate. However, it does not specify the output format, whether the catalog is full or paginated, or any scoping details.

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

Parameters4/5

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

There are no parameters, so the description does not need to add parameter semantics. The baseline of 4 for zero parameters 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 (get) and resource (fixed assets catalog). It is specific and aligns with the tool name, but does not differentiate from sibling tools like siigo_get_products beyond the resource name.

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

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. It does not list prerequisites, exclusions, or context for when this tool is appropriate.

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

siigo_get_id_typesGet ID TypesB
Read-only

Get identification types catalog

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?

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds no behavioral context beyond what annotations provide. There is no contradiction, but the description does not add value for 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 is extremely concise with a single phrase that conveys the tool's purpose. It is front-loaded and contains no unnecessary 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 no parameters and no output schema, the description is minimal. It does not explain what the catalog contains or how results are structured. For a simple catalog retrieval, the description is adequate but lacks completeness for an agent to fully understand output expectations.

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

Parameters4/5

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

The input schema has no parameters (0 params, 100% coverage). Description adds no parameter info, but there are none to describe. Baseline for 0 parameters is 4, as the schema fully defines the parameter structure.

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 retrieves an identification types catalog. It uses a specific verb and resource, but among many sibling tools (e.g., siigo_get_document_types), it does not differentiate its purpose further. The name itself is reasonably distinctive.

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. With many sibling tools, such as siigo_get_document_types or siigo_get_fiscal_responsibilities, explicit usage context would be helpful but is missing.

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

siigo_get_invoiceGet InvoiceA
Read-only

Get a specific invoice by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInvoice ID

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's 'Get' aligns. However, the description adds no additional behavioral details (e.g., rate limits, authentication requirements, error handling). With annotations, the burden is lower, but the description merely restates the obvious.

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

Conciseness4/5

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

The description is a single, front-loaded sentence that communicates the essential action without any fluff. It earns its place but could arguably be slightly more detailed (e.g., mentioning the return type) while remaining concise.

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

Completeness3/5

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

Given the low complexity (1 param, no output schema, annotations present), the description is functional but minimal. It does not describe the response structure or any edge cases. While the annotations cover safety, the description could be more complete by specifying what 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?

The input schema has 100% coverage with a description for the 'id' parameter. The description does not add any extra meaning (e.g., format, length, examples). According to the guidelines, high schema coverage means a 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 'Get a specific invoice by ID', which includes a specific verb and resource. It distinguishes itself from sibling tools like 'siigo_get_invoices' (which likely lists multiple) and 'siigo_get_invoice_pdf', making its purpose 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 fetching a single invoice by ID, but it provides no explicit guidance on when to prefer this over alternatives (e.g., siigo_get_invoices for multiple invoices) or any prerequisites. The context is implied by the name and sibling set, but not spelled out.

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

siigo_get_invoice_pdfGet Invoice PDFA
Read-only

Get invoice PDF as base64

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInvoice ID

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds that the PDF is returned as base64, but does not disclose any other behavioral traits (e.g., file size limits, content details).

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 of 5 words, no fluff. It is front-loaded and efficiently conveys the core action and output format.

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

Completeness4/5

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

With one required parameter, no output schema, and comprehensive annotations, the description is mostly complete. It specifies the output format (base64), which is useful. Missing minor details like whether the PDF is the invoice document itself, but overall sufficient.

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

Parameters3/5

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

The input schema has 100% coverage for the single parameter 'id', which is described as 'Invoice ID'. The description does not add anything beyond that, so baseline 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 invoice PDF as base64' specifies the verb (get), resource (invoice PDF), and output format (base64). This clearly distinguishes it from sibling tools like siigo_get_invoice (returns invoice data) and siigo_get_invoice_xml (returns XML).

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. It does not mention when not to use it or compare with siblings like siigo_get_invoice or siigo_get_credit_note_pdf.

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

siigo_get_invoicesGet InvoicesC
Read-only

Get list of invoices from Siigo

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
page_sizeNoNumber of items per page
created_endNoEnd date filter (YYYY-MM-DD)
created_startNoStart date filter (YYYY-MM-DD)

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. However, the description adds no behavioral details beyond 'list', such as pagination behavior, default page size, or that the date parameters act as a range filter. Agents need to know that page and page_size control pagination; the description omits this.

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, which is concise but lacks structure. It states the purpose but does not use bullet points or highlight key features. It earns its place but could be more informative without being 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 no output schema and numerous sibling tools, the description should mention the response format (e.g., array of invoice objects) and differentiate from similar tools. The optional nature of all parameters and the default pagination are not addressed. The tool is simple but the description is incomplete for effective agent use.

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

Parameters3/5

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

Schema coverage is 100%, so all parameters are described with clear meanings (e.g., 'Page number', 'Start date filter (YYYY-MM-DD)'). The description adds no additional semantic value 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.

Purpose4/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 list of invoices from Siigo. However, it does not distinguish from the sibling tool 'siigo_get_invoice' (singular) which likely retrieves a single invoice, nor from other list tools like 'siigo_get_credit_notes'. The verb 'Get' and resource 'list of invoices' are specific enough for a basic purpose.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as 'siigo_get_invoice' for a single invoice or other list tools. There is no mention of the optional filters (created_start, created_end) or pagination, leaving the agent to infer usage from the schema alone.

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

siigo_get_invoice_stamp_errorsGet Invoice DIAN ErrorsA
Read-only

Get DIAN rejection errors for an invoice that failed electronic stamping

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInvoice ID

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds the specific purpose (getting DIAN errors) but does not elaborate on any other behavioral aspects like required permissions or output details. It does not contradict annotations.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the purpose. No extraneous words or repetition; every word is necessary.

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 low complexity (one parameter, no output schema) and the presence of annotations, the description adequately conveys the tool's purpose and usage context. It lacks details about the error structure but is sufficient for selecting and using the tool correctly in most scenarios.

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

Parameters3/5

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

Schema description coverage is 100%: the only parameter 'id' is described as 'Invoice ID' in the schema. The description does not add further semantics beyond indicating the invoice is the one that failed stamping. Since the schema already documents the parameter, the description adds marginal value.

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 DIAN rejection errors for invoices that failed electronic stamping. It uses a specific verb ('Get') and resource ('DIAN rejection errors'), and the context distinguishes it from other sibling 'get' tools that focus on different entities (e.g., invoices, customers).

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

Usage Guidelines4/5

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

The description implies usage when an invoice fails electronic stamping ('for an invoice that failed electronic stamping'), providing clear context. However, it does not explicitly state when not to use it or mention alternative tools for handling successful stamps or other error types.

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

siigo_get_invoice_xmlGet Invoice XMLA
Read-only

Get invoice electronic XML as base64

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInvoice ID

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, indicating a safe read operation. The description adds that the output is base64-encoded XML, which is useful behavioral detail beyond annotations. However, it does not disclose potential rate limits, size constraints, or error scenarios.

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 is front-loaded with the core action and output format. Every word serves a purpose with no redundancy.

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

Completeness4/5

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

For a tool with low complexity (one parameter, no output schema), the description sufficiently conveys the purpose and output format. It could optionally mention that the base64 string represents the XML content, but the current text is adequate for an agent to understand the result.

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

Parameters3/5

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

Schema coverage is 100% with one parameter 'id' described as 'Invoice ID'. The description does not add additional meaning or constraints 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 clearly states the tool retrieves the electronic XML of an invoice in base64 format. It uses a specific verb ('Get') and resource ('invoice electronic XML'), and the output format distinguishes it from sibling tools like siigo_get_invoice (likely JSON) and siigo_get_invoice_pdf (PDF).

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 obtaining XML data, but provides no explicit guidance on when to use this tool versus alternatives such as siigo_get_invoice (JSON) or siigo_get_invoice_pdf (PDF). It lacks context about prerequisites or exclusions.

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

siigo_get_journalGet JournalA
Read-only

Get a specific accounting journal by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesJournal ID

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety. The description adds no additional behavioral context (e.g., authentication, rate limits). It does not contradict annotations.

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

Conciseness5/5

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

The description is a single concise sentence that front-loads the core purpose. Every word is necessary and contributes to clarity, with no extraneous 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 tool's low complexity (single required parameter, no output schema), the description is adequate. It could optionally describe the return value, but the action is straightforward.

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 description of parameter 'id' in the schema is sufficient. The tool description does not add further meaning beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the verb 'Get' and resource 'accounting journal', and specifies the unique identifier criterion 'by ID'. This distinguishes it from sibling tools like 'siigo_get_journals' which likely retrieves a list.

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

Usage Guidelines4/5

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

The description implicitly guides usage: when you have a specific journal ID, use this tool; for a list, use 'siigo_get_journals'. However, it does not explicitly mention alternatives 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.

siigo_get_journalsGet JournalsB
Read-only

Get list of accounting journals (comprobantes contables) from Siigo

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
page_sizeNoNumber of items per page

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, establishing safe read behavior. The description adds that it returns a list of journals, but does not disclose pagination behavior or response format beyond what the schema implies. With annotations covering safety, the description adds modest value.

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. However, it is minimal and could be slightly more informative without sacrificing brevity. Front-loads the key 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 list tool with 2 optional parameters and no output schema, the description is adequate. However, given many siblings, it could mention that this returns a paginated list and possibly note the relationship to siigo_get_journal. It is minimally complete but leaves gaps for an 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?

Schema coverage is 100% (both page and page_size have full descriptions). The description does not add additional meaning such as defaults, maximums, or formatting hints. Baseline 3 is appropriate.

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

Purpose4/5

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

The description uses a specific verb 'Get' and identifies the resource as 'accounting journals (comprobantes contables) from Siigo'. This clearly states what the tool does, but does not explicitly differentiate from the sibling tool siigo_get_journal (singular) which is implied by 'list' but not stated.

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 vs alternatives like siigo_get_journal (for a single journal) or other list tools. The description lacks context for selection among siblings.

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

siigo_get_misc_incomeGet Misc IncomeA
Read-only

Get miscellaneous income concepts used by MiscIncome cash receipts

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds no additional behavioral context (e.g., auth needs, rate limits) beyond confirming a read operation.

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

Conciseness5/5

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

Single sentence, no filler, directly states purpose and context. Every word is necessary.

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

Completeness5/5

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

For a tool with zero parameters and no output schema, the description fully specifies what is retrieved and its use case, making it 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?

There are no parameters, so baseline is 4. The description adds meaning by specifying that the tool returns 'miscellaneous income concepts used by MiscIncome cash receipts'.

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 retrieves 'miscellaneous income concepts' and specifies their usage context ('used by MiscIncome cash receipts'), distinguishing it from other get tools for different 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 implies usage when working with MiscIncome cash receipts, but does not explicitly state when not to use or list alternatives among siblings.

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

siigo_get_payment_receiptGet Payment ReceiptA
Read-only

Get a specific payment receipt by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPayment receipt ID

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds no additional behavioral context beyond the verb 'Get', which is consistent. No contradictions.

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

Conciseness5/5

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

Single sentence with no unnecessary words or structure. Every word is essential.

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 retrieval tool with one required parameter and no output schema, the description is nearly complete. It could optionally mention what the receipt contains, but not necessary.

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 'id' with description 'Payment receipt ID' at 100% coverage. The description's 'by ID' adds no new meaning 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's action ('Get') and specific resource ('payment receipt') with the qualifier 'by ID', which distinguishes it from sibling tools like siigo_get_payment_receipts that likely list multiple items.

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 you have a specific payment receipt ID, but lacks explicit guidance on when to use this tool vs. alternatives like siigo_get_payment_receipts, or any prerequisites or context.

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

siigo_get_payment_receiptsGet Payment ReceiptsB
Read-only

Get list of payment receipts / disbursements (recibos de pago / comprobantes de egreso) from Siigo

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
page_sizeNoNumber of items per page

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already indicate a safe read operation (readOnlyHint=true, destructiveHint=false). The description adds that it returns a list, but no additional behavioral details are provided beyond what annotations cover.

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 that includes both English and Spanish terminology. It is appropriately front-loaded and avoids unnecessary verbosity.

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 retrieval tool with two parameters and no output schema, the description is sufficiently complete. It states the purpose and key terms, though it could mention pagination 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% and both parameters (page, page_size) are already described in the schema. The description adds no extra meaning or constraints 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 tool retrieves a list of payment receipts/disbursements, with Spanish terms for clarity. While it implicitly distinguishes from the singular sibling 'siigo_get_payment_receipt' through plural naming, it could explicitly note that this tool returns multiple items.

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 'siigo_get_payment_receipt' for a single receipt or search tools. The description does not provide context for selection.

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

siigo_get_payment_typesGet Payment TypesA
Read-only

Get payment types catalog. Filter by document_type to get applicable payment methods.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_typeNoDocument type filter (FV, NC, RC, etc.)

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds minimal behavioral context beyond stating it is a catalog and filterable. It does not describe pagination, return format, or any side effects.

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

Conciseness5/5

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

The description consists of two short sentences that immediately convey the tool's purpose and key functionality. No words are wasted, and the structure is optimal for quick parsing.

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

Completeness4/5

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

For a simple read-only catalog tool with one optional parameter and no output schema, the description is mostly complete. It covers the purpose and filter usage. However, it could explicitly state that the tool returns a list of payment types to fully set expectations.

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% (the parameter has a description), so baseline is 3. The description adds value by explaining that filtering by document_type yields 'applicable payment methods', which clarifies the parameter's effect beyond the schema's simple enumeration of examples.

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 retrieves a payment types catalog, which is a specific resource. It also mentions the filtering capability, distinguishing it from siblings that retrieve other entities like accounts, cities, etc. However, it does not explicitly state that it returns a list, which could be more precise.

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. It only explains how to filter, but does not mention when not to use it or suggest other tools. Given the large set of sibling tools, this omission hinders correct selection.

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

siigo_get_price_listsGet Price ListsB
Read-only

Get price lists catalog (up to 12 price lists)

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?

Annotations already indicate read-only nature. Description adds that up to 12 price lists are returned, but does not disclose pagination or full result limit behavior.

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

Conciseness5/5

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

Extremely concise single sentence that is front-loaded and contains no unnecessary 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 no output schema or parameters, the description is minimally adequate but lacks details on the structure of price lists or how to handle the limit. Could be more 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?

Input schema has no parameters, so description does not need to add parameter info. The mention of 'up to 12' is a behavioral constraint, not parameter-related. Baseline score of 4 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?

Description clearly states it retrieves the price lists catalog with a limit of 12. It is distinct from sibling tools which focus on 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 explicit guidance on when to use this tool vs alternatives. It is implied for retrieving price lists but lacks context on scenarios or exclusions.

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

siigo_get_productGet ProductA
Read-only

Get a specific product by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProduct ID

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds no additional behavioral context (e.g., error handling, permissions, rate limits). Adequate but no extra value.

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

Conciseness5/5

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

One sentence, no unnecessary words. Front-loaded with core 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?

Tool is simple (1 param, no output schema). Description is minimally complete but could mention return format or error scenarios. Lacks context about what the response 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 has 100% description coverage for the single parameter 'id'. The tool description does not add any meaning 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?

Description clearly states verb 'Get', resource 'specific product', and method 'by ID'. It distinguishes from siblings like 'siigo_get_products' and 'siigo_search_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 this tool versus alternatives. No mention of prerequisites or when not to use.

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

siigo_get_productsGet ProductsC
Read-only

Get list of products from Siigo

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
page_sizeNoNumber of items per page

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description does not add further behavioral details (e.g., rate limits, response structure). It does not contradict annotations.

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

Conciseness3/5

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

The description is a single sentence, which is concise but lacks important context such as pagination or result format. It is not overly verbose but could be more informative without becoming lengthy.

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 list tool with pagination, the description should mention pagination and how results are returned. Absent output schema, the description bears the burden of explaining what the agent can expect. It fails to do so, and does not clarify when to use this list versus search.

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 'page' and 'page_size'. The description does not add any additional meaning beyond the schema, 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 'Get list of products from Siigo', indicating the action (get list) and resource (products). It is specific enough to distinguish from 'siigo_get_product' (single product) but does not explicitly differentiate from 'siigo_search_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 this tool versus alternatives like siigo_get_product or siigo_search_products. No prerequisites or context for filtering or pagination behavior.

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

siigo_get_purchaseGet PurchaseA
Read-only

Get a specific purchase invoice by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPurchase ID

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, indicating a safe read operation. The description adds context by specifying 'purchase invoice' but does not disclose additional behavioral traits such as authentication needs, rate limits, 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.

Conciseness5/5

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

The description is a single, front-loaded sentence with zero wasted words. It efficiently conveys the tool's action and target 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 get-by-ID tool with one parameter and no output schema, the description is sufficient to understand the core purpose. However, it could mention what is returned (e.g., invoice details) for completeness, but given the tool's simplicity, it is 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 a single parameter 'id' described as 'Purchase ID'. The description does not add extra meaning beyond the schema, 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.

Purpose5/5

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

The description uses a specific verb 'Get' and clarifies the resource as a 'specific purchase invoice', which clearly distinguishes it from sibling tools like siigo_get_purchases (list all) and other invoice-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 (e.g., siigo_get_purchases for listing, siigo_get_purchase_support_document for support documents). The description lacks contextual cues for selection.

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

siigo_get_purchasesGet PurchasesB
Read-only

Get list of purchase invoices (facturas de compra) from Siigo

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
page_sizeNoNumber of items per page

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already indicate read-only and non-destructive behavior. The description adds no additional behavioral traits beyond stating it retrieves a list, which is consistent with annotations.

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

Conciseness4/5

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

Single sentence, minimal fluff. Could be slightly more informative but efficient for its 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?

No output schema; description lacks details on return format, pagination behavior, or what data is included. Insufficient for an agent to fully understand the tool's output.

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 parameters (page, page_size). Description adds no extra meaning or usage hints beyond what's in 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?

Description clearly states the tool gets a list of purchase invoices, using a specific verb and resource. It distinguishes from the sibling 'siigo_get_purchase' (singular) by implying it returns multiple items, though it lacks 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 versus alternatives like siigo_get_expenses or siigo_get_invoices. No context on prerequisites or exclusions.

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

siigo_get_purchase_support_documentGet Purchase Support DocumentA
Read-only

Get a specific purchase support document by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPurchase support document ID

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so description adds no new behavioral context beyond the retrieval action. No mention of errors, authentication, or side effects, but annotations provide safety profile.

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

Conciseness4/5

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

Single sentence, front-loaded with action, no wasted words. Could add a note about return format, but still 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?

For a simple get-by-ID tool with full schema coverage and annotations, description adequately covers purpose and usage. Lacks output schema but not required; completeness is sufficient.

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

Parameters3/5

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

Schema covers 100% of parameters with description 'Purchase support document ID'. Description adds no meaning beyond the schema, earning baseline 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?

Description clearly states verb 'Get', resource 'purchase support document', and qualification 'by ID'. It distinguishes from sibling 'siigo_get_purchase_support_documents' which likely returns a list.

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

Usage Guidelines3/5

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

No explicit when/when-not guidance, but the name and schema imply usage for retrieving a single document by ID. Compared to siblings, context is implied rather than stated.

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

siigo_get_purchase_support_documentsGet Purchase Support DocumentsB
Read-only

Get list of purchase support documents (documentos soporte) from Siigo

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
page_sizeNoNumber of items per page

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description only repeats the read-only nature without adding any additional behavioral context such as pagination behavior, rate limits, or performance characteristics. It does not contradict annotations.

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

Conciseness5/5

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

The description is a single concise sentence that front-loads the verb and resource. No waste, every word contributes to 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 the tool has no output schema, the description should explain what the list contains or how pagination works. It lacks completeness for a list-retrieval tool, leaving the agent without key usage details.

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

Parameters3/5

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

Schema coverage is 100% with both parameters (page, page_size) having descriptions. The description does not add any extra meaning beyond what the schema 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.

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 'list of purchase support documents', and includes the Spanish term for clarity. It distinguishes from the sibling siigo_get_purchase_support_document which retrieves a single document, as hinted by the plural vs singular naming.

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 vs alternatives like siigo_get_purchases or other list tools. No context about use cases or exclusions is given.

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

siigo_get_quotationGet QuotationA
Read-only

Get a specific quotation by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesQuotation ID

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare this as read-only (readOnlyHint: true) and non-destructive (destructiveHint: false), so the safety profile is clear. The description adds no extra behavioral context, such as error handling, response format, or performance implications. It meets the baseline but does not exceed it.

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 superfluous words. It front-loads the core action and resource, making it immediately useful for an agent scanning tool definitions.

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

Completeness4/5

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

Given the tool's simplicity (one required parameter, no output schema, no nested objects), the description adequately defines the core purpose. However, it could be slightly more complete by noting what the response contains (e.g., 'returns the full quotation object') or how errors are handled. The absence of output schema shifts some burden to the description, but the current minimalism is nearly sufficient for a straightforward retrieval tool.

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

Parameters3/5

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

The input schema has 100% description coverage for the single parameter 'id', which is described as 'Quotation ID'. The tool description does not add any additional meaning or format details beyond the schema. With high coverage, the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description 'Get a specific quotation by ID' clearly states the verb (get), the resource (quotation), and the scope (specific by ID). It distinguishes itself from sibling tools like 'siigo_get_quotations' which likely lists multiple quotations, making the purpose unambiguous.

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

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. It does not mention prerequisites, such as needing a valid quotation ID, nor does it differentiate from similar 'get' tools like 'siigo_get_quotations' or 'siigo_get_invoice'. No context about when to prefer this over others is given.

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

siigo_get_quotationsGet QuotationsB
Read-only

Get list of quotations (cotizaciones) from Siigo

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
page_sizeNoNumber of items per page
created_endNoEnd date filter (YYYY-MM-DD)
created_startNoStart date filter (YYYY-MM-DD)

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is clear. Description adds no extra behavioral context (e.g., pagination, date range behavior, rate 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?

Single sentence with no wasted words. Front-loaded with key action (Get list) and domain context (cotizaciones).

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 read-only list tool, description is adequate but lacks mention of pagination or returned data structure (no output schema). Could be more complete.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are already documented. Description does not add additional meaning beyond what schema provides, meeting baseline.

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

Purpose4/5

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

Description clearly states 'Get list of quotations' with verb+resource. Differentiates from sibling 'siigo_get_quotation' (singular) by noting list vs individual.

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 siigo_get_quotation for a single quotation. No exclusion criteria or usage context provided.

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

siigo_get_taxesGet TaxesA
Read-only

Get taxes catalog (IVA, Retefuente, ReteIVA, ReteICA, Impoconsumo, AdValorem, Autorretencion)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety. The description adds value by listing the tax types returned, but no additional behavioral traits beyond what annotations imply.

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 main action, and includes a helpful parenthetical list. No unnecessary 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?

Given no parameters, annotations present, and no output schema, the description fully informs the agent of what the tool returns. No gaps identified.

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

Parameters4/5

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

The input schema has zero parameters, so schema coverage is 100%. With no parameters, the description need not add parameter meaning; baseline is 4.

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 'taxes catalog', listing specific tax types (IVA, Retefuente, etc.), distinguishing it from sibling tools like siigo_get_cities or siigo_get_document_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 explicit guidance is given on when to use this tool versus alternatives. While the purpose is clear, there are no usage context, exclusions, or alternative tool references.

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

siigo_get_trial_balanceGet Trial BalanceB
Read-only

Generate trial balance report (Excel). Uses POST as per Siigo API spec.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYesYear
month_endYesEnding month (1-13)
account_endNoEnding account code
month_startYesStarting month (1-13)
account_startNoStarting account code
includes_tax_differenceYesInclude tax differences

TDQS

B3.3/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=true and destructiveHint=false, so the tool is safe and read-only. The description adds that it uses POST, which is a behavioral detail. However, it does not explain why POST is used for a read operation or disclose any other traits like rate limits or response size.

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 short sentences. It front-loads the purpose (Generate trial balance report) and adds a necessary behavioral note (uses POST). No redundant information.

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

Completeness3/5

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

The tool has no output schema, and the description only mentions the output format (Excel). It does not describe what the Excel report contains, how errors are handled, or any pagination or limitations. For a tool with 6 parameters, this is adequate but not thorough.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already documented. The description does not add any additional meaning or usage context for the required or optional parameters, so it meets the baseline.

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

Purpose4/5

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

The description clearly states the tool generates a trial balance report in Excel format. It includes the HTTP method (POST) as a behavioral note. However, it does not differentiate from the sibling tool 'siigo_get_trial_balance_by_third', which likely has a similar purpose.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'siigo_get_trial_balance_by_third'. There is no mention of prerequisites, limitations, or context-specific usage.

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

siigo_get_trial_balance_by_thirdGet Trial Balance by ThirdB
Read-only

Generate trial balance by third party report (Excel). Uses POST as per Siigo API spec.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYesYear
customerNoCustomer filter
month_endYesEnding month (1-13)
account_endNoEnding account code
month_startYesStarting month (1-13)
account_startNoStarting account code
includes_tax_differenceYesInclude tax differences

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds limited behavioral context. It mentions the POST method, which is a minor technical detail but does not contradict annotations.

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

Conciseness5/5

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

Extremely concise: two sentences covering purpose, output format, and HTTP method. No unnecessary information, earning a perfect score for efficiency.

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 complexity (7 parameters, nested objects, no output schema), the description is too minimal. It fails to explain the report's structure, filtering nuances, or how date parameters work, leaving the agent under-informed.

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 describes all parameters. The description adds no additional semantic clarification beyond what the schema provides.

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

Purpose4/5

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

The description clearly states it generates a trial balance by third party report in Excel format, distinguishing it from the sibling tool 'siigo_get_trial_balance' by specifying 'by third'. However, the exact meaning of 'by third' could be more explicit.

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 'siigo_get_trial_balance'. No when-to-use or when-not-to-use instructions are provided.

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

siigo_get_usersGet UsersB
Read-only

Get users/sellers catalog

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already provide readOnlyHint=true and destructiveHint=false. The description adds no additional behavioral details like pagination, rate limits, or data freshness.

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?

Extremely concise: a single phrase with no redundant words. Every word earns its place.

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

Completeness2/5

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

No output schema, so description should explain return values. It only says 'Get users/sellers catalog', leaving the structure and content of the response unclear. More context needed for a complete understanding.

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, so schema coverage is 100%. The description adds no parameter info, but baseline for 0 params is 4. It could explain what 'users/sellers catalog' means, but not required for this dimension.

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 users/sellers catalog' clearly indicates the tool retrieves user/seller data. It distinguishes itself among sibling 'get_*' tools by specifying the resource, though 'catalog' is slightly ambiguous.

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 context about prerequisites or exclusions.

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

siigo_get_voucherGet VoucherA
Read-only

Get a specific voucher / cash receipt by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesVoucher ID

TDQS

A4/5.0
Behavior3/5

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

Annotations (readOnlyHint=true, destructiveHint=false) already indicate this is a safe read operation. The description adds 'Get' which aligns but provides no additional behavioral details such as error handling or response format. It does not contradict annotations.

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

Conciseness5/5

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

The description is a single sentence with no superfluous words. Every element (verb, resource, identifier) is necessary and front-loaded.

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

Completeness4/5

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

The tool is simple with one parameter and no output schema. The description is sufficient for a get-by-ID operation. Sibling tools show clear resource differentiation, so completeness is high.

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 'id' described as 'Voucher ID'. The description adds 'by ID' but no further meaning. With high coverage, baseline is 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 a specific voucher / cash receipt by ID' uses a specific verb ('Get') and resource ('voucher / cash receipt') with clear identification method ('by ID'). This distinguishes it from sibling tools like siigo_get_vouchers (plural, listing all) and other specific 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 Guidelines4/5

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

The description implies usage when you have a specific ID, and the sibling tools provide context for alternatives (e.g., siigo_get_vouchers for listing). However, it does not explicitly state when not to use this tool or mention any exclusions.

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

siigo_get_vouchersGet VouchersA
Read-only

Get list of vouchers / cash receipts (recibos de caja) from Siigo

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
page_sizeNoNumber of items per page

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's 'Get list' is consistent but adds no extra behavioral context (e.g., pagination limits, authentication needs, or rate 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?

Single sentence with no waste, front-loading the action and resource. Every word earns its place.

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

Completeness4/5

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

For a simple paginated list with 2 parameters and clear annotations, the description is sufficient. Lack of output schema is not a gap here given the tool's straightforward nature.

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 page and page_size. The description does not add extra meaning beyond what the schema provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool retrieves a list of vouchers/cash receipts from Siigo, with a specific verb and resource. It distinguishes from siblings like siigo_get_voucher (single item) and other entity-fetching 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 such as siigo_get_expenses or siigo_get_invoices. Missing context on filtering, date ranges, or prerequisites.

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

siigo_get_warehousesGet WarehousesC
Read-only

Get warehouses catalog

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds no new behavioral context. It does not contradict annotations, but the description alone provides no additional detail about behavior, rate limits, or authorization.

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 of four words is extremely concise and front-loaded. However, it is perhaps too terse, risking ambiguity. Still efficient and earns its place.

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

Completeness2/5

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

Given no output schema and a potentially rich response (warehouse catalog), the description is incomplete. It doesn't explain the structure of the catalog or whether pagination applies, leaving agents to guess.

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

Parameters4/5

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

There are no parameters (schema coverage 100%), so the description need not add parameter semantics. Baseline is 4 for zero parameters; the description is adequate.

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 warehouses catalog' clearly indicates the tool retrieves warehouse data, but it is vague on what exactly a 'warehouses catalog' entails—could be a list or a catalog of warehouses. It distinguishes from siblings since no other tool mentions warehouses, but lacks specificity.

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 siigo_get_cities or siigo_get_account_groups. Without usage context, an agent may not know when this tool is appropriate.

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

siigo_get_webhooksGet WebhooksA
Read-only

Get list of webhook subscriptions

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, indicating a safe read operation. The description 'Get list' adds no additional behavioral context beyond what annotations provide.

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

Conciseness5/5

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

One sentence with clear verb and resource, no wasted words, front-loaded.

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 a simple list operation, the description is minimally adequate but does not describe the content or structure of the webhook subscriptions.

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, so schema coverage is 100% trivially. With 0 parameters, baseline is 4; description adds nothing extra about 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 'Get list of webhook subscriptions' with a specific verb (Get) and resource (webhook subscriptions). It uniquely identifies the tool among siblings as the only webhook-related 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?

No explicit guidance on when to use this tool versus alternatives. However, as the only webhook subscription tool, usage is implied, but the description lacks context for when to call it.

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

siigo_search_customersSearch CustomersA
Read-only

Search for customers by identification, name, or type with client-side filtering for partial matches

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoSearch by customer name (partial match)
pageNoPage number for pagination
typeNoFilter by customer type
page_sizeNoNumber of items per page (max 100)
identificationNoSearch by identification number (partial match)

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false, so the tool is safe. The description adds that filtering is client-side and supports partial matches, which provides additional context but does not go beyond what the annotations convey about safety. It does not contradict annotations.

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

Conciseness5/5

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

The description is a single sentence that is front-loaded with purpose, covering all key aspects without waste. It is highly concise and effective.

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

Completeness4/5

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

The description addresses the main search modes and client-side filtering. However, it does not explain pagination behavior (page, page_size) or the implications of client-side filtering (e.g., whether all results are fetched first). Given the schema already documents parameters, the description is largely complete for a search tool but could mention pagination or that all parameters are optional.

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

Parameters3/5

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

Schema coverage is 100%, so all five parameters have descriptions in the input schema. The description only summarizes the search criteria without adding new meaning beyond what the schema provides. 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 verb 'search' and resource 'customers', specifying three search types (identification, name, type) and mentioning client-side filtering for partial matches. It distinguishes from sibling tools like siigo_get_customers and siigo_get_customer which likely return all customers or a single customer without partial match search.

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 when needing to find customers by partial match on identification, name, or type, but it does not explicitly state when to use this tool versus alternatives like siigo_get_customers or siigo_get_customer. No exclusions or alternative recommendations are provided.

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

siigo_search_productsSearch ProductsB
Read-only

Search for products by code, name, or reference with client-side filtering for partial matches

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoSearch by product code (partial match)
nameNoSearch by product name (partial match)
pageNoPage number for pagination
page_sizeNoNumber of items per page (max 100)
referenceNoSearch by product reference (partial match)

TDQS

B3.2/5.0
Behavior3/5

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

Annotations (readOnlyHint=true, destructiveHint=false) already convey safety. Description adds 'client-side filtering' which hints at behavior but is ambiguous (could mean API performs partial matches or returns all for client-side filtering). No other behavioral traits disclosed.

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

Conciseness5/5

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

Single sentence that is concise, front-loaded with purpose and key details. 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?

No output schema; description does not explain return format, pagination behavior, or how partial matches are applied (API vs client-side). Given 5 parameters including page and page_size, pagination context is missing. Significant information gap for effective 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?

All 5 parameters are described in schema (100% coverage). Description mentions code, name, reference but adds no new meaning beyond schema definitions. Baseline score of 3 due to 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?

Description clearly states verb 'Search', resource 'products', and search fields (code, name, reference) with partial match filtering. Implies distinction from sibling tools like siigo_get_products which likely retrieve all products. However, no explicit differentiation from other search 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., siigo_get_products for unfiltered lists). No exclusions or when-not-to-use scenarios mentioned.

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. 44 tool updatesv3.2.0
    • First observedsiigo_get_account_groups
    • First observedsiigo_get_accounts_payable
    • First observedsiigo_get_cities
    • First observedsiigo_get_cost_centers
    • First observedsiigo_get_credit_note
    • First observedsiigo_get_credit_note_pdf
    • First observedsiigo_get_credit_notes
    • First observedsiigo_get_customer
    • First observedsiigo_get_customers
    • First observedsiigo_get_document_types
    • First observedsiigo_get_expenses
    • First observedsiigo_get_fiscal_responsibilities
    • First observedsiigo_get_fixed_assets
    • First observedsiigo_get_id_types
    • First observedsiigo_get_invoice
    • First observedsiigo_get_invoice_pdf
    • First observedsiigo_get_invoice_stamp_errors
    • First observedsiigo_get_invoice_xml
    • First observedsiigo_get_invoices
    • First observedsiigo_get_journal
    • First observedsiigo_get_journals
    • First observedsiigo_get_misc_income
    • First observedsiigo_get_payment_receipt
    • First observedsiigo_get_payment_receipts
    • First observedsiigo_get_payment_types
    • First observedsiigo_get_price_lists
    • First observedsiigo_get_product
    • First observedsiigo_get_products
    • First observedsiigo_get_purchase
    • First observedsiigo_get_purchase_support_document
    • First observedsiigo_get_purchase_support_documents
    • First observedsiigo_get_purchases
    • First observedsiigo_get_quotation
    • First observedsiigo_get_quotations
    • First observedsiigo_get_taxes
    • First observedsiigo_get_trial_balance
    • First observedsiigo_get_trial_balance_by_third
    • First observedsiigo_get_users
    • First observedsiigo_get_voucher
    • First observedsiigo_get_vouchers
    • First observedsiigo_get_warehouses
    • First observedsiigo_get_webhooks
    • First observedsiigo_search_customers
    • First observedsiigo_search_products

TDQS

A3.5/5.0

Scored across 44 tools

Disambiguation5/5

Each tool targets a distinct entity or operation (e.g., get vs search, singular vs plural for lists). No two tools have overlapping purposes, so an agent can easily select the correct one.

Naming Consistency5/5

All tools follow a consistent pattern: siigo_get_<entity> or siigo_search_<entity>, all in lowercase snake_case. The verb-noun structure is uniform, aiding predictability.

Tool Count3/5

44 tools is a large number, exceeding the typical well-scoped range. While the variety of entities justifies some breadth, the sheer count can be overwhelming for an agent, especially since all tools are read-only.

Completeness4/5

The tool set covers a wide array of read operations across many Siigo entities (invoices, credit notes, journals, customers, etc.), leaving few gaps for a read-only server. However, the absence of any write operations (create, update, delete) may limit the server's usefulness if mutations are expected.

Maintenance

ActivityStale
ResponsivenessNo issues

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

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

  • MCP server for Codat — companies, connections, invoices, bills and financial statements.

  • MCP server for Quaderno — tax-rate calculation, invoices, contacts, products, receipts & expenses.

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that enables LLMs to securely interact with Alegra accounting API, allowing operations on invoices, contacts, and items data.
    1
    11 npm
    1
    ISC
  • A
    license
    B
    quality
    D
    maintenance
    Enables integration with Colombian accounting software Siigo through its API. Supports managing products, customers, invoices, purchases, credit notes, vouchers, payment receipts, journals, and generating financial reports.
    49
    16 npm
    8
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Unofficial MCP server for Siigo Colombian electronic invoicing software that enables AI to manage customers, products, invoices, credit notes, and journals through the Siigo API with configurable safety modes.
    19
    1
    MIT
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables interaction with the Siigo API to manage products, customers, and invoices with enterprise-grade security features like RBAC and audit logging. It supports financial reporting operations and secure data handling through the Model Context Protocol.
    -