Server has 8 tools with complete input schemas and descriptions, but quality is inconsistent. Naming follows verb_noun convention well (get_*, create_*, send_). Descriptions are present but often generic (avg ~80 chars, below 194-char baseline). Schemas are properly typed with enums where appropriate, but lack output schema documentation. No error handling guidance, no parameter validation rules, and no security considerations documented. Missing tool annotations (readOnlyHint, destructiveHint). Composition is reasonable, tools are single-purpose, but descriptions don't explain when to use each tool vs. alternatives.
Generate Balance Sheet. Say 'balance sheet as of December 31' or 'current balance sheet'
Generate Cash Flow Statement
Record a business expense. Say 'record $50 office supplies from Staples'
Create a new invoice for a customer
Get expense transactions with filtering
Get invoices with natural language filtering. Say things like 'unpaid invoices' or 'invoices for John Smith'
No output schemas documented. LLMs cannot plan downstream calls or extract required fields. Tools return data but structure is invisible to agents.
Descriptions lack context for tool selection. 'Get invoices with natural language filtering' and 'Get expense transactions with filtering' don't explain when to use get_invoices vs. get_expenses or how filtering differs. Descriptions average ~80 chars vs. 194-char baseline.
No error handling guidance. Tools lack recovery hints (e.g., 'If invoice not found, call get_invoices() first'). No categorization of errors as retryable, user-fixable, or fatal.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | <=2025-11-25 | v2 |
Generate Profit & Loss statement. Say 'P&L for last month' or 'income statement year to date'
Email an invoice to customer
Missing tool annotations. No readOnlyHint on read tools (get_*, profit_and_loss, balance_sheet, cash_flow) or destructiveHint on write tools (create_*, send_invoice). Agents cannot distinguish safe from risky operations.
Parameter descriptions lack validation rules. 'date_from' and 'date_to' accept natural language ('last month', '2024-01-01') but no format guidance. 'limit' is unbounded, no min/max specified. LLMs will pass invalid values.