Skip to main content
This page carries the entire agent purchase flow: three routes, the payment handshake, the response shape, and the errors. No other page is required to complete a transaction. Base URL: https://xintel.aispace.bot OpenAPI: https://xintel.aispace.bot/openapi.json — machine catalog of this API (what Xintel reports are, paths, pricing handshake). Paste into an x402 marketplace import or codegen tool. Product: shared report bodies only — never profile, posts, or edges. Price: $0.01 USDC × N reports on Base (chain 8453). The live unit price is extensions.unitPriceUsd in the 402. Paid steps require a Base wallet funded with USDC. Browsing is free.

Routes

Three routes reach the same endpoints at the same $0.01/report price. Use the first one the environment supports. The CLI is the default: it runs the full payment loop and removes the failure modes of the raw route — no x402/viem install, no ESM/CJS mismatch, no 0x-prefix or x402Version handling. When the raw route fails in a given environment, the CLI is the resolution, not a workaround.

Route 1 — CLI (default)

One command buys a report. npx fetches and caches the package; nothing is installed. The CLI runs the entire 402 → sign → retry loop.
Add --json to any command for the raw response. XINTEL_AGENT_KEY is read from the environment only, never a flag. The client runs locally; the key never reaches Xintel’s servers. This is the complete flow. The sections below cover the other two routes and the shared reference detail.

Route 2 — MCP

For persistent hosted agents, add the same package as an MCP server. One-time setup, then call the tools directly:
Tools exposed:

Route 3 — Raw HTTP (fallback)

For environments that cannot run Node. Same endpoints and price as the CLI, with the 402 → sign → retry loop implemented directly.

Steps

  1. GET /api/intel/list — pick a username (free, no auth).
  2. GET /api/intel/reports?username={u} — read the menu: id, createdAt, model, dateRange (free, no auth).
  3. Choose a selection:
    • All: …&select=all
    • Range: …&select=range&ids=a,b and/or from= / to= (ISO, compared against createdAt).
  4. On the 402: read accepts[0]network (eip155:8453), asset (USDC), amount (base units, 6dp), payTo.
  5. Pay, then resend the identical URL with X-402-Payment: <payload> (or X-Payment).
  6. On 200: use reports[] — each is an IntelReportSnapshot. Body: { username, select, reportCount, chargedUsd, reports }.

The 402 challenge

amount is USDC base units (6 decimals — 10000 = $0.01). The asset is USDC on Base (chain 8453). payTo is the deployment’s receiver wallet.

Paying (step 5)

Use a standard x402 client with a funded Base USDC wallet. It reads accepts[0], signs, and produces the header. The underlying instrument is an EIP-3009 TransferWithAuthorization for USDC on Base (USDC only — no gas).
Build the payment from the latest 402 response — never hardcode amount, payTo, or asset.

Response shape (all routes)

A successful purchase returns:
chargedUsd is the required amount (unit × N), not the settled amount — overpayment is not reflected here. Each IntelReportSnapshot carries id, createdAt, model, synthesisSettings, meta, computed analytics, AI narrative, an optional changeSummary, and previousReportId. Treat unknown fields as forward-compatible.

Constraints

  • These routes never return bundle/corpus fields (profile, posts, edges).
  • Do not reuse a nonce / payment id (409 payment_already_used).
  • Send the payment on the identical URL that returned the 402.

Errors

400 bad query · 402 pay and retry (or insufficient_payment) · 404 unknown handle or empty range · 409 payment reused · 501 settlement not configured · 502 upstream/storage failure · 503 store not configured. A bare 402 with no settled retry is the normal payment handshake, not an error — read accepts and extensions, pay, then retry.

Reference

The pages above complete a purchase. These expand individual areas:

Machine index

Use the site’s /llms.txt, /llms-full.txt, and per-page .md exports. Agent rules are also injected via markdown.instructions in docs.json.