A Model Context Protocol server for Fewsats payment integration. Provides tools for managing payments, wallet balance, and L402/X402 protocol operations via the Fewsats API.
Server provides 6 tools with explicit schemas and descriptions. However, quality is inconsistent. Tool names lack action verbs (balance, payment_methods, billing_info are nouns; only pay_offer and create_x402_payment_header use verbs). Descriptions are present but generic, many lack context on WHEN to use the tool or what happens on error. Parameter descriptions exist but are sparse. Complex nested schemas (pay_offer, create_x402_payment_header) lack output documentation. No error handling guidance visible. No tool annotations (readOnlyHint/destructiveHint). Schemas are well-formed JSON Schema but lack examples and validation constraints. Average tool score: 52/100.
Retrieve the balance of the user's wallet. You will rarely need to call this unless instructed by the user, or to troubleshoot payment issues. Fewsats will automatically add balance when needed.
Retrieve the user's billing information. Returns billing details including name, address, and other relevant information. This information can also be used as shipping address for purchases.
Creates a payment header for the X402 protocol. Returns a dict with the payment_header field that must be set in X-PAYMENT header in a x402 http request.
Pays an offer_id from the l402_offers. If payment status is 'needs_review' inform the user he will have to approve it at app.fewsats.com
Retrieve the details of a payment. If payment status is 'needs_review' inform the user he will have to approve it at app.fewsats.com
Tool names lack action verbs. 'balance', 'payment_methods', 'billing_info' are nouns, not verbs. LLMs infer intent from verb-first names (get_balance, list_payment_methods, get_billing_info). Noun-only names force LLMs to read descriptions to understand what action occurs.
No output schemas documented. Tools return responses but LLMs cannot see what fields to expect. pay_offer and payment_info return payment status/details but structure is undocumented. Agents cannot plan downstream calls or extract required fields reliably.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). pay_offer and create_x402_payment_header are WRITE operations but lack destructiveHint. balance, payment_methods, billing_info, payment_info are READ-ONLY but lack readOnlyHint. Agents cannot distinguish safe from risky calls.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Retrieve the user's payment methods. You will rarely need to call this unless instructed by the user, or to troubleshoot payment issues. Fewsats will automatically select the best payment method.
Descriptions lack WHEN-to-use context and error guidance. balance says 'You will rarely need to call this' but does not explain when it IS needed or what to do if balance is insufficient. pay_offer mentions 'needs_review' status but does not explain how to handle it or what the user should do.
Complex nested parameter schemas (pay_offer.l402_offer, create_x402_payment_header.x402_payload) lack examples and validation constraints. LLMs cannot infer the correct structure for deeply nested objects. No enum constraints on 'chain' parameter values are enforced in descriptions.