MCP server for the Orez Books accounting system, exposing accounting tools for parties, invoices, accounts, and financial reports
The server registers 13 tools with basic descriptions but has severe structural deficiencies. Most tools lack visible input schemas in the source code, the code snippet cuts off mid-tool and shows only tool name/description registration via mcp.AddTool(). No input parameter schemas are actually defined in the visible code. Descriptions exist but are generic (under 100 chars) and lack actionable detail for LLM selection. There is no output schema documentation visible. Error handling is not evident from the code. The core mcp_server.go file is truncated, so tool implementations are not visible for validation. Naming follows verb_noun convention (good), but parameter guidance, constraints, and recovery hints are absent.
Add a new account to the Chart of Accounts (Import)
Create a new Sales or Purchase invoice with line items
Create a new product or service item
Create a manual or automated Journal Entry (Bank, Cash, Contra, etc.)
Create a new Customer or Supplier
Get current balances for ledger accounts
Get the Balance Sheet as of a specific date
Input schemas not visible in source code. Tools are registered via mcp.AddTool() with name and description only; no JSON Schema parameter objects are defined in the visible snippet. Cannot verify parameter types, constraints, or descriptions.
Tool descriptions are under 100 characters and lack actionable context. Descriptions do not explain WHEN to use each tool vs alternatives (e.g., when to call list_invoices vs get_invoice_details, or when list_accounts vs get_account_balances). No recovery hints or dependency guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 43 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 17 | - | v1 |
Get full details of a specific invoice including items
Calculate Profit and Loss for a given date range
Export the full Chart of Accounts
Get a list of Sales or Purchase invoices
Get a list of customers or suppliers from the accounting system
Modify an existing account in the Chart of Accounts
No output schema documentation visible. Responses are not documented, LLMs cannot predict what fields are returned, forcing trial-and-error to discover what data is available for chaining downstream calls.
Date parameters lack format specification. Tools like get_profit_and_loss, get_balance_sheet, create_invoice, and create_journal_entry accept 'date' or 'startDate'/'endDate' parameters with no format guidance (ISO 8601? Unix timestamp? Natural language?). LLMs will guess and produce wrong formats.
Enum constraints not declared in schema. Parameters like 'type' (Customer/Supplier/Both), 'status' (Unpaid/Paid/Draft/Cancelled), 'accountType' (Asset/Liability/Equity/Income/Expense) should be defined as JSON Schema enums, not free-form strings. This invites hallucinated invalid values.
No error handling guidance. The code does not show how failures are communicated (e.g., if an invoice name does not exist, if an account type is invalid, if dates are out of range). LLMs receive no recovery hints.
Pagination not evident. list_parties, list_invoices, and list_accounts return results capped at 'limit' but no pagination details (total count, next_cursor, has_more). Returning all results without pagination can blow context windows.
Destructive tools (create_*, update_*) have no confirmation or dry-run support documented. Multi-step tools like create_invoice and create_journal_entry lack idempotent markers or duplicate-detection guidance.
Parameter relationships undefined. For example, create_invoice requires 'items' array with 'item' (name?), 'quantity', and 'rate', but it is unclear if 'item' accepts a pre-existing item ID or item name. If a name mismatch occurs, what happens?
Source code truncated. The mcp_server.go snippet cuts off mid-tool registration (ends with 'm.creat'). Tool implementations are not visible, so error handling, validation, and output structure cannot be verified.