Skip to main content
Glama
t4dhg

@t4dhg/mcp-holded

Holded accounting

holded_accounting

Manage chart of accounts, journal entries, taxes, expenses, sales channels, numbering series, and tags in Holded.

Instructions

Chart of accounts, journal, taxes and configuration lists. Actions: list_accounts (start_date and end_date add debit, credit and balance for the window; include_empty), create_account, list_ledger (start_date and end_date required; account), create_ledger_entry, list_taxes, tax_keys (country), list_expenses_accounts, get_expenses_account, create_expenses_account, update_expenses_account, delete_expenses_account, list_sales_channels, get_sales_channel, create_sales_channel, update_sales_channel, delete_sales_channel, list_numbering_series (series_type), create_numbering_series, update_numbering_series, delete_numbering_series, list_tags, create_tag, delete_tag (name). Ledger dates are DD/MM/YYYY; amounts use a dot decimal separator.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNoRecord id (24 hex characters)
dataNoPayload for create and update actions, following the Holded v2 request contract
nameNoTag name for create_tag and delete_tag
limitNoPage size, 1 to 200 (default 50)
actionYes
cursorNoCursor from the previous page to continue listing
accountNoAccount number filter for list_ledger
confirmNoRequired for gated actions. The first call without it sends nothing and explains what would happen.
countryNoISO country code for tax_keys
sectionNo
archivedNo
end_dateNo
start_dateNo
series_typeNoNumbering series document type
include_emptyNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.1.1

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does add some useful details: ledger dates use DD/MM/YYYY and amounts use a dot decimal separator, and it notes that start_date/end_date add debit/credit/balance for list_accounts. However, it omits critical behaviors such as the confirm gating mechanism (mentioned in the schema but not the description), pagination semantics (cursor/limit), side effects of create/update/delete actions, and reversibility. The coverage is thin for a tool with 23 actions.

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 block that lists the general purpose then a long list of actions with parenthetical parameter hints. It is not verbose, but it is not well-structured; it could be broken into logical sections (e.g., accounts, ledger, taxes, etc.). The front-loaded purpose is helpful, but the dense list makes scanning harder. It earns a middling score for being concise yet poorly organized.

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

Completeness2/5

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

Given the complexity (23 actions, 15 parameters, no output schema, no annotations), the description is notably incomplete. It does not explain return values or pagination behavior, does not mention the confirm gating flow, does not describe error cases, and leaves many parameters undefined in context. An agent would need to rely heavily on the schema and possibly make trial calls to understand expected behavior. The description provides only a high-level list of actions and a few formatting notes, which is insufficient for a tool of this scope.

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

Parameters3/5

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

Schema description coverage is 60%, so the description must compensate for the missing 40%. It does add meaning to several parameters: it explains that start_date and end_date add debit/credit/balance for list_accounts, that list_ledger requires them, that tax_keys takes a country, that series_type is used for list_numbering_series, and that delete_tag requires name. However, many parameters (id, data, section, archived, include_empty, cursor, limit) are not addressed in the description, and the meaning of the 'data' object is left to the schema. It provides partial compensation but not full.

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 opens with 'Chart of accounts, journal, taxes and configuration lists', which clearly scopes the tool to accounting data and configuration. The long action list reinforces the domain. It distinguishes from siblings like holded_sales and holded_contacts by focusing on accounting-specific entities. However, the purpose is stated as a list of domains rather than a single unified verb+resource, so it's not perfectly crisp.

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 explicit guidance on when to use this tool versus alternatives. The description never mentions other Holded modules or conditions that would route an agent to a sibling. The only implicit cue is the domain name, which is not enough for clear decision-making. It does not state exclusions or alternatives.

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