Skip to main content
Glama
contabridge-mcp

contabridge-mcp

by ArceeDev

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
KEYFLINT_URLNoKeyFlint service URL.
KEYFLINT_LICENSEYesYour KeyFlint license key, for example LIC-... For hosted HTTP transport, the license can alternatively be supplied via the Authorization Bearer header.
CONTABRIDGE_PRICESNoCredit pricing overrides, for example convert_journal=3,bank_to_journal=5.
KEYFLINT_PUBLIC_KEYNoKeyFlint public key used to verify licenses.
KEYFLINT_PUBLIC_KEYSNoKeyFlint public keys used to verify licenses.
CONTABRIDGE_MAX_BYTESNoMaximum allowed file size in bytes.
CONTABRIDGE_TRANSPORTNoTransport mode. Set to http for hosted HTTP transport; otherwise stdio is used.
KEYFLINT_CHECKOUT_URLNoKeyFlint checkout URL.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

Spanish bookkeeping files for gestorías and accountants. convert_journal moves a libro diario between a3ASESOR/a3ECO (SUENLACE.DAT), Sage ContaPlus and Sage 50 (XDiario CSV/ASCII) and spreadsheet CSV (Holded, Excel, any ERP), resizing subaccounts (4300001 -> 43000001) and remapping accounts. bank_to_journal turns a Norma 43 statement into journal entries against the 572 bank subaccount with your rules; unmatched movements go to a suspense account (555) and are listed, never guessed. build_journal writes entries you composed into any of the formats. validate_journal runs the checks these programs run on import (balanced entries, debit xor credit, PGC groups, fiscal year). Amounts are strings with 2 decimals. Output files come as content and as content_base64 in Windows-1252 with CRLF, which is what A3 and ContaPlus read: save the base64 bytes to disk. Free: resize_account, detect_format, pricing, credits_balance. Unreadable input is never charged; failures are refunded.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
convert_journalA

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.

validate_journalA

Check a journal file the way A3/ContaPlus check it on import, before you send it.

Reports unbalanced entries (with the difference), lines with both or neither debit and credit, non-numeric accounts or accounts outside PGC groups 1-9, mixed subaccount lengths and dates outside fiscal_year. valid is false when any error is found. include_entries returns the first 50 entries parsed.

bank_to_journalA

Turn a Norma 43 (Cuaderno 43) bank statement into journal entries ready to import.

One entry per movement: abono -> Debe bank / Haber counterpart; cargo -> Debe counterpart / Haber bank. The counterpart comes from the first matching rule; with no match it goes to suspense_account (default 555 'partidas pendientes de aplicación', padded to the bank account length) and the movement is listed in unmatched, so nothing is guessed.

Args: bank_account: The 572 subaccount of the bank, e.g. "57200001". target_format: csv (default) | a3 | contaplus_csv | contaplus_ascii. content / content_base64: The .n43 file (base64 for CP850/Latin-1 bytes). rules: Ordered list, first match wins. Each: {"account": "62800000", "contains": ["IBERDROLA"] or "regex": "...", "common_concept": "03" (AEB concept, e.g. 03 recibos, 04 transferencias, 12 comisiones), "direction": "cargo"|"abono", "concept": optional fixed text}. Text matching is case-insensitive over the movement description (own concept + record-23 texts). bank_accounts: For files with several bank accounts: {IBAN or last digits: "57200002"}. use_value_date: Date entries by value date instead of operation date. account_digits / account_split: Resize every subaccount (see convert_journal). start_entry_number: First entry number (default 1).

build_journalB

Write journal entries you composed (e.g. from invoices or a payroll summary) as an import file.

entries: [{"date": "2026-03-31", "number": 1 (optional), "lines": [{"account": "64000000", "debit": "1500.00", "concept": "Nómina marzo"}, {"account": "47510000", "credit": "225.00"}, ...]}]. Entries must balance: an unbalanced entry is refused before any charge, with the difference.

resize_accountB

Resize or expand a Spanish subaccount code. Free. '430.1' -> '43000001'; 4300001 (7) -> 43000001 (8).

detect_formatB

Tell which accounting import format a file is (a3, contaplus_csv, contaplus_ascii, csv). Free.

pricingA

Credit price of each tool and where to buy credits. Free.

credits_balanceA

Remaining credits on your KeyFlint license. Free.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.6/5.0

Scored across 8 tools

Disambiguation4/5

Each tool targets a distinct stage of the workflow: detection, conversion, validation, bank-statement import, composition, and account resizing, with billing utilities clearly separate. There is minor overlap between convert_journal (auto-detects source) and detect_format, and between convert_journal and build_journal, but descriptions make the boundaries clear.

Naming Consistency4/5

Seven of eight tools follow a clear verb_noun snake_case pattern (convert_journal, validate_journal, bank_to_journal, detect_format, build_journal, resize_account). The two exceptions, pricing and credits_balance, are noun-only but are clearly non-domain utility tools, so consistency remains readable.

Tool Count4/5

Eight tools is well-scoped for a journal-conversion server, with each domain tool earning its place. Two of the eight are billing/licensing utilities rather than accounting operations, which is slightly over-inclusive but reasonable.

Completeness4/5

The surface covers the full lifecycle: detect format, convert between formats, validate before import, build journals from scratch, and handle bank statements, plus account resizing. A dedicated parse/read tool returning full structured entries (rather than the first 50 via validate) is a minor gap agents can work around via csv output.

Maintenance

ActivityMaintained
ResponsivenessSyncing