MCP server for the Wayl payments API. 18 tools covering all 13 REST endpoints, plus storefront conveniences and local webhook verification.
Breaking
sell_bookis nowsell_item, and itstitleparameter isname. The tool works for anything you sell: goods, digital downloads, services, tickets.WAYL_REFERENCE_PREFIXdefaults toorderinstead ofbook.
Changed
- Every tool description rewritten against Glama's tool-definition-quality rubric: what it does, when to use it, which sibling to use instead, side effects, and the Wayl-specific gotcha. Scored 4.8/5 across 18/18 tools.
- Closed enums (
env, link/refund statuses,currency) and length bounds now appear in the JSON Schema rather than only in prose, so a model self-corrects instead of burning a turn. - One version source: the package, the MCP handshake and the
User-Agentheader all readwayl_mcp.__version__.
Fixed
get_payment_linkbypassed the sandbox gate and reported "safe to deliver" for a simulated test-mode payment whilecheck_order_paidcorrectly refused.verify_signatureraisedTypeErroron a non-ASCII signature header — attacker-controlled input crashing the verifier instead of returningFalse. It now compares decoded digest bytes, and hex is the only accepted encoding.- Reference IDs are percent-encoded into URL paths.
order#42previously truncated toorderand returned a different order's payment status;.and..turned a single-order lookup into a full collection listing. success: falseriding on a 2xx is now treated as a failure, and a non-stringmessageno longer crashes the error path.- Secrets are scrubbed from model-visible error text, including when quoted inside free-text validation messages.
Notes
paid and safeToFulfil are deliberately different. Wayl never reports which environment an order belongs to, so while the server is in test mode a settled payment reports paid: true and safeToFulfil: false. Branch on safeToFulfil.
141 tests, CI on Python 3.10–3.13.