{"openapi": "3.1.0", "info": {"title": "LLM Red-Team Scanner (llmrt)", "version": "1.0.0", "description": "LLM agent red-team scanner: 24-probe / 9-class / 0-100 risk report + CI gate. HTTP 402 pay-per-scan on Nano (x402 exact) or USDC on Base. No key, no KYC, on-chain verifiable delivery (sha256 + re-run command + block hash). Also sells x402 endpoint interop audits (official SDK differential, 6 checks, sha256 report).", "x-guidance": "GET /pro/402 returns an x402 402 challenge (Payment-Required header, base64 JSON) with accepts[] on nano:mainnet / eip155:8453 (USDC) / eip155:1 (USDT). Sign the payment (Nano state block or EIP-3009), retry the GET with the payment header to receive the report. GET /pro/audit-402 is the same engine surfaced for security-audit queries. GET /pro/micro-402 is the 0.01 XNO frictionless entry. Free tier: POST /agent-scan.", "contact": {"email": "llmrt@agents.world"}}, "servers": [{"url": "https://qdmbzzwftor2rgmxupyyasguhy.srv.us"}], "paths": {"/pro/402": {"get": {"operationId": "llm_red_team", "summary": "LLM red team scan and AI agent security audit: prompt injection, jailbreak detection, system prompt extraction, MCP tool abuse, 44 probes, 0-100 risk score, CI gate", "tags": ["llm", "security", "redteam", "audit", "prompt-injection", "jailbreak"], "x-category": "security", "description": "Security audit of any LLM agent / system prompt / tool spec. Detects prompt injection, jailbreak, system prompt extraction, and MCP tool abuse. 44 probes, 20 attack classes, 0-100 risk score, CI-gate output. HTTP 402 pay-per-call: nano:mainnet (0.050634 USD) or base USDC. GET with order_id after payment delivers report ZIP + sha256 + block hash.", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.050634"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment to receive the report.", "schema": {"type": "string"}}, {"name": "callback_url", "in": "query", "required": false, "description": "Optional HTTPS callback for delivery notification.", "schema": {"type": "string", "format": "uri"}}, {"name": "X-AGENT-PUBKEY", "in": "header", "required": false, "description": "64-hex nostr pubkey of the calling agent; order outcome is DM back on Nostr.", "schema": {"type": "string"}}], "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON, v1 schema)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: report + download URL + sha256 + re-run command", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "token": {"type": "string"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/pro/audit-402": {"get": {"operationId": "security_audit", "summary": "AI security audit of any LLM agent, including its system prompt and tool definitions: prompt injection audit, jailbreak detection, vulnerability assessment, MCP tool abuse, 44 probes, 0-100 risk score", "tags": ["llm", "security", "audit", "prompt-injection", "jailbreak"], "x-category": "security", "description": "Prompt injection audit and jailbreak detection for any LLM agent, system prompt, or tool spec. AI agent security audit with 44 probes, 20 attack classes, 0-100 risk score, per-probe evidence, CI gate. HTTP 402 pay-per-call: nano:mainnet (0.050634 USD) or base USDC. GET with order_id after payment delivers the audit report ZIP + sha256 + block hash.", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.050634"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment to receive the audit report.", "schema": {"type": "string"}}, {"name": "callback_url", "in": "query", "required": false, "description": "Optional HTTPS callback for delivery notification.", "schema": {"type": "string", "format": "uri"}}, {"name": "X-AGENT-PUBKEY", "in": "header", "required": false, "description": "64-hex nostr pubkey of the calling agent; order outcome is DM back on Nostr.", "schema": {"type": "string"}}], "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON, v1 schema)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: audit report + download URL + sha256 + re-run command", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "token": {"type": "string"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/pro/micro-402": {"get": {"operationId": "micro_red_team", "summary": "Micro red team scan", "tags": ["llm", "security", "redteam", "prompt-injection"], "x-category": "security", "description": "Quick LLM security check: prompt injection, jailbreak, system prompt extraction, tool abuse - 8 probes, 0-100 risk score. HTTP 402 pay-per-call, 0.01 XNO on Nano mainnet. Frictionless entry for agents. 402 until paid, 200 + report after.", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.003375"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after paying the one-time nano address.", "schema": {"type": "string"}}, {"name": "ref", "in": "query", "required": false, "description": "Stable buyer self-identifier (or X-Buyer-Ref header); keeps retries on the same order.", "schema": {"type": "string"}}, {"name": "X-Buyer-Ref", "in": "header", "required": false, "description": "Stable buyer self-identifier, same effect as ?ref=.", "schema": {"type": "string"}}], "responses": {"402": {"description": "Payment required (x402)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: micro report (full kit download)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/page-to-markdown-402": {"get": {"operationId": "page-to-markdown", "summary": "Convert a web page to clean markdown: page to markdown, clean web page markdown, html to markdown, read url content, extract article text, strip scripts nav ads cookie banners, keep title headings paragraphs lists links code", "description": "Web page to Markdown: read any public URL as clean text. Use this when an agent needs to read a URL for research, RAG, monitoring or summarization without an API key or a browser: one HTTPS fetch of static HTML, scripts/styles/navigation/ads stripped, title and main content returned, sha256 of the text included so the buyer can verify delivery. Give ?url=, pay, GET again with ?order_id=. Private and loopback addresses refused before payment.", "tags": ["scraping", "markdown", "content-extraction", "html-to-markdown", "readability", "article"], "x-category": "web", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.000978"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "url", "in": "query", "required": true, "description": "Public http(s) page to convert. Private, loopback, link-local and metadata addresses are refused before payment.", "schema": {"type": "string"}}, {"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment to receive the text.", "schema": {"type": "string"}}, {"name": "ref", "in": "query", "required": false, "description": "Stable buyer self-identifier; retries with the same ref keep the same order and address.", "schema": {"type": "string"}}], "requestBody": {"required": false, "content": {"application/json": {"schema": {"type": "object", "properties": {"text": {"type": "string"}, "url": {"type": "string"}, "kind": {"type": "string"}}}}}}, "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON v2)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}, "what_you_get": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: clean markdown of the page text + sha256", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "result_ok": {"type": "boolean"}, "result": {"type": "object"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/extract-page-content-402": {"get": {"operationId": "extract-page-content", "summary": "Extract page content from a url: extract article content, extract text, article text, extract content", "description": "Extract page content from a url: extract article content, extract page text, extract text from url, article text. Readability pass drops navigation and ads, keeps title/byline/date, returns clean markdown plus the sha256 of the text so the buyer can verify delivery. Give ?url=, pay, GET again with ?order_id=.", "tags": ["scraping", "extract", "content-extraction", "article", "text"], "x-category": "web", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.000978"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "url", "in": "query", "required": true, "description": "Public http(s) page to convert. Private, loopback, link-local and metadata addresses are refused before payment.", "schema": {"type": "string"}}, {"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment to receive the text.", "schema": {"type": "string"}}, {"name": "ref", "in": "query", "required": false, "description": "Stable buyer self-identifier; retries with the same ref keep the same order and address.", "schema": {"type": "string"}}], "requestBody": {"required": false, "content": {"application/json": {"schema": {"type": "object", "properties": {"text": {"type": "string"}, "url": {"type": "string"}, "kind": {"type": "string"}}}}}}, "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON v2)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}, "what_you_get": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: clean markdown of the page text + sha256", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "result_ok": {"type": "boolean"}, "result": {"type": "object"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/page-change-detection-402": {"get": {"operationId": "page-change-detection", "summary": "Page change detection: did the page change, detect page changes, watch page, page content diff", "description": "Page change detection: did this page change, detect page changes, watch page, page content diff. Returns change_kind (baseline/changed/unchanged/became_error/recovered), sha256 of the page text before and after, plus added and removed lines. Fingerprint is whitespace-normalised text, so nonces and timestamps do not register. Give ?url=, pay, GET again with ?order_id=.", "tags": ["monitoring", "change-detection", "diff", "web-page", "watch", "content-change"], "x-category": "web", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.000978"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "url", "in": "query", "required": true, "description": "Public http(s) page to fingerprint and compare with the previous check.", "schema": {"type": "string"}}, {"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment to receive the diff.", "schema": {"type": "string"}}, {"name": "ref", "in": "query", "required": false, "description": "Stable buyer self-identifier; retries with the same ref keep the same order and address.", "schema": {"type": "string"}}], "requestBody": {"required": false, "content": {"application/json": {"schema": {"type": "object", "properties": {"text": {"type": "string"}, "url": {"type": "string"}, "kind": {"type": "string"}}}}}}, "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON v2)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}, "what_you_get": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: change_kind + before/after sha256 + added/removed lines", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "result_ok": {"type": "boolean"}, "result": {"type": "object"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/monitor-page-402": {"get": {"operationId": "monitor-page", "summary": "Monitor page for changes: monitor web page, url change monitor, monitor url, check page for changes", "description": "Monitor page for changes: monitor web page, url change monitor, check page for changes. Returns change_kind, before/after sha256 of the page text, and the added and removed lines. Fingerprint is over whitespace-normalised text rather than raw HTML, so render nonces and timestamps never register as a change. Give ?url=, pay, GET again with ?order_id=.", "tags": ["monitoring", "url-change", "watch", "web-page", "content-change"], "x-category": "web", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.000978"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "url", "in": "query", "required": true, "description": "Public http(s) page to fingerprint and compare with the previous check.", "schema": {"type": "string"}}, {"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment to receive the diff.", "schema": {"type": "string"}}, {"name": "ref", "in": "query", "required": false, "description": "Stable buyer self-identifier; retries with the same ref keep the same order and address.", "schema": {"type": "string"}}], "requestBody": {"required": false, "content": {"application/json": {"schema": {"type": "object", "properties": {"text": {"type": "string"}, "url": {"type": "string"}, "kind": {"type": "string"}}}}}}, "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON v2)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}, "what_you_get": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: change_kind + before/after sha256 + added/removed lines", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "result_ok": {"type": "boolean"}, "result": {"type": "object"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/prompt-injection-402": {"get": {"operationId": "prompt-injection", "summary": "Scan prompt for injection: prompt injection detection, prompt injection scanner, system prompt extraction", "description": "Prompt injection scanner for AI agents: prompt injection detection, prompt injection scanner, system prompt extraction. Send text or a url, get a 0-100 risk score and every finding with printable evidence. Deterministic static scan, no model call, same input same score. Detects instruction override, role hijack, tool poisoning.", "tags": ["prompt-injection", "jailbreak", "security", "mcp", "static-analysis"], "x-category": "security", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.000911"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "text", "in": "query", "required": true, "description": "Text to scan for prompt injection, e.g. a system prompt or a tool description. Pass url instead when the text lives on a page.", "schema": {"type": "string"}}, {"name": "url", "in": "query", "required": false, "description": "Public http(s) page to fetch and scan. Use this instead of text when the agent holds a URL. Private, loopback, link-local and metadata addresses are refused, and every redirect hop is re-checked.", "schema": {"type": "string"}}, {"name": "kind", "in": "query", "required": false, "description": "Free label echoed in the result, e.g. prompt / description / manifest.", "schema": {"type": "string"}}, {"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment to receive the scan.", "schema": {"type": "string"}}, {"name": "ref", "in": "query", "required": false, "description": "Stable buyer self-identifier; retries with the same ref keep the same order and address.", "schema": {"type": "string"}}], "requestBody": {"required": false, "content": {"application/json": {"schema": {"type": "object", "properties": {"text": {"type": "string"}, "url": {"type": "string"}, "kind": {"type": "string"}}}}}}, "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON v2)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}, "what_you_get": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: risk score + findings with printable evidence", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "result_ok": {"type": "boolean"}, "result": {"type": "object"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/llm-security-402": {"get": {"operationId": "llm-security", "summary": "LLM security scan: jailbreak detection api, ai guardrails, mcp tool scan, check agent safety", "description": "LLM security scan for AI agents: jailbreak detection api, ai guardrails, mcp tool scan, check agent safety. Send text or a url, get a 0-100 risk score plus every finding with printable evidence. Deterministic static scan, no model call, same input same score. Detects jailbreak, instruction override, role hijack, system prompt extraction.", "tags": ["llm", "security", "jailbreak", "guardrails", "audit"], "x-category": "security", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.000911"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "text", "in": "query", "required": true, "description": "Text to scan for prompt injection, e.g. a system prompt or a tool description. Pass url instead when the text lives on a page.", "schema": {"type": "string"}}, {"name": "url", "in": "query", "required": false, "description": "Public http(s) page to fetch and scan. Use this instead of text when the agent holds a URL. Private, loopback, link-local and metadata addresses are refused, and every redirect hop is re-checked.", "schema": {"type": "string"}}, {"name": "kind", "in": "query", "required": false, "description": "Free label echoed in the result, e.g. prompt / description / manifest.", "schema": {"type": "string"}}, {"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment to receive the scan.", "schema": {"type": "string"}}, {"name": "ref", "in": "query", "required": false, "description": "Stable buyer self-identifier; retries with the same ref keep the same order and address.", "schema": {"type": "string"}}], "requestBody": {"required": false, "content": {"application/json": {"schema": {"type": "object", "properties": {"text": {"type": "string"}, "url": {"type": "string"}, "kind": {"type": "string"}}}}}}, "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON v2)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}, "what_you_get": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: risk score + findings with printable evidence", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "result_ok": {"type": "boolean"}, "result": {"type": "object"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/readclean-402": {"get": {"operationId": "readclean", "summary": "readclean: web page to clean markdown for AI agents", "description": "Web page to Markdown: read any public URL as clean text. Use this when an agent needs to read a URL for research, RAG, monitoring or summarization without an API key or a browser: one HTTPS fetch of static HTML, scripts/styles/navigation/ads stripped, title and main content returned, sha256 of the text included so the buyer can verify delivery. Give ?url=, pay, GET again with ?order_id=. Private and loopback addresses refused before payment.", "tags": ["scraping", "markdown", "content-extraction", "readability"], "x-category": "web", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.000978"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "url", "in": "query", "required": true, "description": "Public http(s) page to convert. Private, loopback, link-local and metadata addresses are refused before payment.", "schema": {"type": "string"}}, {"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment to receive the text.", "schema": {"type": "string"}}, {"name": "ref", "in": "query", "required": false, "description": "Stable buyer self-identifier; retries with the same ref keep the same order and address.", "schema": {"type": "string"}}], "requestBody": {"required": false, "content": {"application/json": {"schema": {"type": "object", "properties": {"text": {"type": "string"}, "url": {"type": "string"}, "kind": {"type": "string"}}}}}}, "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON v2)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}, "what_you_get": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: clean markdown of the page text + sha256", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "result_ok": {"type": "boolean"}, "result": {"type": "object"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/urlwatch-402": {"get": {"operationId": "urlwatch", "summary": "urlwatch: monitor a web page and report what changed", "description": "Web page change detection: did this URL change since the last check? Use this when an agent monitors a page for updates, watches a competitor page, or checks whether a page it read earlier still says the same thing. Returns change_kind (baseline/changed/unchanged/became_error/recovered), sha256 of the page text before and after, and the added and removed lines. Fingerprint is whitespace-normalised text, so nonces and timestamps never register as a change. Give ?url=, pay, GET again with ?order_id=.", "tags": ["monitoring", "change-detection", "diff", "watch"], "x-category": "web", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.000978"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "url", "in": "query", "required": true, "description": "Public http(s) page to fingerprint and compare with the previous check.", "schema": {"type": "string"}}, {"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment to receive the diff.", "schema": {"type": "string"}}, {"name": "ref", "in": "query", "required": false, "description": "Stable buyer self-identifier; retries with the same ref keep the same order and address.", "schema": {"type": "string"}}], "requestBody": {"required": false, "content": {"application/json": {"schema": {"type": "object", "properties": {"text": {"type": "string"}, "url": {"type": "string"}, "kind": {"type": "string"}}}}}}, "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON v2)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}, "what_you_get": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: change_kind + before/after sha256 + added/removed lines", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "result_ok": {"type": "boolean"}, "result": {"type": "object"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/chat-completion-402": {"get": {"operationId": "chat-completion", "summary": "LLM chat completion: chat api for agents, one paid call returns one answer", "description": "LLM chat completion for agents: chat completion api, llm chat, one paid call returns one answer. Give ?prompt= plus optional ?system= and ?max_tokens=, pay, GET again with ?order_id= to receive the text plus model name and token usage. Output budget is capped per call; the answer is a plain completion, no tools, no browsing.", "tags": ["llm", "chat", "completion", "api", "inference", "agent"], "x-category": "ai", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.001012"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "prompt", "in": "query", "required": true, "description": "The user message to answer. One paid call returns one completion.", "schema": {"type": "string"}}, {"name": "system", "in": "query", "required": false, "description": "Optional system instruction prepended to the prompt.", "schema": {"type": "string"}}, {"name": "max_tokens", "in": "query", "required": false, "description": "Output token budget, capped by the seller; default is the cap.", "schema": {"type": "integer"}}, {"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment to receive the answer.", "schema": {"type": "string"}}, {"name": "ref", "in": "query", "required": false, "description": "Stable buyer self-identifier; retries with the same ref keep the same order and address.", "schema": {"type": "string"}}], "requestBody": {"required": false, "content": {"application/json": {"schema": {"type": "object", "properties": {"text": {"type": "string"}, "url": {"type": "string"}, "kind": {"type": "string"}}}}}}, "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON v2)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}, "what_you_get": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: the completion text + model + token usage", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "result_ok": {"type": "boolean"}, "result": {"type": "object"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/llm-completion-402": {"get": {"operationId": "llm-completion", "summary": "LLM text generation: one prompt in, one completion out", "description": "LLM text generation for agents: llm completion, text generation, one prompt in and one completion out. Give ?prompt= plus optional ?system= and ?max_tokens=, pay, GET again with ?order_id= to receive the text plus model name and token usage. Output budget is capped per call; the answer is a plain completion, no tools, no browsing.", "tags": ["llm", "completion", "generation", "text", "inference"], "x-category": "ai", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.001012"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "prompt", "in": "query", "required": true, "description": "The user message to answer. One paid call returns one completion.", "schema": {"type": "string"}}, {"name": "system", "in": "query", "required": false, "description": "Optional system instruction prepended to the prompt.", "schema": {"type": "string"}}, {"name": "max_tokens", "in": "query", "required": false, "description": "Output token budget, capped by the seller; default is the cap.", "schema": {"type": "integer"}}, {"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment to receive the answer.", "schema": {"type": "string"}}, {"name": "ref", "in": "query", "required": false, "description": "Stable buyer self-identifier; retries with the same ref keep the same order and address.", "schema": {"type": "string"}}], "requestBody": {"required": false, "content": {"application/json": {"schema": {"type": "object", "properties": {"text": {"type": "string"}, "url": {"type": "string"}, "kind": {"type": "string"}}}}}}, "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON v2)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}, "what_you_get": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: the completion text + model + token usage", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "result_ok": {"type": "boolean"}, "result": {"type": "object"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/llmrt-402": {"get": {"operationId": "llmrt", "summary": "llmrt: LLM red team scan by llmrt", "description": "llmrt red team scan for AI agents: prompt injection, jailbreak, system prompt extraction and MCP tool abuse. Send ?text= or ?url=, pay, GET again with ?order_id= to receive a 0-100 risk score plus every finding with printable evidence. Deterministic static scan, no model call, same input same score.", "tags": ["llm", "security", "redteam", "prompt-injection", "audit"], "x-category": "security", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.003375"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "text", "in": "query", "required": true, "description": "Text to scan for prompt injection, e.g. a system prompt or a tool description. Pass url instead when the text lives on a page.", "schema": {"type": "string"}}, {"name": "url", "in": "query", "required": false, "description": "Public http(s) page to fetch and scan. Use this instead of text when the agent holds a URL. Private, loopback, link-local and metadata addresses are refused, and every redirect hop is re-checked.", "schema": {"type": "string"}}, {"name": "kind", "in": "query", "required": false, "description": "Free label echoed in the result, e.g. prompt / description / manifest.", "schema": {"type": "string"}}, {"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment to receive the scan.", "schema": {"type": "string"}}, {"name": "ref", "in": "query", "required": false, "description": "Stable buyer self-identifier; retries with the same ref keep the same order and address.", "schema": {"type": "string"}}], "requestBody": {"required": false, "content": {"application/json": {"schema": {"type": "object", "properties": {"text": {"type": "string"}, "url": {"type": "string"}, "kind": {"type": "string"}}}}}}, "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON v2)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}, "what_you_get": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: risk score + findings with printable evidence", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "result_ok": {"type": "boolean"}, "result": {"type": "object"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/prompt-injection-scan-402": {"get": {"operationId": "prompt-injection-scan", "summary": "Prompt injection scan: prompt injection scanner, prompt injection detection, system prompt extraction, jailbreak check", "description": "Prompt injection scan for agents: prompt injection scanner, prompt injection detection, jailbreak check. Send ?text= or ?url=, pay, GET again with ?order_id= to receive a 0-100 risk score plus every finding with printable evidence. Deterministic static scan, no model call, same input same score.", "tags": ["prompt-injection", "scan", "jailbreak", "security", "mcp"], "x-category": "security", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.000911"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "text", "in": "query", "required": true, "description": "Text to scan for prompt injection, e.g. a system prompt or a tool description. Pass url instead when the text lives on a page.", "schema": {"type": "string"}}, {"name": "url", "in": "query", "required": false, "description": "Public http(s) page to fetch and scan. Use this instead of text when the agent holds a URL. Private, loopback, link-local and metadata addresses are refused, and every redirect hop is re-checked.", "schema": {"type": "string"}}, {"name": "kind", "in": "query", "required": false, "description": "Free label echoed in the result, e.g. prompt / description / manifest.", "schema": {"type": "string"}}, {"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment to receive the scan.", "schema": {"type": "string"}}, {"name": "ref", "in": "query", "required": false, "description": "Stable buyer self-identifier; retries with the same ref keep the same order and address.", "schema": {"type": "string"}}], "requestBody": {"required": false, "content": {"application/json": {"schema": {"type": "object", "properties": {"text": {"type": "string"}, "url": {"type": "string"}, "kind": {"type": "string"}}}}}}, "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON v2)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}, "what_you_get": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: risk score + findings with printable evidence", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "result_ok": {"type": "boolean"}, "result": {"type": "object"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/x402-benchmark-402": {"get": {"operationId": "x402-seller-benchmark", "summary": "x402 seller benchmark: your percentile by settled calls, buyers and revenue across 2,925 sellers", "description": "x402 seller benchmark: where your seller ranks across the whole settled market. Give ?origin= and get your rank and percentile by settled calls out of the ranked sellers, your settled USD, call count, unique buyers, endpoint count, and your USD and calls per buyer against the market medians. The numbers come from on-chain USDC settlements in a 7-day window, so they are re-checkable on a block explorer rather than self-reported.", "tags": ["x402", "benchmark", "seller", "analytics", "percentile", "market"], "x-category": "developer-tools", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.010126"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "origin", "in": "query", "required": true, "description": "Your seller origin, e.g. https://your-seller.example. Returns your rank and percentile among all ranked sellers.", "schema": {"type": "string"}}, {"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment.", "schema": {"type": "string"}}, {"name": "ref", "in": "query", "required": false, "description": "Stable buyer self-identifier; retries keep the same order.", "schema": {"type": "string"}}], "requestBody": {"required": false, "content": {"application/json": {"schema": {"type": "object", "properties": {"text": {"type": "string"}, "url": {"type": "string"}, "kind": {"type": "string"}}}}}}, "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON v2)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}, "what_you_get": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: your percentile, per-buyer economics, and the market medians", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "result_ok": {"type": "boolean"}, "result": {"type": "object"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/ethereum-transaction-402": {"get": {"operationId": "ethereum-transaction", "summary": "Ethereum transaction by hash: from, to, value, calldata, gas used, fee, status", "description": "Ethereum transaction by hash for agents: look up a transaction before acting on it. Give ?hash= (0x + 64 hex) and get from, to, value in ETH, nonce, gas limit, gas used, fee in ETH, status, calldata size and selector, and log count. Read-only eth_getTransactionByHash and eth_getTransactionReceipt, so nothing is signed and nothing is broadcast.", "tags": ["ethereum", "transaction", "tx", "hash", "onchain", "rpc"], "x-category": "data", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.001012"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "hash", "in": "query", "required": true, "description": "Ethereum transaction hash, 0x + 64 hex. Returns the structured result for it.", "schema": {"type": "string"}}, {"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment.", "schema": {"type": "string"}}, {"name": "ref", "in": "query", "required": false, "description": "Stable buyer self-identifier; retries keep the same order.", "schema": {"type": "string"}}], "requestBody": {"required": false, "content": {"application/json": {"schema": {"type": "object", "properties": {"text": {"type": "string"}, "url": {"type": "string"}, "kind": {"type": "string"}}}}}}, "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON v2)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}, "what_you_get": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: the structured on-chain result as JSON", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "result_ok": {"type": "boolean"}, "result": {"type": "object"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/ethereum-contract-402": {"get": {"operationId": "ethereum-contract", "summary": "Ethereum contract introspection: deployed code, token name and symbol, decimals, total supply, EIP-7702 delegation", "description": "Ethereum contract introspection for agents: check an address before you send to it. Give ?address= (0x + 40 hex) and get the deployed code size, whether it is a contract or an EOA, EIP-7702 delegation target when the EOA delegates code, and for tokens the name, symbol, decimals and total supply. Read-only eth_getCode and eth_call, so a wallet is never mistaken for a contract.", "tags": ["ethereum", "contract", "token", "erc20", "address", "onchain"], "x-category": "data", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.000675"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "address", "in": "query", "required": true, "description": "Ethereum address, 0x + 40 hex. Returns the structured result for it.", "schema": {"type": "string"}}, {"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment.", "schema": {"type": "string"}}, {"name": "ref", "in": "query", "required": false, "description": "Stable buyer self-identifier; retries keep the same order.", "schema": {"type": "string"}}], "requestBody": {"required": false, "content": {"application/json": {"schema": {"type": "object", "properties": {"text": {"type": "string"}, "url": {"type": "string"}, "kind": {"type": "string"}}}}}}, "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON v2)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}, "what_you_get": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: the structured on-chain result as JSON", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "result_ok": {"type": "boolean"}, "result": {"type": "object"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/nft-owner-402": {"get": {"operationId": "nft-owner", "summary": "ERC721 NFT owner by contract address and token id: who holds this NFT right now", "description": "Check who owns an NFT before you bid or transfer: give ?contract= (0x + 40 hex) and ?token_id= and get the current owner via ownerOf. An unminted or burned id returns found=false with the reason, not an empty address. Read-only eth_call, nothing is signed.", "tags": ["nft", "erc721", "owner", "token", "ethereum", "onchain"], "x-category": "data", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.000675"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "contract", "in": "query", "required": true, "description": "ERC721 contract address, 0x + 40 hex.", "schema": {"type": "string"}}, {"name": "token_id", "in": "query", "required": true, "description": "Token id, decimal or 0x-prefixed hex.", "schema": {"type": "string"}}, {"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment.", "schema": {"type": "string"}}, {"name": "ref", "in": "query", "required": false, "description": "Stable buyer self-identifier; retries keep the same order.", "schema": {"type": "string"}}], "requestBody": {"required": false, "content": {"application/json": {"schema": {"type": "object", "properties": {"text": {"type": "string"}, "url": {"type": "string"}, "kind": {"type": "string"}}}}}}, "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON v2)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}, "what_you_get": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: the current NFT owner as JSON", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "result_ok": {"type": "boolean"}, "result": {"type": "object"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/transaction-receipt-402": {"get": {"operationId": "transaction-receipt", "summary": "Ethereum transaction receipt: status success or failed, gas used, fee paid, and event logs", "description": "Confirm a transaction actually landed before you credit it: give ?hash= (0x + 64 hex) and get status success or failed, gas used, effective gas price, fee paid in ETH, and the emitted log count. Read-only eth_getTransactionReceipt.", "tags": ["receipt", "transaction", "gas", "logs", "ethereum", "onchain"], "x-category": "data", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.000675"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "hash", "in": "query", "required": true, "description": "Ethereum transaction hash, 0x + 64 hex.", "schema": {"type": "string"}}, {"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment.", "schema": {"type": "string"}}, {"name": "ref", "in": "query", "required": false, "description": "Stable buyer self-identifier; retries keep the same order.", "schema": {"type": "string"}}], "requestBody": {"required": false, "content": {"application/json": {"schema": {"type": "object", "properties": {"text": {"type": "string"}, "url": {"type": "string"}, "kind": {"type": "string"}}}}}}, "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON v2)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}, "what_you_get": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: the transaction receipt as JSON", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "result_ok": {"type": "boolean"}, "result": {"type": "object"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/event-logs-402": {"get": {"operationId": "event-logs", "summary": "Ethereum event logs by contract and topic: raw eth_getLogs output for a block range", "description": "Read contract events without running a node: give ?address= and optional ?topic0=, ?from_block=, ?to_block= and get the raw eth_getLogs output plus the count. Use it to index transfers, approvals or any event a contract emits. Read-only.", "tags": ["logs", "events", "ethereum", "topics", "onchain"], "x-category": "data", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.001012"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "address", "in": "query", "required": false, "description": "Contract address to filter on, 0x + 40 hex. Omit for all contracts.", "schema": {"type": "string"}}, {"name": "topic0", "in": "query", "required": false, "description": "Event signature hash, 0x + 64 hex. Omit for all events.", "schema": {"type": "string"}}, {"name": "from_block", "in": "query", "required": false, "description": "Start block number or latest.", "schema": {"type": "string"}}, {"name": "to_block", "in": "query", "required": false, "description": "End block number or latest.", "schema": {"type": "string"}}, {"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment.", "schema": {"type": "string"}}, {"name": "ref", "in": "query", "required": false, "description": "Stable buyer self-identifier; retries keep the same order.", "schema": {"type": "string"}}], "requestBody": {"required": false, "content": {"application/json": {"schema": {"type": "object", "properties": {"text": {"type": "string"}, "url": {"type": "string"}, "kind": {"type": "string"}}}}}}, "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON v2)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}, "what_you_get": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: matching event logs as JSON", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "result_ok": {"type": "boolean"}, "result": {"type": "object"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/txverify-402": {"get": {"operationId": "cross-checked-tx-receipt", "summary": "Cross-checked transaction receipt: pass only when two independent RPC providers agree on block, status and every transfer", "description": "Cross-checked transaction receipt for agents: give ?hash= (0x + 64 hex) and optional ?expect_to=, ?expect_value= (smallest unit), ?token= and get a pass, mismatch or unverifiable verdict. Two independent RPC providers must agree on block, status and every transfer before the verdict can be pass; when only one provider answers, the response says cross_checked=false instead of pretending the read was verified. Every field that was checked is listed with expected and actual, so a buyer can see what failed rather than trust a single boolean.", "tags": ["verify", "receipt", "transaction", "onchain", "audit"], "x-category": "data", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.006751"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "hash", "in": "query", "required": true, "description": "Transaction hash, 0x + 64 hex.", "schema": {"type": "string"}}, {"name": "expect_to", "in": "query", "required": false, "description": "Expected recipient address; the check fails if no transfer goes there.", "schema": {"type": "string"}}, {"name": "expect_value", "in": "query", "required": false, "description": "Expected amount in the token's smallest unit, as a decimal string.", "schema": {"type": "string"}}, {"name": "token", "in": "query", "required": false, "description": "Expected token contract address, 0x + 40 hex.", "schema": {"type": "string"}}], "requestBody": {"required": false, "content": {"application/json": {"schema": {"type": "object", "properties": {"text": {"type": "string"}, "url": {"type": "string"}, "kind": {"type": "string"}}}}}}, "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON v2)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}, "what_you_get": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: verdict (pass/mismatch/unverifiable), every check with expected and actual, and whether two independent providers agreed", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "result_ok": {"type": "boolean"}, "result": {"type": "object"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/nft-metadata-402": {"get": {"operationId": "nft-metadata", "summary": "NFT metadata by contract and token id: ERC721 or ERC1155 standard, collection name, symbol and tokenURI", "description": "Read NFT metadata before you trust a listing: give ?contract= (0x + 40 hex) and ?token_id= and get the standard (ERC721 or ERC1155, decided by ERC165 supportsInterface rather than guessed), the collection name and symbol, and the tokenURI. The URI is returned as-is and never fetched, so this call cannot be used to make the server reach an arbitrary URL. Read-only.", "tags": ["nft", "metadata", "tokenURI", "erc721", "erc1155", "ethereum", "onchain"], "x-category": "data", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.000675"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "contract", "in": "query", "required": true, "description": "NFT contract address, 0x + 40 hex.", "schema": {"type": "string"}}, {"name": "token_id", "in": "query", "required": true, "description": "Token id, decimal or 0x-prefixed hex.", "schema": {"type": "string"}}, {"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment.", "schema": {"type": "string"}}, {"name": "ref", "in": "query", "required": false, "description": "Stable buyer self-identifier; retries keep the same order.", "schema": {"type": "string"}}], "requestBody": {"required": false, "content": {"application/json": {"schema": {"type": "object", "properties": {"text": {"type": "string"}, "url": {"type": "string"}, "kind": {"type": "string"}}}}}}, "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON v2)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}, "what_you_get": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: the NFT standard, collection and tokenURI as JSON", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "result_ok": {"type": "boolean"}, "result": {"type": "object"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/erc20-transfers-402": {"get": {"operationId": "erc20-transfers", "summary": "ERC20 transfer history by token contract: from, to, amounts decoded with decimals, optional holder filter", "description": "Rebuild a token's transfer history without running a node: give ?contract= (0x + 40 hex) and optionally ?address= to filter one holder, ?from_block=, ?to_block=, and get the Transfer logs with from, to and amounts already scaled by the token's own decimals. Read-only eth_getLogs and eth_call.", "tags": ["erc20", "transfers", "token", "history", "logs", "ethereum", "onchain"], "x-category": "data", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.001012"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "contract", "in": "query", "required": true, "description": "ERC20 token contract address, 0x + 40 hex.", "schema": {"type": "string"}}, {"name": "address", "in": "query", "required": false, "description": "Optional holder address to filter transfers, 0x + 40 hex.", "schema": {"type": "string"}}, {"name": "from_block", "in": "query", "required": false, "description": "Start block number or latest.", "schema": {"type": "string"}}, {"name": "to_block", "in": "query", "required": false, "description": "End block number or latest.", "schema": {"type": "string"}}, {"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment.", "schema": {"type": "string"}}, {"name": "ref", "in": "query", "required": false, "description": "Stable buyer self-identifier; retries keep the same order.", "schema": {"type": "string"}}], "requestBody": {"required": false, "content": {"application/json": {"schema": {"type": "object", "properties": {"text": {"type": "string"}, "url": {"type": "string"}, "kind": {"type": "string"}}}}}}, "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON v2)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}, "what_you_get": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: transfer logs with decoded amounts as JSON", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "result_ok": {"type": "boolean"}, "result": {"type": "object"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/price-drift-402": {"get": {"operationId": "price-drift", "summary": "Cross-source price drift: compare the same asset across exchanges and aggregators in one call, spread in basis points, median as the settlement basis, flag past 30 bp, price differs between exchanges, which price should I settle at, stale quote check", "description": "Cross-source price drift for agents: the same asset priced across exchanges and aggregators in one call, so you can see whether your quote matches the venue that will settle it. Give ?asset= (BTC, ETH, SOL, XNO, or a Solana token such as JUP) and get every source's price with its deviation from the median in basis points, the spread, the standard deviation, and a TIGHT or DRIFT verdict against a 30 bp tolerance. Failed sources are listed as failed rather than dropped, because a venue that is down during your quote is itself the risk. No model call, same inputs give the same reading.", "tags": ["price", "oracle", "drift", "comparison", "crypto", "settlement"], "x-category": "data", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.005063"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "asset", "in": "query", "required": true, "description": "Asset symbol: BTC, ETH, SOL, XNO, or a Solana token such as JUP, JTO, PYTH, RAY, WIF, BONK.", "schema": {"type": "string"}}, {"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment.", "schema": {"type": "string"}}, {"name": "ref", "in": "query", "required": false, "description": "Stable buyer self-identifier; retries keep the same order.", "schema": {"type": "string"}}], "requestBody": {"required": false, "content": {"application/json": {"schema": {"type": "object", "properties": {"text": {"type": "string"}, "url": {"type": "string"}, "kind": {"type": "string"}}}}}}, "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON v2)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}, "what_you_get": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: per-source prices with deviation in bp, spread, and a TIGHT/DRIFT verdict", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "result_ok": {"type": "boolean"}, "result": {"type": "object"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/ping-402": {"get": {"operationId": "x402-ping-test", "summary": "Cheapest x402 endpoint to test an x402 client end to end: x402 ping test, test x402 client, x402 payment test, smallest paid request, verify 402 challenge and settlement, returns a signed receipt you can verify", "description": "x402 client self-test for agents: the cheapest paid request on this seller, and the fastest way to prove your x402 client works end to end. Send it with no parameters at all: pay, GET again with ?order_id=, and you get back a receipt with the server time, the order id and three explicit checks (reached_seller, payment_settled, delivery_returned). It has no upstream dependency, so it cannot fail because some third-party API is down: if this call fails, the problem is in your client, not in the seller. Use it as a CI probe or as the first call against any new x402 seller to confirm challenge parsing, EIP-3009 signing and settlement before you spend real money.", "tags": ["x402", "ping", "test", "client", "health", "receipt"], "x-category": "infra", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.000506"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment.", "schema": {"type": "string"}}, {"name": "ref", "in": "query", "required": false, "description": "Stable buyer self-identifier; retries keep the same order.", "schema": {"type": "string"}}], "requestBody": {"required": false, "content": {"application/json": {"schema": {"type": "object", "properties": {"text": {"type": "string"}, "url": {"type": "string"}, "kind": {"type": "string"}}}}}}, "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON v2)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}, "what_you_get": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: a signed receipt proving 402 challenge, payment and delivery all worked", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "result_ok": {"type": "boolean"}, "result": {"type": "object"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/speech-402": {"get": {"operationId": "text-to-speech", "summary": "Text to speech mp3 with a neural voice, no API key, no signup: tts, speech synthesis, voiceover audio from any string, returns an mp3 download plus sha256 so the buyer can verify the exact bytes", "description": "Turn any string into an mp3 voiceover before you ship it: pass ?text= and get back audio rendered by a neural voice, with sha256 and byte count in the receipt so you can verify the exact file you paid for. Use it when an agent needs spoken output, narration, an accessibility readout or a voice line for a demo, without signing up for a TTS provider or holding an API key. Optional ?voice= picks one of the listed neural voices (default en-US-AriaNeural); the language follows the voice, so a Chinese string with a zh-CN voice reads correctly. The per-order character cap is 4000.", "tags": ["tts", "speech", "audio", "voice", "mp3", "neural"], "x-category": "audio", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.002025"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "text", "in": "query", "required": true, "description": "The string to speak, up to 4000 characters.", "schema": {"type": "string"}}, {"name": "voice", "in": "query", "required": false, "description": "Neural voice id, default en-US-AriaNeural. See the description for the full list.", "schema": {"type": "string"}}, {"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment.", "schema": {"type": "string"}}, {"name": "ref", "in": "query", "required": false, "description": "Stable buyer self-identifier; retries keep the same order.", "schema": {"type": "string"}}], "requestBody": {"required": false, "content": {"application/json": {"schema": {"type": "object", "properties": {"text": {"type": "string"}, "url": {"type": "string"}, "kind": {"type": "string"}}}}}}, "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON v2)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}, "what_you_get": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: an mp3 download plus sha256 and byte count", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "result_ok": {"type": "boolean"}, "result": {"type": "object"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}, "/weather-402": {"get": {"operationId": "weather-forecast", "summary": "Current weather and 24-hour forecast for a latitude and longitude: weather, weather forecast, current temperature, rain chance, wind speed, humidity, no API key, no signup", "description": "Check the weather before you route a field job, price a delivery or plan a trip: give ?lat= and ?lon= and get the current temperature, humidity, precipitation, wind speed and WMO weather code, plus the next 24 hourly temperatures and rain chances. Optional ?units=imperial switches to Fahrenheit, mph and inches. Upstream is Open-Meteo, so there is no API key, no signup and no stored location: the coordinate is forwarded, never recorded.", "tags": ["weather", "forecast", "temperature", "rain", "data"], "x-category": "data", "x-payment-info": {"price": {"mode": "fixed", "currency": "USD", "amount": "0.001519"}, "protocols": [{"x402": {}}]}, "parameters": [{"name": "lat", "in": "query", "required": true, "description": "Latitude in decimal degrees, -90 to 90.", "schema": {"type": "string"}}, {"name": "lon", "in": "query", "required": true, "description": "Longitude in decimal degrees, -180 to 180.", "schema": {"type": "string"}}, {"name": "units", "in": "query", "required": false, "description": "metric (default) or imperial.", "schema": {"type": "string"}}, {"name": "order_id", "in": "query", "required": false, "description": "Order id from the 402 body; GET again with it after payment.", "schema": {"type": "string"}}, {"name": "ref", "in": "query", "required": false, "description": "Stable buyer self-identifier; retries keep the same order.", "schema": {"type": "string"}}], "requestBody": {"required": false, "content": {"application/json": {"schema": {"type": "object", "properties": {"text": {"type": "string"}, "url": {"type": "string"}, "kind": {"type": "string"}}}}}}, "responses": {"402": {"description": "Payment required (x402 Payment-Required header, base64 JSON v2)", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [false]}, "reason": {"type": "string"}, "order_id": {"type": "string"}, "nano_address": {"type": "string"}, "nano_amount_raw": {"type": "string"}, "what_you_get": {"type": "string"}}, "required": ["ok", "reason", "order_id"]}}}}, "200": {"description": "Delivered: current weather plus the next 24 hourly readings as JSON", "content": {"application/json": {"schema": {"type": "object", "properties": {"ok": {"type": "boolean", "enum": [true]}, "paid": {"type": "boolean"}, "order_id": {"type": "string"}, "download_url": {"type": "string"}, "result_ok": {"type": "boolean"}, "result": {"type": "object"}}, "required": ["ok", "paid", "order_id", "download_url"]}}}}}}}}}