Skip to content

v0.2.0 — domain-neutral payments server

Latest

Choose a tag to compare

@muthanii muthanii released this 06 Aug 11:32
· 2 commits to main since this release

MCP server for the Wayl payments API. 18 tools covering all 13 REST endpoints, plus storefront conveniences and local webhook verification.

Breaking

  • sell_book is now sell_item, and its title parameter is name. The tool works for anything you sell: goods, digital downloads, services, tickets.
  • WAYL_REFERENCE_PREFIX defaults to order instead of book.

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-Agent header all read wayl_mcp.__version__.

Fixed

  • get_payment_link bypassed the sandbox gate and reported "safe to deliver" for a simulated test-mode payment while check_order_paid correctly refused.
  • verify_signature raised TypeError on a non-ASCII signature header — attacker-controlled input crashing the verifier instead of returning False. It now compares decoded digest bytes, and hex is the only accepted encoding.
  • Reference IDs are percent-encoded into URL paths. order#42 previously truncated to order and returned a different order's payment status; . and .. turned a single-order lookup into a full collection listing.
  • success: false riding on a 2xx is now treated as a failure, and a non-string message no 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.