Skip to main content
Glama
contabridge-mcp

contabridge-mcp

by ArceeDev

convert_journal

Read-onlyIdempotent

Convert Spanish bookkeeping journals between A3, ContaPlus, and CSV formats, auto-detecting the source and validating output so the target accounting program accepts it.

Instructions

Convert a libro diario (journal) between Spanish accounting programs.

Formats: a3 (a3ASESOR/a3ECO/a3CON SUENLACE.DAT, apuntes tipo 0), contaplus_csv (Sage ContaPlus / Sage 50 Diario CSV, 142 fields), contaplus_ascii (XDiario.txt fixed width), csv (spreadsheet with header: Holded, Excel, any ERP; columns auto-detected, override with column_map). The source is auto-detected.

Args: target_format: a3 | contaplus_csv | contaplus_ascii | csv. content: The file as text. content_base64: raw bytes as base64 (Latin-1/CP1252 files with Ñ). source_format: auto (default) or one of the formats. account_digits: Resize every subaccount to this length (ContaPlus uses a fixed length, e.g. 8); also expands '430.1' shorthand. 0 keeps them. account_split: Where zeros are inserted/removed when resizing (default 4: 4300001 -> 43000001). account_map: Exact account renames applied first, e.g. {"5720001": "57200005"}. start_entry_number: Renumber entries from this number (ContaPlus requires numbers; A3 does not use them). company_code: A3 company code (1-99999). a3_format: 5 (512-byte records, current) or 4 (256, old). column_map: For csv sources, e.g. {"debit": "Importe D", "account": "Cta"}. Keys: number, date, account, account_name, debit, credit, amount, dh, concept, document. csv_delimiter: For csv source/target; auto-detected on read, ';' on write. decimal_comma: csv output with decimal comma (Spanish Excel). fiscal_year: flag dates outside it. strict: Refuse to write a file with validation errors (default), so the target program never rejects it.

Input Schema

NameRequiredDescriptionDefault
strictNo
contentNo
a3_formatNo
column_mapNo
account_mapNo
fiscal_yearNo
company_codeNo00001
account_splitNo
csv_delimiterNo
decimal_commaNo
source_formatNoauto
target_formatYes
account_digitsNo
content_base64No
start_entry_numberNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and closed-world, so the safety profile is covered; the description adds genuinely useful behavior not in the annotations: strict refuses to emit output on validation errors, Latin-1/CP1252 encoding handling via content_base64, ContaPlus requiring entry numbers versus A3 not, and decimal-comma conventions. It stops short of describing what the returned artifact looks like, but an output schema exists so that gap is cheap.

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 purpose and format table are front-loaded, and the Args block is dense with zero filler given 15 parameters. Minor deductions for cramming two unrelated parameters onto one line ('company_code ... a3_format: 5 ... or 4 (256, old)') and unexplained shorthand such as 'apuntes tipo 0' and '142 fields'.

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 15-parameter, 0%-schema-coverage conversion tool, this is complete: every parameter has meaning, each format's origin is named, encoding and numbering constraints are flagged, and the validation-on-failure contract is stated. Return values are legitimately omitted because an output schema is supplied.

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 description coverage is 0% across 15 parameters, so the description carries the full burden and does so almost completely: it documents target_format values, content vs content_base64 encoding nuance, source_format auto-detection, account_digits resize semantics with '430.1' expansion, account_split insertion point with an example, account_map example, start_entry_number, company_code range, a3_format record sizes, column_map keys enumerated in full, csv_delimiter behavior, decimal_comma, fiscal_year, and strict.

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 opens with a specific verb and resource ('Convert a libro diario ... between Spanish accounting programs') and enumerates the four target formats with concrete product identifiers (a3ASESOR, Sage ContaPlus CSV, XDiario.txt, generic CSV). An agent can immediately tell this is a pure format-transformation tool, distinct from siblings like validate_journal, detect_format, and build_journal.

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

Usage Guidelines3/5

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

Usage context is implied rather than stated: it explains that source format is auto-detected and that strict mode prevents the target program from rejecting output, which hints at when to keep strict default. However, it never says when to prefer validate_journal, detect_format, or build_journal over this tool, nor what to do when conversion fails.

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