streamable-httpMITupdated 25d ago
Monetization gateway for Model Context Protocol servers. Put any MCP server behind a pay-per-call toll that AI agents can settle autonomously β no signup, no API keys, no human in the loop.
What can you do with PayGate MCP β Monetization Gateway for AI Agents?
PayGate MCP
Monetization gateway for Model Context Protocol servers. Put any MCP server behind a pay-per-call toll that AI agents can settle autonomously β no signup, no API keys, no human in the loop.
Live endpoint: https://paygate-mcp.rendercriativo.workers.dev/mcp
What it does
An agent calls a tool. If the tool is monetized, PayGate answers with an x402 v2 payment challenge instead of the result. The agent signs a USDC transfer authorization, retries, and gets its answer. Settlement happens on Base; the developer never touches payment code.
agent ββtools/callβββΆ PayGate βββΆ 402 challenge (price, asset, payTo)
agent ββsigned payloadβββΆ PayGate ββverifyβββΆ facilitator
PayGate βββΆ developer's MCP server βββΆ result
PayGate ββsettleβββΆ facilitator βββΆ USDC on Base
agent βββ result + settlement receipt
Payment is verified before the tool runs and settled after it returns. If the tool fails or returns an error, nothing is charged.
For agents
Discovery is free. Ask PayGate what is for sale:
curl -X POST https://paygate-mcp.rendercriativo.workers.dev/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"list_registered_servers","arguments":{}}}'
Calling a monetized tool without payment returns a spec-compliant challenge β a tool result with isError: true whose structuredContent holds the PaymentRequired object:
{
"x402Version": 2,
"error": "Payment required: calculate_fator_r custa $0.02 USDC.",
"resource": { "url": "mcp://tool/calculate_fator_r", "mimeType": "application/json" },
"accepts": [{
"scheme": "exact",
"network": "eip155:8453",
"amount": "20000", // 6-decimal USDC units
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"payTo": "0x82e3...999e",
"maxTimeoutSeconds": 120,
"extra": { "name": "USD Coin", "version": "2" } // EIP-712 domain
}]
}
Sign an EIP-3009 TransferWithAuthorization using exactly the domain in extra, then retry the call with the payment attached under params._meta["x402/payment"]. The settlement receipt comes back in _meta["x402/payment-response"].
The USDC EIP-712 domain name is
"USD Coin"on Base mainnet and"USDC"on Base Sepolia. Using the wrong one makes every signature fail verification.
A working reference client is in scripts/pay-test.mjs:
PRIVATE_KEY=0x... node scripts/pay-test.mjs
The paying wallet needs USDC on Base β but no ETH: gas is covered by the facilitator.
Both x402 transports are supported. HTTP clients can use the base64 PAYMENT-REQUIRED / PAYMENT-SIGNATURE / PAYMENT-RESPONSE headers instead of the MCP _meta binding.
For sellers
The whole seller lifecycle is exposed as MCP tools, so an agent can run it end to end β tell your assistant to monetize your server and it can do everything below on its own:
| Tool | What it does |
|---|---|
register_server |
Lists your server. Its tools are imported automatically; you get a proxy URL and a secret api_key. |
verify_ownership |
Serve the token from registration at /.well-known/paygate-verify on your domain and call this to earn a verified badge. Buyers can filter for verified sellers. |
set_tool_price |
Reprice a tool or take it off the market. |
get_earnings / get_my_listing |
Revenue report and current listing. |
Buyers pay your wallet directly on-chain. PayGate never holds your funds β there is no payout to wait for, no balance to withdraw, and no commission on direct payments. Your server is never modified: PayGate forwards initialize, tools/list, resources/list and prompts/list for free and charges only on tools/call.
The same operations exist as REST (POST /api/register, PUT /api/me/tools, GET /api/me/earnings) if you prefer curl:
curl -X POST https://paygate-mcp.rendercriativo.workers.dev/api/register \
-H 'Content-Type: application/json' \
-d '{"name":"Your Service",
"target_server_url":"https://your-mcp-server.example.com/mcp",
"wallet_address":"0xYourWallet"}'
Health and diagnostics
GET /health/x402 reports whether the payment rail is actually able to charge:
{
"network": "eip155:8453",
"facilitator": { "url": "...", "reachable": true, "authenticated": true },
"ready_to_charge": true,
"diagnosis": "Pronto para cobrar."
}
Configuration
Runtime values live in wrangler.jsonc (vars) and Cloudflare secrets.
| Variable | Purpose |
|---|---|
X402_NETWORK |
CAIP-2 network. eip155:8453 (Base mainnet, default) or eip155:84532 (Sepolia). |
X402_FACILITATOR_URL |
Facilitator base URL, no /verify suffix. Defaults per network. |
PAYGATE_WALLET_ADDRESS |
Wallet that receives payments. |
CONTACT_EMAIL |
Optional; omitted from the UCP manifest when empty. |
CDP_API_KEY_ID / CDP_API_KEY_SECRET |
Coinbase CDP credentials. Required for mainnet β it is the only facilitator that settles on Base. |
UPSTREAM_AUTH_TOKEN |
Token forwarded to the developer's MCP server. |
STRIPE_SECRET_KEY |
Optional, for the Stripe path on tools priced β₯ $0.50. |
Base Sepolia needs no credentials: the public facilitator at https://x402.org/facilitator settles testnet USDC for free β the cheapest way to try the whole flow.
Layout
src/
βββ index.ts routes, health, discovery documents
βββ x402/
β βββ config.ts network registry (CAIP-2, USDC assets, EIP-712 domains)
β βββ protocol.ts v2 structures, MCP + HTTP transport bindings
β βββ facilitator.ts /verify and /settle, CDP JWT auth (EdDSA and ES256)
βββ api/
β βββ proxy.ts the paid path: challenge β verify β execute β settle
β βββ mcp-server.ts PayGate's own MCP server
β βββ paygate-tools.ts marketplace tools: register, verify, price, earnings
β βββ llms-txt.ts /llms.txt for AI systems arriving over the web
β βββ register.ts developer onboarding
β βββ dev-management.ts profile, pricing, earnings
β βββ discovery.ts server card and UCP manifest
βββ db/schema.ts developers, tools, transactions, payment proofs
Development
npm install
npx wrangler dev # local
npx wrangler deploy # production
Built on Cloudflare Workers, Hono, and D1.
License
MIT
Install
Add PayGate MCP β Monetization Gateway for AI Agents to your client. Pick the one you use.
claude mcp add --transport http paygate-mcp-monetization-gateway-for-ai- https://paygate-mcp.rendercriativo.workers.dev/mcpcodex mcp add paygate-mcp-monetization-gateway-for-ai- --url https://paygate-mcp.rendercriativo.workers.dev/mcp{
"mcpServers": {
"paygate-mcp-monetization-gateway-for-ai-": {
"url": "https://paygate-mcp.rendercriativo.workers.dev/mcp"
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
{
"servers": {
"paygate-mcp-monetization-gateway-for-ai-": {
"type": "http",
"url": "https://paygate-mcp.rendercriativo.workers.dev/mcp"
}
}
}Add to `.vscode/mcp.json` in your workspace.
{
"mcpServers": {
"paygate-mcp-monetization-gateway-for-ai-": {
"url": "https://paygate-mcp.rendercriativo.workers.dev/mcp"
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"paygate-mcp-monetization-gateway-for-ai-": {
"serverUrl": "https://paygate-mcp.rendercriativo.workers.dev/mcp"
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
Score
39 / 100
Incomplete
- Documentation25/25
- Maintenance19/25
- Trust13/20
- Capability0/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 18 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 6 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint β no local install
Version history
| Versions | Published |
|---|---|
| 0.3.1Latest | Aug 14, 2026 |