If you're building AI agents that need to handle micropayments on Base, this server gives Claude direct access to x402 payment routing and settlement. It exposes seven core skills: listing facilitators, getting route quotes with fee comparisons, verifying payment intents, fetching settlement receipts, and running budget simulations. The underlying SDK talks to NexFlow's API for payment verification and batch settlement via Merkle proofs on the AtomicBatchSettlement contract. You'd reach for this when gating API access behind pay-per-call pricing or building agents that need to pay for third-party services autonomously. The repo includes a Lambda@Edge example for dropping 402 gating in front of CloudFront without touching your backend.
The x402-native metered billing and routing brain for AI agents and SaaS APIs on Base.
NexFlow SMF routes, verifies, and settles x402 micropayments on Base. It acts as an intelligent intermediary between payers and facilitators, selecting the optimal route based on cost, latency, and reliability. This repository contains the on-chain settlement contracts, TypeScript SDK, agent manifest specification, and integration examples.
Discover AI agent services with x402 payment routing through NexFlow SMF. Submit your service to the catalog.
| Component | Description |
|---|---|
contracts/ | Solidity contracts for atomic batch settlement with Merkle proof verification |
sdk/ | Zero-dependency TypeScript SDK (@nexflow-smf/smf) for routing, verification, and settlement |
examples/ | Ready-to-run examples demonstrating common integration patterns |
examples/workflows/ | JSON workflow definitions for the NexFlow SMF workflow host |
examples/client/ | Minimal TypeScript clients showing the 402 → pay → retry pattern |
Canonical list of NexFlow SMF skills. Each skill has a SKILL.md (for Cursor/agents) and lives in nexflow-smf-skills/. Machine-readable manifest: skills-manifest.json · API: GET https://api.nexflowapp.app/.well-known/skills (redirects to manifest).
| Skill | Description |
|---|---|
| List Facilitators | Discover active x402 facilitators by network/asset before quoting or paying. |
| Route Matrix | Compare priced routes (fees, latency) across facilitators for USDC on Base. |
| Route Quote | Get a single priced quote for a chosen facilitator before committing. |
| Settlement Receipt | Fetch a settlement receipt for a completed x402 payment for logs or audits. |
| Healthcheck | Ping NexFlow SMF for status and latency before routing payments. |
| Simulate Charge | See x402 pricing headers without performing a real payment. |
| Budget Plan | Turn a USDC budget into an approximate number of SMF API calls. |
Discover NexFlow services as AgentCards, ready for AI agents and x402-aware clients:
https://nexflow-agentcards.pages.dev/
Drop a Lambda@Edge function in front of CloudFront. Every request to a protected path must include a valid x402-payment header — otherwise the client gets a 402 Payment Required with payment instructions. No backend changes needed.
How it works:
/x402/verify with the payment proof (not billed). If valid, attaches a settlementIntentId and forwards to origin. If invalid, returns 402.settlementIntentId. If origin status < 400, calls /x402/settle to confirm delivery (this is the billable event). Returns the response unchanged.Get started in 15 minutes:
For server-side integrations where you control the request lifecycle — route payments, verify intents, and trigger batch settlement from your own code.
npm install @nexflow-smf/smf
import { NexFlowSMFClient } from '@nexflow-smf/smf';
const smf = new NexFlowSMFClient({
baseUrl: 'https://api.nexflowapp.app',
apiKey: process.env.NEXFLOW_API_KEY!,
});
// Route a payment
const route = await smf.route({
amount_wei: '1000000',
token_address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
chain_id: 'eip155:8453',
payment_id: 'order-123',
});
// Verify a payment intent
const result = await smf.verify({
payment_intent: 'x402:1:base:0xabc...',
recipient_address: '0xYourAddress...',
});
| Path | Description |
|---|---|
examples/aws-cloudfront-lambdaedge/ | 15-minute AWS quickstart — Lambda@Edge x402 pay-per-request gating |
examples/basic-settlement.ts | End-to-end SDK example: route, verify, settle |
sdk/ | Zero-dependency TypeScript SDK (@nexflow-smf/smf) |
contracts/ | Solidity contracts for atomic batch settlement with Merkle proofs |
docs/ | API reference, facilitator contract, production checklist |
AGENT_MANIFEST_V1.md | Agent Manifest spec for machine-to-machine discovery |
nexflow-smf-skills/ | Cursor-style agent skills (route-matrix, quote, receipt, facilitators, health, simulate, budget) |
PRICING.md | Pricing model with example scenarios |
| Service | Description | Status |
|---|---|---|
| Smart Meta-Facilitator | Intelligent payment routing, verification, and batch settlement | Live |
| CloudFront Edge Gating | Lambda@Edge adapter for pay-per-request access via CloudFront | Live |
| Agent Manifest & Discovery | Machine-readable capability manifest for AI agent integration | Live |
| Pulse Scheduler | Metered job scheduling with x402 billing (cron, webhooks, tasks) | Live |
| Action Catalog | Pre-built metered actions (Shopify, Salesforce, data enrichment) | Live |
| Contract | Address | Explorer |
|---|---|---|
| AtomicBatchSettlement | 0x43A04228152115fDd5663B2Aa559Ebd84D17A49D | BaseScan |
| USDC | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 | BaseScan |
NexFlow SMF allows agents to define, publish, and monetize hosted workflows — multi-step compositions of core SMF operations that other agents can invoke via the 402/MPP payment gateway.
Workflows can compose any of these paid SMF operations:
| Operation | Description |
|---|---|
create_session | Create a metered session with a budget |
budget_check | Check planned charges against budgets |
budget_diagnostics | Analyze sessions for overrun risk |
process_charges | Deduct charges from a session or caller |
verify_payment | Validate a payment descriptor |
settle_batch | Settle a batch of transactions |
revenue_share | Record revenue-share accounting for a period |
route_quote | Get a payment routing quote |
usage_timeseries | Time-series spend data for a caller/session |
configure_alerts | Set budget/usage alert thresholds |
monitor_sessions | List sessions with budget & spend status |
monitor_alerts | Return triggered budget/usage alerts |
pricing_estimate | Estimate cost of a set of operations |
examples/workflows/safety_capped_session_runner.json
A 5-step workflow that:
examples/workflows/usage_health_check.json
A 3-step diagnostic workflow that:
examples/workflows/revenue_share_settlement.json
A 5-step workflow demonstrating the full payment lifecycle:
The workflow creator earns their standard rev-share (set via creatorShareBps) on every invocation. Rev-share credits accumulate per wallet and are batched for payout when they reach $5+.
Input example:
{
"sessionBudget": { "amount": 2000000, "currency": "USDC" },
"charges": [
{ "callerId": "agent_a", "amount": 500000, "description": "API usage week 12" },
{ "callerId": "agent_b", "amount": 300000, "description": "Compute usage week 12" }
],
"settlementPeriod": "2026-03-01/2026-03-31"
}
# Register the Safety-Capped Session Runner
curl -X POST "$NEXFLOW_SMF_BASE_URL/nexflow/workflows" \
-H "Content-Type: application/json" \
-H "X-Caller-Id: demo_caller" \
--data-binary "@examples/workflows/safety_capped_session_runner.json"
Response:
{
"workflowId": "wf_abc123_1",
"name": "Safety-Capped Session Runner",
"invokeUrl": "/nexflow/workflows/wf_abc123_1/invoke",
"status": "active",
"steps": 5,
"pricing": { "billingMode": "per_call", "markupBps": 300 }
}
# First call — no payment proof → 402 Payment Required
curl -X POST "$NEXFLOW_SMF_BASE_URL/nexflow/workflows/wf_abc123_1/invoke" \
-H "Content-Type: application/json" \
-H "X-Caller-Id: demo_caller" \
--data '{
"requestedBudget": { "amount": 500000, "currency": "USDC" },
"plannedCost": { "amount": 50000, "currency": "USDC" }
}'
The first call returns HTTP 402 with a payment challenge:
{
"object": "payment_challenge",
"operation": "workflow_invoke",
"workflow_id": "wf_abc123_1",
"required_amount": 17350,
"currency": "usdc",
"price_breakdown": {
"totalPrice": 17350,
"baseCost": 7000,
"markup": 210,
"platformFee": 149
},
"instructions": "Pay via MPP using the challenge above, then retry with X-PAYMENT-PROOF header."
}
After the agent pays (via Tempo MPP or x402), it retries with the proof:
# Second call — with valid proof → 200 OK
curl -X POST "$NEXFLOW_SMF_BASE_URL/nexflow/workflows/wf_abc123_1/invoke" \
-H "Content-Type: application/json" \
-H "X-Caller-Id: demo_caller" \
-H "X-PAYMENT-PROOF: <base64-encoded-proof-json>" \
--data '{
"requestedBudget": { "amount": 500000, "currency": "USDC" },
"plannedCost": { "amount": 50000, "currency": "USDC" }
}'
See examples/client/invokeUsageHealthCheck.ts for a runnable demo of the full 402 → proof → retry flow.
export NEXFLOW_SMF_BASE_URL=http://localhost:3001
export WORKFLOW_ID=wf_abc123_1
npx tsx examples/client/invokeUsageHealthCheck.ts
| Variable | Required | Description |
|---|---|---|
NEXFLOW_API_KEY | Yes | Your NexFlow API key (nf_live_xxx or nf_test_xxx) |
NEXFLOW_BASE_URL | No | Override API URL (default: https://api.nexflowapp.app) |
NEXFLOW_SMF_BASE_URL | No | NexFlow SMF bridge URL for workflow invocations (default: http://localhost:3001) |
WORKFLOW_ID | No | Workflow ID for the client example scripts |
Sign up or log in at nexflowapp.app, go to Developers → API Keys, and click Create API key. Use that key with the examples in this repo.
Never commit API keys or secrets. Use environment variables or a secrets manager.
| Network | Chain ID | Status |
|---|---|---|
| Base mainnet | eip155:8453 | Primary |
| Token | Address | Decimals |
|---|---|---|
| USDC | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 | 6 |
| Doc | What's inside |
|---|---|
| Facilitator API | /verify and /settle contracts, settlementIntentId lifecycle, error handling, retry guidance |
| API Reference | All endpoints (SMF core, x402 routing, agent discovery), SDK reference, contract ABI |
| Production Checklist | Idempotency, latency, CloudWatch logging, failure modes, key rotation |
| Pricing | Pulse metering, facilitator settle-only pricing, example scenarios |
| Agent Manifest | Machine-to-machine capability discovery spec |
| SDK README | Full SDK docs: installation, methods, error handling, utilities |
cd sdk
npm install
npm run build # Build for production (CJS + ESM + types)
npm run dev # Watch mode
npm run typecheck # Type checking
# SDK example
cd sdk && npm install
npx tsx ../examples/basic-settlement.ts
# Lambda@Edge example
cd examples/aws-cloudfront-lambdaedge
npm install
npm run build # requires NEXFLOW_FACILITATOR_URL and NEXFLOW_API_KEY
We welcome contributions! See CONTRIBUTING.md for guidelines.
For security concerns, see SECURITY.md.
MIT License — see LICENSE for details.
Built for the x402 ecosystem on Base
NEXFLOW_API_KEY*secretNexFlow API key (format: nf_live_* or nf_test_*)
NEXFLOW_BASE_URLAPI base URL (default: https://api.nexflowapp.app)