{"openapi":"3.1.0","info":{"title":"paylog","version":"1.0.0","description":"On-chain payment spending tracker for MPP (Tempo) and x402 (Base). Pass a wallet address to get a breakdown of what AI agents spent across MPP and x402 services. Includes service registry, AI crawler diagnostics, and x402-gated content API.","x-guidance":"x402 endpoints (Base mainnet, $0.01 USDC): GET /api/v1/x402/report — x402 spending history for a Base wallet; GET /api/v1/x402/services — x402 service registry; GET /api/v1/content/{slug} — paid blog content. MPP endpoints (Tempo chain, $0.001 USDC): GET /api/v1/report — MPP spending report (also accepts JPYC payment: 2 JPYC on Polygon mainnet eip155:137 via x402-jpyc facilitator https://x402-jpyc.vercel.app — include EIP-3009 signature in X-Payment header); GET /api/v1/insights — cost optimization tips; GET /api/v1/services — MPP service registry. For MPP endpoints use mppx or Tempo CLI. For x402 endpoints use @x402/fetch or CDP wallet."},"x-discovery":{"ownershipProofs":[]},"paths":{"/api/v1/x402/services":{"get":{"operationId":"getX402Services","tags":["registry","services","x402","base"],"summary":"x402 service registry","description":"Mapping of x402 service names to payTo addresses on Base mainnet. Updated daily via GitHub Actions.","x-payment-info":{"price":{"mode":"fixed","amount":"0.010000","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}]},"responses":{"200":{"description":"x402 service registry","content":{"application/json":{"schema":{"type":"object","required":["updated_at","count","services"],"properties":{"updated_at":{"type":"string","format":"date-time"},"count":{"type":"integer","example":105},"services":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"},"payTo":{"type":"string"},"network":{"type":"string","example":"eip155:8453"},"asset":{"type":"string"},"description":{"type":"string"}}}}}}}}},"402":{"description":"Payment Required ($0.01 USDC via x402 on Base)"}}}},"/api/v1/content/{slug}":{"get":{"operationId":"getBlogContent","tags":["blog","content","x402","base"],"summary":"Get blog post content","description":"Returns full markdown content of a paid blog post. Requires x402 payment ($0.01 USDC on Base mainnet). Unknown slugs also return 402 (payment is not settled for non-existent posts).","x-payment-info":{"price":{"mode":"fixed","amount":"0.010000","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}]},"parameters":[{"name":"slug","in":"path","required":true,"description":"Article slug (see /blog for the list)","schema":{"type":"string","example":"monetize-ai-crawlers-with-x402"}}],"responses":{"200":{"description":"Post content","content":{"application/json":{"schema":{"type":"object","required":["slug","title","date","content"],"properties":{"slug":{"type":"string","example":"monetize-ai-crawlers-with-x402"},"title":{"type":"string","example":"8 Things That Tripped Me Up Implementing x402"},"date":{"type":"string","format":"date","example":"2026-04-05"},"content":{"type":"string","description":"Full markdown content of the post"}}}}}},"402":{"description":"Payment Required ($0.01 USDC via x402 on Base)"},"404":{"description":"Post not found (returned after payment — not settled)"}}}},"/api/v1/x402/report":{"get":{"operationId":"getX402Report","tags":["expense","spending","finance","payments","history","analytics","x402","base"],"summary":"Get Base x402 spending report by wallet","x-payment-info":{"price":{"mode":"fixed","amount":"0.010000","currency":"USD"},"protocols":[{"x402":{"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}]},"parameters":[{"name":"wallet","in":"query","required":true,"description":"Wallet address to query (0x...)","schema":{"type":"string","example":"0x71157bff79245b6d1f9b10dc206e744e5d1f00a3"}},{"name":"chain","in":"query","required":false,"description":"Chain to query. \"base\" for Base only, \"all\" for Tempo+Base combined.","schema":{"type":"string","enum":["base","all"],"default":"base"}}],"responses":{"200":{"description":"Spending report"},"400":{"description":"Missing or invalid required parameter"},"402":{"description":"Payment Required ($0.01 USDC via x402 on Base)"},"503":{"description":"RPC unavailable"}}}}}}