Give an AI agent permission to buy one exact x402 resource under a bounded grant—without giving the agent a wallet key.
x402 moves money; ACM governs authority.
Developer preview. The protected buyer flow is implemented and tested on Base Sepolia. Seller and data-exchange helpers are experimental local previews; they do not settle payments or prove buyer demand.
Current release: v0.1.0-preview.24.
Public CLI/SDK access is not public gateway access. See the availability and integration matrix for package differences, current recipe coverage, and the private-dashboard boundary.
Start with the short tester guide: check the live catalog, inspect a local synthetic buyer result, and tell us what worked or where you got stuck. No account or gateway access is needed. Commands work in PowerShell and Bash; allow time for the first download.
Send tester feedback. A private Base Sepolia pilot is optional and separately arranged with an operator.
Requirements: Node.js 20+ and internet access. No clone, account, wallet, or private key is required.
npx --yes https://github.com/InTheta/agent-capability-middleware/archive/refs/tags/v0.1.0-preview.24.tar.gz doctor \
> acm-no-spend-report.jsonSuccess means the report contains:
{
"ok": true,
"mode": "live_no_spend",
"canonicalRoutes": 9,
"spent": false,
"secretsIncluded": false
}The check reads Coinbase's public x402 Bazaar catalog, confirms all nine canonical Omni routes, and validates the current 0.010 Base Sepolia USDC market-risk quote. It creates no signature or payment.
npx --yes https://github.com/InTheta/agent-capability-middleware/archive/refs/tags/v0.1.0-preview.24.tar.gz demo buyerThe deterministic preview validates a fresh, schema-matched synthetic paid result. It does not create or revoke a real grant, contact a seller, or settle a payment. Any 0xmock_... receipt is deliberately not a chain transaction. Grant creation, revocation, and denial are checked separately in the controlled paid test.
npm install github:InTheta/agent-capability-middleware#v0.1.0-preview.24import {
AgentCapabilityClient,
createOmniPaymentRequest,
createOmniX402Recipe,
requireFreshPaidResult,
} from "@agent-capability-middleware/sdk";
const acm = new AgentCapabilityClient(process.env.ACM_GATEWAY_URL!, {
apiKey: process.env.ACM_API_KEY,
});
const recipe = createOmniX402Recipe({ kind: "market_risk", symbol: "BTC" });
const request = createOmniPaymentRequest(
"grant_approved_by_user",
recipe,
crypto.randomUUID(),
);
const result = await acm.consumeX402Testnet(request);
const data = requireFreshPaidResult(result, { expectedSchema: recipe.schema });The gateway—not the SDK or agent—holds the payer key. It checks the grant, exact URL, purpose, amount, network, asset, payee, expiry, idempotency key, approval state, and revocation state before settlement.
This is not a public signup or part of the no-wallet test. Express interest through the tester feedback form; an operator must separately arrange protected access and confirm a dedicated Base Sepolia payer is ready. Only then follow the private-pilot checklist. The pilot checks a real testnet purchase, fresh schema-matched response, receipt, revocation, and denial before a second settlement. Return reviewed reports privately to your operator. No mainnet funds or payer keys are needed from a tester.
| Goal | Command or guide | Status |
|---|---|---|
| Validate all nine live Bazaar routes without paying | acm doctor |
Implemented |
| Inspect one live Bazaar route without paying | acm inspect |
Implemented |
| Build exact calls across all nine Omni x402 products | acm recipes |
Implemented |
| Buy through a protected, policy-bound payer | Getting started | Implemented on Base Sepolia |
| Buy a bounded Omni MCP tool through the protected payer | consumeX402McpTestnet |
Implemented on Base Sepolia |
| Charge agents for a developer API | acm demo developer-seller |
Experimental local offer helper |
| Offer a user-confirmed minimum-disclosure capability | acm demo user-seller |
Experimental local offer helper |
| Compare both offer types | acm demo exchange |
Experimental local directory |
The nine canonical Omni templates cover targeted and market-wide AI news, exact time windows,
all bounded liquidation views, all seven trader ranks, public trader-profile projections,
15/60-minute composite market risk, candles with optional liquidation overlay, current market
entity resolution, and current funding/carry. acm recipes
prints 25 concrete no-spend request plans over those templates; it does not claim 25 Bazaar
listings.
flowchart LR
U["User policy"] --> G["Protected ACM gateway"]
A["Buyer agent"] --> G
G --> X["x402 service"]
G -. "bounded settlement" .-> B["Base USDC"]
G --> L["Receipt and audit"]
MCP can carry tool calls, OAuth/OIDC can identify workloads and users, verifiable credentials can carry attestations, and x402 carries payment requirements and proofs. ACM composes existing standards rather than replacing them. The protected gateway now applies the same exact grant and payment binding to four bounded Omni MCP tools.
ACM also explores the other side of the market: a developer can describe a paid API, and a user can offer a confirmed, minimized capability under Free, Paid, Ask, or Deny policy. These helpers are useful for product design and local testing, but they are not yet hosted settlement, fulfilment, an auction, or a production data marketplace.
npx --yes https://github.com/InTheta/agent-capability-middleware/archive/refs/tags/v0.1.0-preview.24.tar.gz demo developer-seller
npx --yes https://github.com/InTheta/agent-capability-middleware/archive/refs/tags/v0.1.0-preview.24.tar.gz demo user-seller
npx --yes https://github.com/InTheta/agent-capability-middleware/archive/refs/tags/v0.1.0-preview.24.tar.gz demo exchangeSee runnable examples and the user seller preview.
git clone https://github.com/InTheta/agent-capability-middleware.git
cd agent-capability-middleware
npm ci
npm run verifyVerification type-checks the SDK and a consumer, runs the test suite and privacy checks, exercises the examples, packs and installs the package in a clean temporary project, and checks the CLI and fresh-developer lifecycle.
CI also rebuilds the committed dist/ directory and fails if the shipped GitHub-install artifact
does not exactly match the TypeScript source.
This repo contains the public SDK, request builders, local evidence minimizer, experimental offer helpers, examples, and tests. It does not contain private keys, a hosted vault, production identity verification, a live user-data marketplace, guaranteed user revenue, or a production fraud/risk control plane.
- Test ACM — no wallet required
- Getting started
- Runnable examples
- Omni agent recipes
- SDK API
- x402 integration
- Architecture
- Privacy-safe learning
- Security
- Roadmap
Apache-2.0 licensed.