Skip to main content
Glama
t4dhg

@t4dhg/mcp-holded

Holded sales documents

holded_sales

Manage sales documents like invoices, credit notes, and estimates. Perform actions such as listing, creating, updating, approving, canceling, and sending documents, including PDF generation and attachments.

Instructions

Sales documents by type: invoice, credit_note, estimate, proforma, sales_receipt, sales_order, waybill, receipt_note, recurring_invoice. Actions: list, get, find_by_number (invoices), pdf (needs output_path), list_attachments, attach (file_path), schedule (recurring), create, update, delete, approve, cancel (invoices), send (emails), set_pipeline, record_payment, convert, accept, reject (estimates), skip (recurring), bulk_approve, bulk_cancel, bulk_delete (invoices). Amounts in responses are strings with a comma decimal separator.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNoRecord id (24 hex characters)
idsNoInvoice ids for bulk actions
dataNoPayload for create and update actions, following the Holded v2 request contract
dateNoOccurrence date for skip
sortNo
typeNoDocument type (default invoice)invoice
limitNoPage size, 1 to 200 (default 50)
actionYes
cursorNoCursor from the previous page to continue listing
statusNo
confirmNoRequired for gated actions. The first call without it sends nothing and explains what would happen.
end_dateNoYYYY-MM-DD, inclusive
file_pathNoLocal file to upload for attach
contact_idNo
start_dateNoYYYY-MM-DD, inclusive
output_pathNoWhere to save the PDF
pipeline_idNo
due_date_endNo
due_date_startNo
approval_statusNo
document_numberNoFor find_by_number

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.1.1

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses one important behavioral trait: 'Amounts in responses are strings with a comma decimal separator.' It also hints at parameter requirements ('pdf (needs output_path)', 'attach (file_path)') and type-specific actions. However, it does not disclose side effects (e.g., delete is permanent, send emails), prerequisites, or the confirm gate, leaving significant gaps.

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 dense sentence listing types and actions. It is compact but not well-structured; the information is front-loaded but could be presented as a list for better readability. It's not overly verbose, but the lack of structure reduces clarity.

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?

This is a complex tool with 21 parameters, 22 actions, no output schema, and no annotations. The description provides a high-level list but omits crucial usage context: how to use actions together, required fields for create/update, pagination, the confirm gate, and typical workflows. It fails to give an agent enough to call it correctly without further exploration.

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 62%, so the description must compensate. It adds some meaning by linking actions to parameters (e.g., 'pdf (needs output_path)', 'attach (file_path)', 'find_by_number (invoices)' implying document_number). However, many parameters (contact_id, pipeline_id, due_date_start/end, etc.) are left without explanation, and the description does not cover all 21 parameters.

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

Purpose4/5

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

The description clearly states the tool's domain: 'Sales documents by `type`' and lists all supported document types and actions. It distinguishes from siblings like holded_purchases by explicitly naming the sales domain, though it doesn't explicitly say 'use this for sales, not purchases'. The purpose is clear and specific.

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 through its domain focus and action list, but it does not explicitly state when to use this tool versus alternatives like holded_purchases. It provides some per-action type restrictions (e.g., 'find_by_number (invoices)'), but no general when/when-not guidance or exclusions.

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