Exposes accounting tools over Streamable HTTP transport. Integrated into FastAPI for association accounting operations including balances, operations (transactions), and account management.
The Abacus MCP server exposes 10 accounting tools with HTTP Streamable transport. Tools are well-named with action verbs (get_, list_, create_, update_, delete_) and have clear, moderate-length descriptions (avg ~65 chars). All tools have input schemas with proper type definitions. However, several parameters lack descriptions, output schemas are not documented, and error handling is not visible in the provided code. Parameter descriptions are present for most fields but incomplete for some (e.g., 'balance_id' has no description in several tools). The server correctly avoids exposing secrets as parameters and implements proper authentication via X-API-Key header. Composition is sound, tools are single-purpose and chainable via ID references.
Create a new balance (account).
Create a new operation (income or expense).
Delete a balance. It must have no operations.
Delete an operation by ID.
Get the current association's account information (name, email, balances).
Get all operations for a specific balance.
List all balances (accounts) for the association with their current amounts.
Output schemas not documented. No response schema provided for any tool, forcing LLMs to infer result structure and potentially missing fields needed for downstream tool chaining.
Several parameters lack descriptions or have minimal ones. 'balance_id' in delete_balance, get_balance_operations, and update_balance has no description. Without parameter documentation, LLMs cannot reliably understand what values to pass.
No error handling guidance visible. When delete_balance fails (e.g., 'balance has operations'), the tool should return an actionable error ('Cannot delete balance with existing operations. Delete all operations first, then retry.') rather than a raw error code.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
List operations (transactions), optionally filtered by date range.
Update an existing balance's name, initial amount or position.
Update an existing operation.
No pagination documented for list_operations and list_balances. If an association has 500+ operations or balances, returning all results will exhaust context and cost tokens. Should include limit/offset parameters and total_count in response.
Destructive operations (delete_balance, delete_operation) lack dry-run or confirmation support. Agents make mistakes, deleting a balance with operations or an operation affecting monthly reconciliation should support a confirmation step before execution.