Budget router over x402: hard budget caps, idempotent paid calls, cost ledger, server-side pricing.
MIT licensed. Built in France. The first open-source payment governance layer for AI agents.
A safe, provider-agnostic wrapper over AgentCash / x402. Not limited to prospecting — it drives any endpoint, and adds what AgentCash itself lacks and we learned we need the hard way:
This repo is the open-source SDK: the safe caller, budget guard, idempotency, ledger, CLI and MCP server. MIT licensed.
We don't hide features behind paywalls. We don't split the SDK into "core" and "pro". Everything is here. Use it, fork it, build on it.
The hosted service (https://www.tryx402.app) is the commercial engine:
multi-currency fiat billing, margins, FX, Stripe funding, the verified-tools
catalogue and the provider portal. Pricing is decided server-side via
/v1/quote — a client-side margin is a margin nobody pays.
Revenue model: commission on every pay-per-call transaction routed through the hosted service. The SDK is free. The service takes a cut. That's it.
tryx402 est le premier SDK open source de gouvernance de paiements pour agents IA dans l'écosystème x402. Conçu en France, distribué sous MIT, adopté par la communauté.
Face aux agrégateurs propriétaires (treg.to et consorts), tryx402 défend une position différente : pas de lock-in, pas de licence restrictive, pas de "commercial use only". Le code est libre. La confiance vient du service, pas de la licence.
| Face | Who | Where |\n|---|---|---|\n| Power-tool | you / an agent drive paid endpoints safely | this SDK (gateway.cli, gateway.client) |\n| Fiat gateway | end users pay in their currency, you resell x402 with margin | hosted service (closed) |
Python — one import:
from gateway import Gateway
gw = Gateway(max_budget_usd=1.0) # safe by default
data = gw.call("https://stable-deepline.dev/api/email/validate",
body={"email": "x@y.com"}, price=0.03)
print(gw.spent_usd) # 0.03
Terminal — one command (like agentcash), after pip install tryx402:
gateway call https://stable-deepline.dev/api/email/validate \
--body '{"email":"x@y.com"}' --price 0.03 --max-budget 0.10
MCP — two modes (pick the one you need):
{
"command": "python3",
"args": ["-m", "tryx402.mcp_server"],
"env": { "TRYX402_MAX_BUDGET_USD": "1.00" }
}
6 tools: gateway_search, gateway_discover, gateway_call, gateway_spent,
gateway_plan, gateway_receipt. Works directly with your x402/AgentCash
crypto wallet — no hosted account needed.
You will NOT see
gateway_check_balance,gateway_recharge,gateway_lookup, orgateway_proxy_callfrompip install tryx402. This is deliberate, not a bug. These tools manage your hosted account credits (funded via Stripe, separate from your crypto wallet). The SDK MCP is a safe x402 caller; the hosted gateway handles the fiat credit layer. For the full 10-tool MCP, see Option B below or connect tohttps://www.tryx402.app/api/mcp.
{
"mcpServers": {
"tryx402": {
"command": "python3",
"args": ["-m", "gateway.mcp_server"],
"env": {
"GATEWAY_MAX_BUDGET_USD": "1.00"
}
}
}
}
All 6 SDK tools plus gateway_session, gateway_check_balance,
gateway_recharge, gateway_proxy_call. No API key needed — anonymous
session auth throughout. check_balance / recharge manage your
hosted account credits (funded via Stripe in EUR/USD — not crypto).
gateway/
├── client.py # SafeClient: any endpoint + budget + idempotency + timeout + ledger
├── ledger.py # cost events, USD/EUR totals, by-origin
├── catalog.py # search(intent) / discover(origin) over the AgentCash catalogue
├── api.py # Gateway facade: one-import embed + quote() for server pricing
├── cli.py # search / discover / call / quote
└── tests/ # offline: budget, idempotency, on_paid hook, quote client
Discover (free — no payment):
python3 -m gateway.cli search "find work email"
python3 -m gateway.cli discover https://stable-deepline.dev
Call any endpoint safely (spends USDC — budget-capped, idempotent):
python3 -m gateway.cli call https://stable-deepline.dev/api/email/validate \
--body '{"email":"foo@bar.com"}' --price 0.03 --max-budget 0.10
Ask the hosted service what a call costs your account (server-side FX + margin):
export TRYX402_API_KEY="gw_..." # from https://www.tryx402.app
gateway quote 0.04
# -> {"account":"acme","currency":"EUR","charge_minor":5,"charge":"0.05 EUR"}
quote().max_retries=0) — retrying a possibly-paid call is what double-charged us; opt in only if the server honors the Idempotency-Key header.tryx402 sends one anonymous ping on first import to help us understand usage: install-id (random, persisted locally), package version, Python version, platform.
No PII. No tracking across sites. No personal data.
Disable it anytime:
export TRYX402_NO_TELEMETRY=1
Or set an empty URL to disable:
export TRYX402_TELEMETRY_URL=""
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
uvx tryx402Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-crypto-yannso-tryx402": {
"command": "uvx",
"args": [
"tryx402"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referencetryx402pypiio.github.crypto-yannso/tryx402 works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.