Wraps any Express endpoint with USDC paywalls using the x402 payment protocol on Base L2. The SDK intercepts requests, responds with 402 Payment Required plus payment metadata, validates EIP-712 signatures from paying agents, then settles atomically through an on-chain escrow contract. Useful when you want to monetize MCP tool endpoints or API routes with crypto micropayments without building your own payment infrastructure. Payers sign gasless authorizations using USDC's native transferWithAuthorization, and your relayer handles settlement. The middleware injects transaction receipts into request objects so downstream handlers can log or return them. Operates entirely on Base mainnet with sub-second finality.
Ultra-lightweight x402 payment interceptor for AI Agents and MCP Servers. Monetize any API in 3 lines of code.
npm install m2mcent-sdk
import { X402Handler } from 'm2mcent-sdk';
const x402 = new X402Handler({
rpcUrl: 'https://mainnet.base.org',
privateKey: process.env.RELAYER_PRIVATE_KEY!,
recipient: process.env.TREASURY_ADDRESS!
});
// Protect any Express endpoint with a USDC paywall
app.post('/api/analyze', x402.requirePayment("100000"), (req, res) => {
res.json({ result: "Premium analysis complete", receipt: req.paymentTx });
});
M2MCent implements the x402 Payment Protocol — a machine-native payment standard inspired by HTTP 402:
402 Payment Required + payment metadata (Base64 encoded)Agent ──► API Server ──► 402 + metadata
Agent ◄── signs EIP-712 authorization
Agent ──► API Server + Payment-Signature header
└──► Escrow.settle() on Base L2
Agent ◄── Premium Response + tx hash
| Parameter | Description | Required |
|---|---|---|
rpcUrl | Base Mainnet RPC endpoint | ✅ |
privateKey | Relayer wallet private key (for settlement) | ✅ |
recipient | Treasury address to receive payments | ✅ |
transferWithAuthorization (USDC native)| Parameter | Value |
|---|---|
| Network | Base Mainnet (Chain ID: 8453) |
| USDC Contract | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
| Escrow Contract | 0xf3c3416A843d13C944554A54Ac274BB7fF264BcC |
| Settlement | Atomic, sub-second finality |
Perfect for Model Context Protocol servers:
import express from 'express';
import { X402Handler } from 'm2mcent-sdk';
const app = express();
const x402 = new X402Handler({
rpcUrl: process.env.BASE_RPC_URL!,
privateKey: process.env.RELAYER_PRIVATE_KEY!,
recipient: process.env.TREASURY_ADDRESS!
});
// Any MCP tool endpoint becomes monetizable
app.post('/api/tools/analyze', x402.requirePayment("50000"), async (req, res) => {
const result = await runMCPTool(req.body);
res.json({ ...result, paymentTx: req.paymentTx });
});
M2MCent powers 100+ production MCP servers on Base Mainnet, processing real USDC micro-payments for AI-to-AI commerce.
MIT © M2MCent
BASE_RPC_URL*Base Mainnet RPC endpoint URL
RELAYER_PRIVATE_KEY*secretRelayer wallet private key for on-chain settlement
TREASURY_ADDRESS*Treasury wallet address to receive payments
io.github.shelvick/shopify-subscription-reconciliation
zleventer/google-ads-mcp
csoai-org/meok-stripe-acp-checkout-mcp
io.github.mharnett/google-ads
csoai-org/stripe-billing-mcp
co.pipeboard/google-ads-mcp