Deterministic accounting tools for agents. Exposes account mapping, consolidation, and validation over the Model Context Protocol (MCP). Deterministic core: graph lookups, keyword rules, and arithmetic—no LLM calls in tools.
Five tools with complete input schemas and descriptions, but descriptions are verbose (200-400 chars) and lack LLM-optimized brevity. All tools are READ_ONLY and deterministic, which is good for idempotency. However, output schemas are not documented in the MCP server definition, only inferred from code comments. Parameter descriptions are present but some lack actionable constraints (e.g., 'jurisdiction' accepts ISO codes but no validation guidance). Error handling is minimal, no recovery guidance or categorization visible in tool definitions.
Consolidate subsidiary trial balances into one target-currency trial balance. Each subsidiary is resolved deterministically and converted with an auditable FX quote (manual override or runtime provider). Returns per-node debit/credit/net, totals, balance check, and per-entity FX audit trail.
Retrieve a Kontablo account by id or UUID. Returns full account metadata: label, nature, statement, level, parent, local codes by jurisdiction, IFRS tag, and aggregation info.
List all supported jurisdictions (ISO 3166-1 alpha-2 codes) and their coverage: number of mapped accounts, mapping tiers available, and local chart size.
Map a local statutory account (jurisdiction + code/name) to a universal Kontablo node via deterministic resolver (Tier-1 exact lookup or Tier-2 keyword rule). Returns node id, UUID, confidence, and match_method ('exact_lookup' | 'keyword_rule' | 'not_found'). No LLM fallback exposed.
Validate a consolidated balance sheet for structural integrity: checks that assets equal liabilities + equity, detects unbalanced nodes, and reports per-statement totals and imbalances.
Output schemas not documented in tool definitions. Descriptions mention return fields (node_id, UUID, confidence, match_method) but these are not formally specified in the MCP schema. LLMs cannot reliably extract or chain results without documented output structure.
Descriptions are verbose (200-400 chars) and include implementation details ('Tier-1 exact lookup', 'keyword rule') that distract from user intent. Descriptions should be 50-200 chars, action-focused, and omit internal mechanics.
No error handling guidance in tool definitions. If resolve_account returns 'not_found', the description does not suggest next steps (e.g., 'Try with a partial local_name'). Error responses should guide recovery.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
consolidate_trial_balances has deeply nested input schema (subsidiaries array with nested entries array). No guidance on maximum array sizes, which could lead to oversized requests or timeouts. Pagination or batch limits should be documented.
Parameter 'nature' in resolve_account is optional enum but description does not clarify what happens if omitted. Does the tool return both debit and credit matches, or does it guess? Undocumented dependencies cause silent misuse.