All 5 tools have explicit schemas with type definitions and descriptions. Naming follows verb_noun pattern (list_*, get_*) and is clear. However, descriptions are generic and lack LLM-optimization guidance. Parameters lack enums for constrained values (status, customer_id filters). No output schema documentation. Critical security issue: _apiKey and _site exposed as tool parameters instead of server-side injection. No error handling guidance or recovery paths documented.
Get a single Chargebee customer by their ID. Returns full customer details.
Get a single Chargebee subscription by its ID. Returns full subscription details.
List customers from Chargebee. Supports limit and offset for pagination.
List invoices from Chargebee. Supports optional status and customer_id filters, plus limit and offset for pagination.
List subscriptions from Chargebee. Supports optional status filter, limit, and offset for pagination.
API credentials (_apiKey, _site) exposed as tool parameters. Credentials must never appear in tool parameters, they are logged in traces and prompt history. Use server-side secret injection via environment variables or vault.
No output schema documented. LLMs cannot plan downstream calls or extract required fields without knowing response structure. Document what fields are returned (e.g., subscription object structure, pagination metadata).
Status and customer_id parameters accept free-form strings instead of enums. 'status' should enumerate valid values (active, cancelled, non_renewing, future, in_trial, paused for subscriptions; paid, posted, payment_due, not_paid, voided, pending for invoices). Enums prevent hallucinated invalid values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Descriptions are generic and lack LLM-optimization. Current descriptions (65-75 chars) do not explain WHEN to use each tool vs. similar ones, what the tool returns, or dependencies. Expand to 100-200 chars with actionable context.
No error handling guidance. callTool throws generic errors ('Chargebee API error (status): text') without recovery hints. Errors should guide LLM: 'User not found. Try list_customers() to find the correct ID.' Include invalid value and constraint violated.