MCP server read-only para consultar datos contables y de facturación desde Holded
Server has 13 well-named tools with consistent verb_noun patterns (holded_list_*, holded_get_*). All tools include descriptions (avg ~120 chars, within baseline 34-392 range). Input schemas are present and typed for all tools. However, output schemas are NOT documented, LLMs cannot predict response structure. Parameter descriptions are present but minimal (avg ~60 chars). No error handling guidance or recovery hints. All tools are READ_ONLY, reducing risk but also limiting utility. Tool composition is sound (single responsibility), but missing pagination guidance despite requestAll() implementation in client.
Genera un balance de situación a partir del Plan General Contable. Agrupa las cuentas en Activo (corriente y no corriente), Patrimonio Neto y Pasivo (corriente y no corriente). Los saldos son acumulados desde el inicio del ejercicio.
Obtiene el detalle de un contacto específico de Holded por su ID.
Obtiene el detalle de un documento específico de Holded por su tipo e ID.
Genera una cuenta de pérdidas y ganancias (PyG) a partir del Plan General Contable. Agrupa ingresos (grupo 7) y gastos (grupo 6) por subgrupos y calcula EBIT, resultado financiero, BAI y BDI. Nota: los saldos provienen del cuadro de cuentas y son acumulados.
Obtiene la lista de impuestos configurados en Holded.
Output schemas not documented. LLMs cannot predict response structure (fields, types, nesting). Forces trial-and-error parsing and wastes tokens on unstructured output.
No error handling guidance. Errors (auth failures, timeouts, invalid dates) are thrown but LLM receives no recovery hints. E.g., 'API Key inválida' should suggest 'Check HOLDED_API_KEY environment variable.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Resumen de IVA: muestra el saldo de IVA soportado (472) e IVA repercutido (477), calcula la diferencia e indica si el resultado es a ingresar o a compensar/devolver. Nota: los saldos provienen del cuadro de cuentas y son acumulados.
Comprueba el estado del servidor MCP y devuelve el tiempo de actividad
Lista las cuentas del Plan General Contable configuradas en Holded. Opcionalmente filtra por grupo PGC (primer dígito del código de cuenta, 1-9).
Lista todos los contactos (clientes y proveedores) de Holded. Opcionalmente filtra por tipo.
Obtiene los asientos del libro diario de Holded. Opcionalmente filtra por rango de fechas y/o número de cuenta.
Lista documentos de facturación de Holded por tipo. Opcionalmente filtra por rango de fechas y/o contacto.
Lista los pagos registrados en Holded. Opcionalmente filtra por rango de fechas.
Lista todas las cuentas de tesorería (bancos, cajas, etc.) configuradas en Holded.
Pagination not documented in tool descriptions. Client implements automatic pagination (limit=50, offset), but LLMs are unaware. Should state: 'Returns up to 50 results; automatically paginated.'
Parameter descriptions lack format/constraint details. E.g., 'startDate' says 'YYYY-MM-DD' but no validation guidance if LLM passes invalid format. Should state: 'ISO 8601 date (YYYY-MM-DD). Invalid format returns error: Fecha inválida.'
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are read-only but LLM has no machine-readable signal. Should add readOnlyHint=true to all tools.