{"openapi":"3.1.0","info":{"title":"MimirAPI","version":"0.1.0","description":"Pay-per-call tools for agents over x402 (USDC on Base) — no signup, no API key. Screenshot and accessibility-audit any URL, generate QR codes and OG images, validate phone numbers, and route token prices across live providers with cross-validated confidence."},"servers":[{"url":"https://mimirapi.com"}],"paths":{"/v1/ping":{"get":{"operationId":"ping","summary":"Paid liveness probe for the MimirAPI counter","description":"Paid liveness probe for the MimirAPI counter. Returns pong, the SKU id, and a server timestamp. One tenth of a cent buys a complete challenge, sign, settle, serve round trip — the cheapest possible proof that your x402 client wiring works before you spend real money on real SKUs.\n\nPrice: $0.001 per call, settled over x402 (USDC on base).","tags":["test","liveness","x402","micropayment"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"pong":{"type":"boolean"},"sku":{"type":"string"},"ts":{"type":"string","description":"ISO-8601 server time"}},"required":["pong","sku","ts"]},"example":{"pong":true,"sku":"ping","ts":"2026-07-21T00:00:00.000Z"}}}},"402":{"description":"Payment required — $0.001 per call. The body is an x402 challenge listing accepted payment; settle it and retry this exact request.","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array","items":{"type":"object"}}}}}}}},"parameters":[]}},"/v1/provenance/certificate":{"post":{"operationId":"provenance-cert","summary":"Chain-of-custody license certificate for any digital asset: a SHA-256 content hash bound to issuer, subject, and license terms under an HMAC-SHA-256 signature","description":"Chain-of-custody license certificate for any digital asset: a SHA-256 content hash bound to issuer, subject, and license terms under an HMAC-SHA-256 signature. Deterministic, portable, independently verifiable — a receipt an agent can carry to prove what it licensed, from whom, and on what terms.\n\nPrice: $0.25 per call, settled over x402 (USDC on base).","tags":["provenance","license","certificate","signing","trust"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"certificate":{"type":"object"}}},"example":{"certificate":{"issuer":"MimirAPI","subject":"did:web:agent.example.com","license":"CC-BY-4.0","contentHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","issuedAt":"2026-07-21T00:00:00.000Z","signature":"9b1a…hex HMAC-SHA-256…","alg":"HMAC-SHA-256"}}}}},"402":{"description":"Payment required — $0.25 per call. The body is an x402 challenge listing accepted payment; settle it and retry this exact request.","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array","items":{"type":"object"}}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contentHash":{"type":"string","description":"SHA-256 hex of the asset"},"subject":{"type":"string"},"license":{"type":"string"}},"required":["contentHash","subject","license"]},"example":{"contentHash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","subject":"did:web:agent.example.com","license":"CC-BY-4.0"}}}}}},"/v1/visual-review":{"post":{"operationId":"visual-review","summary":"Eyes for agents, for a penny: renders any URL in a real browser (Cloudflare Browser Rendering) and returns a full-page screenshot as an inline PNG plus an axe-core accessibility audit — WCAG violations with rule, impact, fix-it link, and affected-node counts","description":"Eyes for agents, for a penny: renders any URL in a real browser (Cloudflare Browser Rendering) and returns a full-page screenshot as an inline PNG plus an axe-core accessibility audit — WCAG violations with rule, impact, fix-it link, and affected-node counts. Verify a deploy visually, catch layout breakage, and check accessibility in one call, without running a browser yourself. https URLs only.\n\nPrice: $0.01 per call, settled over x402 (USDC on base).","tags":["browser","screenshot","accessibility","audit","render","a11y","wcag"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"screenshot":{"type":"string","description":"Full-page PNG as a data: URI"},"audit":{"type":"object","description":"axe-core violations + summary"},"checkedAt":{"type":"string"}},"required":["url","screenshot","audit"]},"example":{"url":"https://example.com/","screenshot":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUg…","audit":{"violations":[{"id":"color-contrast","impact":"serious","help":"Elements must meet minimum contrast","helpUrl":"https://dequeuniversity.com/rules/axe/4.12/color-contrast","nodes":3}],"summary":{"violations":1,"passes":44,"incomplete":2}},"checkedAt":"2026-07-22T00:00:00.000Z"}}}},"402":{"description":"Payment required — $0.01 per call. The body is an x402 challenge listing accepted payment; settle it and retry this exact request.","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array","items":{"type":"object"}}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Public https URL to render + audit"}},"required":["url"],"additionalProperties":false},"example":{"url":"https://example.com"}}}}}},"/v1/db":{"post":{"operationId":"ephemeral-db","summary":"Ephemeral Postgres for agents: one POST provisions a real database and returns its connection string with a TTL; teardown at expiry is automatic and guaranteed","description":"Ephemeral Postgres for agents: one POST provisions a real database and returns its connection string with a TTL; teardown at expiry is automatic and guaranteed. Scratch space for a pipeline, a test run, or a day of work — priced per DB-day, no signup, no cleanup, no leftovers.\n\nPrice: $0.25 per call, settled over x402 (USDC on base).","tags":["postgres","database","ephemeral","provisioning"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"connectionString":{"type":"string"},"expiresAt":{"type":"string"}}},"example":{"connectionString":"postgres://user:pass@ep-example.neon.tech/neondb","expiresAt":"2026-07-22T00:00:00.000Z","ttlHours":24}}}},"402":{"description":"Payment required — $0.25 per call. The body is an x402 challenge listing accepted payment; settle it and retry this exact request.","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array","items":{"type":"object"}}}}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"ttlHours":{"type":"integer","minimum":1,"maximum":168}}},"example":{"ttlHours":24}}}}}},"/v1/wallet/screen":{"get":{"operationId":"wallet-screen","summary":"Sanctions screen for an EVM wallet: one deterministic read of the public Chainalysis sanctions oracle contract","description":"Sanctions screen for an EVM wallet: one deterministic read of the public Chainalysis sanctions oracle contract. Call it mid-transaction before settling with an unknown counterparty — no account, no API key, one paid call returns sanctioned true/false with the oracle address for independent verification. Fail-closed: if the oracle is unreachable you get an error, never a false all-clear.\n\nPrice: $0.05 per call, settled over x402 (USDC on base).","tags":["compliance","sanctions","wallet","screening","evm","risk"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string"},"sanctioned":{"type":"boolean"},"source":{"type":"string"},"oracle":{"type":"string"},"checkedAt":{"type":"string"}},"required":["address","sanctioned","source"]},"example":{"address":"0x7f367cc41522ce07553e823bf3be79a889debe1b","sanctioned":true,"source":"chainalysis-sanctions-oracle","oracle":"0x40C57923924B5c5c5455c48D93317139ADDaC8fb","checkedAt":"2026-07-21T00:00:00.000Z"}}}},"402":{"description":"Payment required — $0.05 per call. The body is an x402 challenge listing accepted payment; settle it and retry this exact request.","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array","items":{"type":"object"}}}}}}}},"parameters":[{"name":"address","in":"query","required":true,"schema":{"type":"string","description":"0x-prefixed 40-hex-char EVM address"}}]}},"/v1/og-image":{"get":{"operationId":"og-image","summary":"Deterministic 1200x630 social-card SVG from a title and optional subtitle, dark or light theme","description":"Deterministic 1200x630 social-card SVG from a title and optional subtitle, dark or light theme. Same input, byte-identical output — an agent building pages gets an Open Graph image in one call with no headless browser and no font pipeline.\n\nPrice: $0.01 per call, settled over x402 (USDC on base).","tags":["image","og-image","social-card","svg","media"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"svg":{"type":"string"},"width":{"type":"number"},"height":{"type":"number"},"contentType":{"type":"string"}},"required":["svg","width","height"]},"example":{"svg":"<svg xmlns=\"…\" width=\"1200\" height=\"630\">…</svg>","width":1200,"height":630,"contentType":"image/svg+xml","theme":"dark"}}}},"402":{"description":"Payment required — $0.01 per call. The body is an x402 challenge listing accepted payment; settle it and retry this exact request.","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array","items":{"type":"object"}}}}}}}},"parameters":[{"name":"title","in":"query","required":true,"schema":{"type":"string","maxLength":120}},{"name":"subtitle","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"theme","in":"query","required":false,"schema":{"type":"string","enum":["dark","light"]}}]}},"/v1/qr":{"get":{"operationId":"qr-svg","summary":"QR code as a crisp deterministic SVG from any text or URL up to 1000 characters, with selectable error-correction level (L/M/Q/H)","description":"QR code as a crisp deterministic SVG from any text or URL up to 1000 characters, with selectable error-correction level (L/M/Q/H). Vector output scales to any size with no rasterization step.\n\nPrice: $0.002 per call, settled over x402 (USDC on base).","tags":["qr","qrcode","barcode","svg","media"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"svg":{"type":"string"},"modules":{"type":"number"},"ecl":{"type":"string"}},"required":["svg","modules"]},"example":{"svg":"<svg xmlns=\"…\">…</svg>","modules":29,"ecl":"M","contentType":"image/svg+xml"}}}},"402":{"description":"Payment required — $0.002 per call. The body is an x402 challenge listing accepted payment; settle it and retry this exact request.","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array","items":{"type":"object"}}}}}}}},"parameters":[{"name":"data","in":"query","required":true,"schema":{"type":"string","maxLength":1000}},{"name":"ecl","in":"query","required":false,"schema":{"type":"string","enum":["L","M","Q","H"]}}]}},"/v1/chart":{"post":{"operationId":"chart-svg","summary":"Data to chart in one call: a numeric series rendered as a deterministic 800x400 line or bar chart SVG with optional labels and title","description":"Data to chart in one call: a numeric series rendered as a deterministic 800x400 line or bar chart SVG with optional labels and title. No charting library, no browser — an agent composing a report gets a predictable picture of its numbers.\n\nPrice: $0.01 per call, settled over x402 (USDC on base).","tags":["chart","graph","visualization","svg","media"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"svg":{"type":"string"},"type":{"type":"string"},"points":{"type":"number"}},"required":["svg","type","points"]},"example":{"svg":"<svg xmlns=\"…\">…</svg>","type":"bar","points":4,"contentType":"image/svg+xml"}}}},"402":{"description":"Payment required — $0.01 per call. The body is an x402 challenge listing accepted payment; settle it and retry this exact request.","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array","items":{"type":"object"}}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["line","bar"]},"values":{"type":"array","items":{"type":"number"},"minItems":1,"maxItems":100},"labels":{"type":"array","items":{"type":"string","maxLength":24}},"title":{"type":"string","maxLength":80}},"required":["values"]},"example":{"type":"bar","values":[3,7,4,9],"labels":["Q1","Q2","Q3","Q4"],"title":"Settled calls"}}}}}},"/v1/x402-audit":{"post":{"operationId":"x402-audit","summary":"Weigh any x402 counter and get a verdict: does its URL answer a coherent 402, would the CDP Bazaar validator accept its discovery metadata, and is it actually listed in the discovery index? Returns a per-check report (passed / found-wanting / unweighed) with evidence, optionally HMAC-signed","description":"Weigh any x402 counter and get a verdict: does its URL answer a coherent 402, would the CDP Bazaar validator accept its discovery metadata, and is it actually listed in the discovery index? Returns a per-check report (passed / found-wanting / unweighed) with evidence, optionally HMAC-signed. The conformance check every x402 seller needs and no one else runs.\n\nPrice: $0.25 per call, settled over x402 (USDC on base).","tags":["x402","audit","conformance","bazaar","discovery","trust"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":"object","properties":{"resource":{"type":"string"},"balances":{"type":"boolean"},"weighings":{"type":"array","items":{"type":"object"}},"summary":{"type":"object"}},"required":["resource","balances","weighings","summary"]},"certificate":{"type":"object"}},"required":["verdict"]},"example":{"verdict":{"resource":"https://mimirapi.com/v1/ping","balances":true,"ts":"2026-07-21T00:00:00.000Z","weighings":[{"name":"challenge-shape","weight":"passed","detail":"coherent x402 402: 0.001000 USDC on eip155:8453 → 0x40e5…"},{"name":"listing-validity","weight":"passed","detail":"CDP validator: valid, would be indexed"},{"name":"index-presence","weight":"passed","detail":"listed in the CDP discovery index"}],"summary":{"passed":3,"wanting":0,"unweighed":0}}}}}},"402":{"description":"Payment required — $0.25 per call. The body is an x402 challenge listing accepted payment; settle it and retry this exact request.","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array","items":{"type":"object"}}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"https URL of the x402 resource to weigh"}},"required":["url"]},"example":{"url":"https://mimirapi.com/v1/ping"}}}}}},"/v1/route/price":{"get":{"operationId":"route-price","summary":"Live crypto/token spot price in USD, routed to the best live x402 provider and returned normalized","description":"Live crypto/token spot price in USD, routed to the best live x402 provider and returned normalized. Pass ?symbol=BTC (or ETH, WIF, a coin name) and optional ?vs=USD. One integration, always-live: the router ranks providers by measured reliability (cheapest live source wins) and buys on your behalf, falling over to the next provider if one is down — so you never chase a dead endpoint or manage six provider accounts. Add ?verify=1 to cross-validate against a second independent source: the confidence signal reads \"cross-validated\" when they agree within 2%, \"divergent\" (both prices returned, none hidden) when they don't, else \"single-source\". Returns the price, its as-of time, the upstream source(s), and that confidence signal.\n\nPrice: $0.03 per call, settled over x402 (USDC on base).","tags":["price","crypto","market-data","router","x402","oracle"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"priceUsd":{"type":"number"},"asOf":{"type":"string","description":"ISO-8601 as-of time from the upstream source"},"source":{"type":"string"},"confidence":{"type":"string","enum":["single-source","cross-validated","divergent"]},"spreadPct":{"type":"number","description":"Fractional gap between the two sources (present only with ?verify)"},"sources":{"type":"array","items":{"type":"object"}}},"required":["priceUsd","source","confidence","sources"]},"example":{"priceUsd":66277.99,"asOf":"2026-07-22T03:20:08.000Z","source":"geckoterminal (ottoai) + Yahoo Finance (live)","confidence":"cross-validated","spreadPct":0.0043,"sources":[{"provider":"ottoai","priceUsd":66133.93,"costUsd":0.001,"asOf":"2026-07-22T03:20:08.000Z"},{"provider":"x402node","priceUsd":66422.05,"costUsd":0.01,"asOf":"2026-07-22T03:20:10.000Z"}]}}}},"402":{"description":"Payment required — $0.03 per call. The body is an x402 challenge listing accepted payment; settle it and retry this exact request.","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array","items":{"type":"object"}}}}}}}},"parameters":[{"name":"symbol","in":"query","required":true,"schema":{"type":"string","description":"Asset symbol or name (BTC, ETH, WIF, bitcoin)"}},{"name":"vs","in":"query","required":false,"schema":{"type":"string","description":"Quote currency (default USD)"}},{"name":"verify","in":"query","required":false,"schema":{"type":"string","description":"Set to 1/true to cross-validate against a second independent source"}}]}},"/v1/phone/intel":{"get":{"operationId":"phone-intel","summary":"Phone number intelligence for agents: pass any number and get back whether it is a valid E.164 number, its country, the carrier that holds it, and the line type — mobile, landline, or VoIP","description":"Phone number intelligence for agents: pass any number and get back whether it is a valid E.164 number, its country, the carrier that holds it, and the line type — mobile, landline, or VoIP. One paid call, no account, no API key. Decide whether a number is worth calling or texting, or flag a VoIP number before you trust it. Free-format numbers are normalized; a syntactically bad number is rejected before any charge.\n\nPrice: $0.03 per call, settled over x402 (USDC on base).","tags":["phone","telephony","number-lookup","carrier","line-type","voip","validation"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"Normalized E.164"},"valid":{"type":"boolean"},"countryCode":{"type":"string"},"carrier":{"type":"string"},"lineType":{"type":"string","description":"mobile | landline | voip | ..."},"source":{"type":"string"},"checkedAt":{"type":"string"}},"required":["number","valid","source"]},"example":{"number":"+14155552671","valid":true,"countryCode":"US","carrier":"Verizon Wireless","lineType":"mobile","source":"telnyx-number-lookup","checkedAt":"2026-07-22T00:00:00.000Z"}}}},"402":{"description":"Payment required — $0.03 per call. The body is an x402 challenge listing accepted payment; settle it and retry this exact request.","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array","items":{"type":"object"}}}}}}}},"parameters":[{"name":"number","in":"query","required":true,"schema":{"type":"string","description":"Phone number in E.164 (+14155552671) or loosely formatted"}}]}},"/v1/sms":{"post":{"operationId":"send-sms","summary":"Send an SMS on your agent behalf: one POST with an E.164 recipient and message text hands the message to a real carrier and returns a delivery receipt id","description":"Send an SMS on your agent behalf: one POST with an E.164 recipient and message text hands the message to a real carrier and returns a delivery receipt id. No account, no API key — pay per message over x402. The recipient is validated to E.164 before sending and the body is length-bounded; a rejected or undelivered message is never charged. Telephony as an access primitive: reach a human, not just an HTTP endpoint.\n\nPrice: $0.05 per call, settled over x402 (USDC on base).","tags":["sms","telephony","messaging","notification","text","a2p"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Provider message id"},"to":{"type":"string"},"from":{"type":"string"},"status":{"type":"string","description":"queued | sending | ..."},"segments":{"type":"number"},"source":{"type":"string"},"sentAt":{"type":"string"}},"required":["to","status","source"]},"example":{"id":"msg_0Ac…","to":"+14155552671","from":"+15550001111","status":"queued","segments":1,"source":"telnyx-messaging","sentAt":"2026-07-22T00:00:00.000Z"}}}},"402":{"description":"Payment required — $0.05 per call. The body is an x402 challenge listing accepted payment; settle it and retry this exact request.","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"accepts":{"type":"array","items":{"type":"object"}}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"to":{"type":"string","description":"Recipient in E.164 (+14155552671)"},"text":{"type":"string","maxLength":320,"description":"Message body (<= 320 chars)"}},"required":["to","text"],"additionalProperties":false},"example":{"to":"+14155552671","text":"Your agent says hello."}}}}}}}}