{"components":{"schemas":{"Error":{"properties":{"error":{"type":"string"}},"type":"object"},"Informe":{"properties":{"analizado_en":{"format":"date-time","type":"string"},"dominio":{"type":"string"},"informe":{"type":"object"},"origen":{"enum":["cache","fresco"],"type":"string"},"pago":{"type":"object"}},"type":"object"}}},"info":{"contact":{"name":"CrawlWitness","url":"https://api.crawlwitness.com"},"description":"What a website allows for AI (robots.txt per AI bot, RSL, IETF AIPREF, TDMRep, noai, llms.txt, C2PA), with signed EAS receipts anchored on Base and an attested history of every signal. Paid calls use x402 (USDC on Base or Solana): no account, no API key.","title":"CrawlWitness — AI consent & licensing oracle","version":"0.1.0"},"openapi":"3.1.0","paths":{"/mcp":{"post":{"operationId":"mcp","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"description":"JSON-RPC response"}},"security":[],"summary":"MCP server (Streamable HTTP, stateless, 2026-07-28 and 2025 revisions). Paid tool consultar_senales via _meta[\"x402/payment\"]","tags":["mcp"]}},"/v1/atestaciones/{uid}":{"get":{"operationId":"atestacion","parameters":[{"description":"Attestation UID","in":"path","name":"uid","required":true,"schema":{"pattern":"^0x[0-9a-fA-F]{64}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Error"}},"security":[],"summary":"Free: signed EAS attestation of a paid query","tags":["free"]}},"/v1/batch":{"post":{"description":"Use when a crawler or dataset builder needs AI-consent verdicts for many domains at once: yes/no per domain for one AI bot and use (train, rag, search), up to 100 domains per payment, with one signed receipt for the whole batch. Errors: 400 invalid input (not charged); 503 if too many domains are still being analysed (not charged, retry).","operationId":"batch","requestBody":{"content":{"application/json":{"schema":{"properties":{"bot":{"enum":["GPTBot","ClaudeBot","anthropic-ai","Google-Extended","GoogleOther","CloudVertexBot","Applebot-Extended","meta-externalagent","Amazonbot","amazon-kendra-","Bytespider","CCBot","cohere-training-data-crawler","AI2Bot","Diffbot","Timpibot","ImagesiftBot","omgili","PetalBot","KimiBot","ICC-Crawler","Cotoyogi","Reflectionbot","CloudflareBrowserRenderingCrawler","LinerBot","FishBot","Novellum","bigsur.ai","NavuBot","QualifiedBot","atlassian-bot","make.com","magpie-crawler","Awario","w4mwnpbXf3MFAbxOkJRw","SemrushBot-OCOB","SemrushBot-SWA","BorderxBot","SelectikaScraper","CitibotSiteCrawler","AdpResearchBot","WARDBot","ygs-scraper-bot","OAI-SearchBot","Claude-SearchBot","PerplexityBot","Applebot","Amzn-SearchBot","Bravebot","Cloudflare-AI-Search","Cloudflare-AI-Search-External","DuckAssistBot","YouBot","KernelSearchBot","ShapBot","alphalens-bot","Anomura","Element451Bot","ChatGPT-User","Claude-User","Perplexity-User","meta-externalfetcher","meta-externaltest","muse-","MistralAI-User","cohere-ai","Google-Agent","GrokAgent","Devin","ApifyWebsiteContentCrawler","Instapaper","Retool","QATechBot","TwinAgent","CledaraBot","HarkBot","HIFIBot","ChathiveCrawler","EasyScan","Nava","ZipchatBot"],"type":"string"},"domains":{"items":{"type":"string"},"maxItems":100,"minItems":1,"type":"array"},"use":{"enum":["train","rag","search"],"type":"string"}},"required":["domains","bot"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Counts and per-domain verdicts, one signed receipt"},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment required; price depends on the number of domains (≤25 / ≤100)"},"503":{"description":"Too many domains still being analysed (not charged, retry)"}},"security":[],"summary":"Paid yes/no for up to 100 domains in one payment (one AI bot and use)","tags":["consent"],"x-payment-info":{"asset":"USDC","networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"price":{"currency":"USD","max":"0.05","min":"0.02","mode":"dynamic"},"protocols":["x402"]}}},"/v1/can-use":{"get":{"description":"Use when a crawler, scraper or RAG pipeline must decide whether it may use a website for AI: yes/no verdict for a domain, AI bot and use (train, rag, search) from robots.txt, IETF AIPREF, TDMRep, noai and RSL licenses, with a signed receipt. Errors: 400 invalid domain or unknown bot (not charged).","operationId":"canUse","parameters":[{"description":"Domain","in":"query","name":"domain","required":true,"schema":{"example":"nytimes.com","type":"string"}},{"description":"AI user-agent token","in":"query","name":"bot","required":true,"schema":{"enum":["GPTBot","ClaudeBot","anthropic-ai","Google-Extended","GoogleOther","CloudVertexBot","Applebot-Extended","meta-externalagent","Amazonbot","amazon-kendra-","Bytespider","CCBot","cohere-training-data-crawler","AI2Bot","Diffbot","Timpibot","ImagesiftBot","omgili","PetalBot","KimiBot","ICC-Crawler","Cotoyogi","Reflectionbot","CloudflareBrowserRenderingCrawler","LinerBot","FishBot","Novellum","bigsur.ai","NavuBot","QualifiedBot","atlassian-bot","make.com","magpie-crawler","Awario","w4mwnpbXf3MFAbxOkJRw","SemrushBot-OCOB","SemrushBot-SWA","BorderxBot","SelectikaScraper","CitibotSiteCrawler","AdpResearchBot","WARDBot","ygs-scraper-bot","OAI-SearchBot","Claude-SearchBot","PerplexityBot","Applebot","Amzn-SearchBot","Bravebot","Cloudflare-AI-Search","Cloudflare-AI-Search-External","DuckAssistBot","YouBot","KernelSearchBot","ShapBot","alphalens-bot","Anomura","Element451Bot","ChatGPT-User","Claude-User","Perplexity-User","meta-externalfetcher","meta-externaltest","muse-","MistralAI-User","cohere-ai","Google-Agent","GrokAgent","Devin","ApifyWebsiteContentCrawler","Instapaper","Retool","QATechBot","TwinAgent","CledaraBot","HarkBot","HIFIBot","ChathiveCrawler","EasyScan","Nava","ZipchatBot"],"example":"GPTBot","type":"string"}},{"description":"Intended use","in":"query","name":"use","required":false,"schema":{"default":"train","enum":["train","rag","search"],"type":"string"}}],"responses":{"200":{"description":"Verdict: allowed true/false/null, decision, reasons, signed receipt in `pago`"},"400":{"description":"Invalid domain, unknown bot or use (not charged)"},"402":{"description":"Payment required (x402 v2, PAYMENT-REQUIRED header)"}},"security":[],"summary":"Paid yes/no: may this AI bot use this domain for train / rag / search? (signed)","tags":["consent"],"x-payment-info":{"asset":"USDC","networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"price":{"amount":"0.001","currency":"USD","mode":"fixed"},"protocols":["x402"]}}},"/v1/historial/{dominio}":{"get":{"operationId":"historial","parameters":[{"description":"Domain","in":"path","name":"dominio","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Error"}},"security":[],"summary":"Free index of attested versions of a domain's signal documents","tags":["free"]}},"/v1/historial/{dominio}/{fuente}":{"get":{"operationId":"versionHistorial","parameters":[{"description":"Domain","in":"path","name":"dominio","required":true,"schema":{"type":"string"}},{"description":"Source document","in":"path","name":"fuente","required":true,"schema":{"enum":["robots","llms","tdmrep","rsl","portada"],"type":"string"}},{"description":"Instant (default: now)","in":"query","name":"en","required":false,"schema":{"format":"date-time","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Error"}},"security":[],"summary":"Free: document in force at a date (?en=RFC3339) with SHA-256 and EAS attestation","tags":["free"]}},"/v1/puntuacion/{dominio}":{"get":{"operationId":"puntuacionRapida","parameters":[{"description":"Domain","in":"path","name":"dominio","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Error"}},"security":[],"summary":"Free 0-100 score and training stance (cached)","tags":["free"]}},"/v1/senales":{"get":{"description":"Use when an agent is about to crawl, train on or ingest a website into RAG: checks the domain's AI consent and licensing signals (robots.txt per AI bot, RSL license, IETF AIPREF, TDMRep, noai meta tags, llms.txt, C2PA), returns a 0-100 score and a training stance, and a signed EAS receipt anchored on Base proving what was checked and when. Errors: 400 invalid domain; 502 site unreachable (not charged).","operationId":"consultarSenales","parameters":[{"description":"Domain to check, without scheme or path","in":"query","name":"dominio","required":true,"schema":{"example":"nytimes.com","maxLength":253,"minLength":3,"type":"string"}},{"description":"true forces a fresh analysis","in":"query","name":"fresco","required":false,"schema":{"default":false,"type":"boolean"}},{"description":"true pays directly instead of using the daily free quota","in":"query","name":"pagar","required":false,"schema":{"default":false,"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Informe"}}},"description":"Report (with `pago` object: transaction, signed receipt and EAS attestation when paid)"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Error"},"402":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Payment required (x402 v2). The PaymentRequired object is in the PAYMENT-REQUIRED header (base64) and in the body; pay and retry with PAYMENT-SIGNATURE.","headers":{"PAYMENT-REQUIRED":{"description":"base64 JSON PaymentRequired","schema":{"type":"string"}}}},"502":{"description":"Site unreachable — the payment is NOT settled"}},"security":[],"summary":"Paid AI-consent and licensing report for a domain, with signed receipt","tags":["consent"],"x-payment-info":{"asset":"USDC","networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"price":{"amount":"0.005","currency":"USD","mode":"fixed"},"protocols":["x402"]}}},"/v1/wallet-check":{"get":{"description":"Use when an AI agent or treasury is about to pay, receive from or interact with a crypto wallet: checks the address against the US OFAC SDN sanctions list (all its digital-currency addresses: ETH/EVM, BTC, TRX, SOL, USDT, USDC…) and returns sanctioned true/false, the listed entity and programs, and the exact list version used, with a signed receipt. Errors: 400 invalid address (not charged); 503 if no sanctions list is loaded (not charged).","operationId":"walletCheck","parameters":[{"description":"Crypto address: EVM 0x…, BTC, TRX, SOL…","in":"query","name":"address","required":true,"schema":{"example":"0x098B716B8Aaf21512996dC57EB0615e2383E2f96","type":"string"}}],"responses":{"200":{"description":"sanctioned true/false, decision blocked/clear, matches (entity, programs), lists used (version, SHA-256), signed receipt in `pago`"},"400":{"description":"Not a crypto address (not charged)"},"402":{"description":"Payment required (x402 v2, PAYMENT-REQUIRED header)"},"503":{"description":"No sanctions list loaded yet (not charged)"}},"security":[],"summary":"Paid sanctions screening of one crypto address (US OFAC SDN), with a signed receipt","tags":["compliance"],"x-payment-info":{"asset":"USDC","networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"price":{"amount":"0.005","currency":"USD","mode":"fixed"},"protocols":["x402"]}},"post":{"description":"Use when an agent, wallet or treasury must screen many crypto addresses at once against the US OFAC SDN sanctions list: up to 100 addresses per payment, sanctioned true/false per address with entity and programs, one signed receipt. Errors: 400 invalid input (not charged); 503 if no sanctions list is loaded (not charged).","operationId":"walletCheckBatch","requestBody":{"content":{"application/json":{"schema":{"properties":{"addresses":{"items":{"type":"string"},"maxItems":100,"minItems":1,"type":"array"}},"required":["addresses"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Per-address verdicts, one signed receipt"},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment required; price depends on the number of addresses (≤25 / ≤100)"}},"security":[],"summary":"Paid sanctions screening of up to 100 crypto addresses in one payment","tags":["compliance"],"x-payment-info":{"asset":"USDC","networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"price":{"currency":"USD","max":"0.05","min":"0.02","mode":"dynamic"},"protocols":["x402"]}}}},"security":[],"servers":[{"url":"https://api.crawlwitness.com"}],"tags":[{"description":"Paid (x402)","name":"consent"},{"description":"Free, rate-limited","name":"free"},{"description":"Model Context Protocol","name":"mcp"}]}