Shop for gift cards, mobile refills, and digital services on Bitrefill using cryptocurrency
Server has 12 tools with mostly complete schemas and descriptions. Naming follows verb_noun convention (search, detail, create_invoice, get_*). Descriptions are present and actionable (avg ~120 chars). However, several tools have vague or incomplete parameter descriptions, and output schemas are not formally documented. Error handling returns JSON with error field but lacks recovery guidance. The search tool has excessive optional parameters (14 total) that lack clear constraints or dependencies, violating single-responsibility principle. Missing tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications.
Get the full product type/categories map. It's suggested to use this tool to get the categories and then use the `search` tool to search for products in a specific category.
Check phone number validity and get operator information
Create a new invoice for purchasing products with various payment methods
Get detailed information about a product
Get the current account balance
Retrieve details for a specific invoice by ID
Retrieve a list of invoices with optional filtering
search tool has 14 optional parameters with unclear dependencies and constraints. Parameters like 'beta_flags', 'col', 'prefcc', 'src', 'sec', 'rec', 'do_recommend' lack descriptions or have generic ones. This violates single-responsibility and makes LLM parameter selection error-prone.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint) despite clear risk classifications in metadata. create_invoice and pay_invoice are WRITE operations but lack destructiveHint annotation. This prevents clients from warning users about irreversible actions.
Output schemas are not formally documented. Tools return JSON.stringify() responses but LLMs cannot see the structure of returned fields (e.g., what fields does create_invoice return? What is the structure of search results?). This forces LLMs to infer output shape.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Retrieve details for a specific order by ID
Retrieve a list of orders with optional filtering
Pay an unpaid invoice (only works with 'balance' payment method)
Search for gift cards, esims, mobile topups and more. It's suggested to use the `categories` tool before searching for products, to have a better understanding of what's available.
Unseal an order to reveal codes and PINs
Error handling returns generic JSON error objects without recovery guidance. E.g., 'error: Invalid product ID' does not tell the LLM whether to retry, call search first, or ask the user. Missing error classification (retryable vs user-fixable vs fatal).
create_invoice parameter 'products' is an array of objects with nested properties, but the nested schema lacks full type definitions and constraints. E.g., 'value' is required for variable-value products but this conditional dependency is not enforced in schema.