contabridge-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| KEYFLINT_URL | No | KeyFlint service URL. | |
| KEYFLINT_LICENSE | Yes | Your KeyFlint license key, for example LIC-... For hosted HTTP transport, the license can alternatively be supplied via the Authorization Bearer header. | |
| CONTABRIDGE_PRICES | No | Credit pricing overrides, for example convert_journal=3,bank_to_journal=5. | |
| KEYFLINT_PUBLIC_KEY | No | KeyFlint public key used to verify licenses. | |
| KEYFLINT_PUBLIC_KEYS | No | KeyFlint public keys used to verify licenses. | |
| CONTABRIDGE_MAX_BYTES | No | Maximum allowed file size in bytes. | |
| CONTABRIDGE_TRANSPORT | No | Transport mode. Set to http for hosted HTTP transport; otherwise stdio is used. | |
| KEYFLINT_CHECKOUT_URL | No | KeyFlint 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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| convert_journalA | Convert a libro diario (journal) between Spanish accounting programs. Formats: 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 |
| 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 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
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.
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.
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.
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.