MCP server for financial audit operations, providing tools to query and retrieve invoice, vendor, and payment data from Azure Cosmos DB for audit analysis and procedures.
Server has 7 well-named, read-only tools with complete input schemas and descriptions. All tools follow verb_noun naming (get_*, query_*) and include parameter descriptions. However, output schemas are not documented in the source code, LLMs cannot see what fields to expect from responses. Parameter descriptions are adequate but lack format constraints (e.g., date_from/date_to lack ISO 8601 specification). No error handling guidance, no recovery patterns, and no tool annotations (readOnlyHint). Pagination is supported (limit param) but total_count and next_cursor are not documented. Overall solid foundation but missing production-grade polish.
Retrieve a SINGLE, SPECIFIC invoice by invoice_id.
Retrieve a SINGLE, SPECIFIC payment by payment_id.
Retrieve payment record(s) for a SINGLE invoice.
Retrieve a SINGLE, SPECIFIC vendor by vendor_id.
Search and filter invoices for audit analysis.
Search and filter payments for audit procedures.
Search/filter vendors. Use this tool to list vendors by risk tier. risk_tier, if provided, should be one of: Low, Medium, High.
Output schemas not documented. LLMs cannot see what fields (invoice_id, amount, vendor_id, etc.) are returned by get_invoice, query_invoices, or other tools. This forces agents to guess field names for downstream tool calls and risks broken chains.
Date parameters (date_from, date_to) lack format specification. Descriptions say 'optional' but do not state ISO 8601 format, which invites LLM errors like '2024-1-5' instead of '2024-01-05'.
No error handling guidance. Tools do not document what happens on invalid engagement_id, missing invoice, or malformed date. LLMs receive raw errors with no recovery path.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2026-07-28+ | v2 |
No tool annotations. All tools are read-only but lack readOnlyHint annotation. This prevents clients from optimizing caching, retry logic, or permission checks.
Pagination not fully documented. query_* tools accept 'limit' but do not document total_count or next_cursor in response. LLMs cannot determine if more results exist or how to fetch them.