{"products":[{"sku":"evidence-v1","name":"Batchloom Citation Evidence","stage":"experimental","description":"Check literal quotations against fresh static public publisher pages. Return source URLs, fetch time, normalized-text SHA-256, match offsets and bounded excerpts. No semantic truth verification.","endpoint":{"method":"POST","path":"/v1/evidence","url":"https://batchloom-studio-0913.xuikatwsicrdsidm.chatgpt.site/v1/evidence"},"discoveryProbes":{"methods":["GET","HEAD","POST"],"postBodies":["empty body","empty JSON object","valid evidence input"],"behavior":"Unsigned price discovery only; no source fetching, authorization or settlement. Actual purchase and recovery require POST with valid input. Signed GET/HEAD are rejected. Paused sales return 503."},"price":{"amount":"0.01","amountAtomic":"10000","currency":"USDC","network":"eip155:8453","asset":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","payTo":"0x609f8d893c270c5ec0d909660c7d01df94fc01ea"},"chargePolicy":"Set requireAllSources:true to require every source to be readable before settlement. Without that option: one fixed payment per batch when at least one source is completely readable. A readable page with no matching quotes is still chargeable. Mixed batches include explicit failures and cost the same. When every source is unusable, no settlement is submitted and no evidence is delivered.","limits":{"inputBytes":32768,"sources":5,"quotesPerSource":4,"quoteMin":12,"quoteMax":400,"urlCharacters":2048,"pageBytes":262144,"normalizedCodePoints":100000,"excerptCodePoints":500,"sourceTimeoutMs":8000,"redirects":3,"concurrency":2,"robotsBytes":512000,"robotsRules":4096,"robotsMatchOperations":200000,"totalQuotes":20,"resultBytes":65536,"signedAttemptsPerMinute":6},"sourceHosts":[{"host":"docs.docker.com","label":"Docker documentation","category":"documentation"},{"host":"react.dev","label":"React documentation","category":"documentation"},{"host":"docs.astral.sh","label":"uv documentation","category":"documentation"},{"host":"www.typescriptlang.org","label":"TypeScript documentation","category":"documentation"},{"host":"www.postgresql.org","label":"PostgreSQL documentation","category":"documentation"},{"host":"proceedings.mlr.press","label":"PMLR research abstracts","category":"research"},{"host":"aclanthology.org","label":"ACL Anthology abstracts","category":"research"},{"host":"example.com","label":"Example fixture publisher","category":"fixture"},{"host":"arxiv.org","label":"arXiv","category":"research"},{"host":"en.wikipedia.org","label":"English Wikipedia","category":"reference"},{"host":"developers.cloudflare.com","label":"Cloudflare developer documentation","category":"documentation"},{"host":"www.sec.gov","label":"US Securities and Exchange Commission","category":"public agency"},{"host":"www.federalreserve.gov","label":"US Federal Reserve","category":"public agency"},{"host":"docs.python.org","label":"Python documentation","category":"documentation"},{"host":"developer.mozilla.org","label":"MDN Web Docs","category":"documentation"},{"host":"www.nasa.gov","label":"NASA","category":"public agency"},{"host":"science.nasa.gov","label":"NASA Science","category":"public agency"},{"host":"www.noaa.gov","label":"NOAA","category":"public agency"},{"host":"www.nist.gov","label":"NIST","category":"public agency"},{"host":"www.cdc.gov","label":"CDC","category":"public agency"},{"host":"www.who.int","label":"World Health Organization","category":"public institution"},{"host":"www.worldbank.org","label":"World Bank","category":"public institution"},{"host":"data.worldbank.org","label":"World Bank Data","category":"public institution"},{"host":"www.imf.org","label":"International Monetary Fund","category":"public institution"},{"host":"www.oecd.org","label":"OECD","category":"public institution"},{"host":"www.un.org","label":"United Nations","category":"public institution"},{"host":"www.gov.uk","label":"UK government","category":"public agency"},{"host":"www.legislation.gov.uk","label":"UK legislation","category":"public agency"},{"host":"eur-lex.europa.eu","label":"European Union law","category":"public institution"},{"host":"doc.rust-lang.org","label":"Rust documentation","category":"documentation"},{"host":"go.dev","label":"Go documentation","category":"documentation"},{"host":"nodejs.org","label":"Node.js documentation","category":"documentation"},{"host":"tc39.es","label":"ECMAScript standards","category":"documentation"},{"host":"www.rfc-editor.org","label":"RFC Editor","category":"documentation"}],"supported":["Static UTF-8 HTML, plain text and Markdown","Exact listed HTTPS hosts, port 443","Case-sensitive literal matching after NFC and Unicode whitespace normalization","First match offsets in Unicode code points, end exclusive; total literal occurrence count"],"exclusions":["Arbitrary domains, authenticated pages, paywalls, PDFs, JavaScript rendering","Search/discovery of new URLs, semantic entailment, truth or relevance judgments","Browser/CSS visibility guarantees, source publication freshness guarantees","Whole-page text delivery"],"extraction":"Replace head, scripts, styles, navigation, footer, templates, SVG, canvas, iframe, object, noembed/noframes and explicit hidden attributes/inline styles with whitespace. Insert whitespace around block elements; decode HTML entities per lexical text node except raw-text xmp/plaintext. This is a static text extraction, not a browser rendering.","sourceAccess":"Respect robots.txt for BatchloomEvidenceBot. A listed host can still be unavailable. Redirects must stay within the fixed host list; missing robots.txt (404) permits access, other inaccessible or unsupported robots responses block it.","recovery":"Persist a private 32-byte X-Delivery-Token, the original input, intent ID and PAYMENT-SIGNATURE before sending a signed request. Retry all originals. A stored result is delivered only after confirmed settlement. The same receipt returns the same snapshot; a fresh snapshot requires a new explicit purchase intent. Never sign again to recover uncertainty.","privacy":"The server stores hashes of the input and private delivery token, payment authorization/receipt metadata, and the bounded result (including public URLs and matched source excerpts) for recovery without an automatic expiry. It does not store the full fetched page. Client receipts contain the original input and private recovery secret. Do not submit sensitive or private data.","endpoints":{"schema":"/v1/evidence/schema","sample":"/v1/evidence/sample","contract":"/v1/evidence/contract","validate":"/v1/evidence/validate","prepare":"/v1/evidence/prepare","demo":"/v1/evidence/demo","client":"/evidence-client.mjs","example":"/evidence-example.json"},"preparation":"POST the original input to /v1/evidence/prepare for its canonical input hash, exact price, receipt storage observation and client instructions. No secret, source fetch, signing or payment is generated. Source and facilitator availability remain unchecked.","processingProfile":"New results contain a processingProfile SHA-256 identifying the bundled extraction implementation. Compare only the same input and matching profiles; old receipts retain their original results. This is an implementation identifier, not a publisher signature or runtime attestation.","comparison":{"endpoint":"/v1/evidence/compare","method":"POST","price":"free","offlineModule":"/compare-evidence.mjs","schema":"/evidence-comparison-schema.json","example":"/evidence-comparison-example.json","limits":{"inputBytes":196608,"originalInputBytes":32768,"snapshotBytes":65536,"outputBytes":32768,"sources":5,"quotesPerSource":4,"quoteMin":12,"quoteMax":400,"excerptCodePoints":500,"sourceCodePoints":100000,"maxDepth":16,"maxNodes":8192},"input":"{input,before:{inputHash,evidence},after:{inputHash,evidence}}","behavior":"Compares supplied snapshots without fetching, paying or storing their contents. Unreadable sources are never labeled quote removals. Missing/different processing profiles, non-increasing fetch times and redirect/content-type changes yield review-only observations. Recovered identical results are the same snapshot, not fresh data. Input/snapshot hashes are consistency checks, not authenticity proofs."},"buyerBridge":{"transport":"stdio","runtime":"Node.js 20+","readme":"/agent-bridge/README.md","files":["/agent-bridge/bridge.mjs","/agent-bridge/cli.mjs","/agent-bridge/evidence-client.mjs","/agent-bridge/package.json","/agent-bridge/bridge-config.example.json","/agent-bridge/README.md","/agent-bridge/viem-buyer-signer.mjs","/agent-bridge/viem-env-signer.mjs","/agent-bridge/evidence-cli.mjs","/agent-bridge/viem-bridge-config.example.json","/agent-bridge/BUYER-QUICKSTART.md"],"tools":["prepare_evidence_request","purchase_evidence"],"defaultPurchaseIntentsPerProcess":0,"policy":"Only an explicitly configured caller-owned local signer can authorize a new purchase. Limit is per process, counts distinct attempted intents including recoveries and resets on restart. No server key custody or automatic purchase at startup.","quickstart":"/agent-bridge/BUYER-QUICKSTART.md"},"demo":"GET /v1/evidence/demo fetches only the fixed example.com input for free. It cannot accept custom URLs or quotes. It uses the production extractor; availability is not guaranteed.","billingAvailability":"Requires the facilitator free allowance to remain available. If settlement cannot be confirmed, return an unresolved response and retain the original receipt. No automatic purchase of infrastructure credits.","failureDiagnosis":{"httpStatus":502,"code":"ALL_SOURCES_UNUSABLE","maxBytes":8192,"attemptHeader":"X-Evidence-Attempt","attemptFormat":"Optional fresh 16-byte hex correlation per signed HTTP attempt. Not an authorization, payment nonce, secret or purchase intent.","fields":["inputHash","attemptId","sourceIndex","status","code","httpStatus","action"],"actions":["retry_same_receipt_later","review_supported_static_source","respect_source_policy","review_source"],"behavior":"When every source is unusable, the client may expose a bounded diagnosis tied to the current attempt and original input. It contains no source URLs, quotes or excerpts. It reports no settlement submitted in this attempt only; it is not a cryptographic no-payment guarantee. paymentStatus stays unresolved. Preserve original receipts; changed input requires separate explicit authorization. Never automatically replace a payment because of an error body."},"trial":{"endpoint":"/v1/evidence/trial","method":"POST","price":"free","limits":{"sources":1,"quotes":1,"perClientPerDay":2,"globalPerDay":100,"inputBytes":4096},"behavior":"One real caller-supplied supported URL and quote. No payment, stored evidence or paid recovery. Attempts consume quota including failed sources."},"reportAudit":{"endpoint":"/v1/evidence/report-audit","method":"POST","price":"free","schema":"/report-preflight-schema.json","example":"/report-preflight-example.json","limits":{"inputBytes":98304,"outputBytes":98304,"reportCodePoints":24000,"references":20,"quotesPerReference":4,"blocks":120,"markers":240},"behavior":"Free deterministic audit of caller-supplied report text and structured references using [cite:id] markers. Lists unmarked text blocks, unknown/unused refs, duplicate exact source URLs, missing/unsupported URLs and quote presence in the report. Produces validated evidence request batches. No fetch, signing, payment, semantic verification or claim-coverage score."},"billingPolicyOption":{"field":"requireAllSources","type":"boolean","default":false,"behavior":"Set true before signing to require every source to be readable before any settlement submission in that attempt. Zero literal matches may still be chargeable. The policy is bound to the original input hash and immutable receipt; never change it for recovery."},"workflow":["audit_report_citations: detect citation structure issues and prepare batches without fetching","trial_evidence: try one real supported URL and quote free","prepare_evidence_request: inspect policy/price","Use buyer-local viem CLI or MCP bridge for an explicitly authorized purchase","compare_evidence_snapshots: compare repeated observations"],"pricing":{"amount":"0.01","amount_atomic":"10000","currency":"USDC","network":"eip155:8453","asset":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","decimals":6,"pay_to":"0x609f8d893c270c5ec0d909660c7d01df94fc01ea","model":"per_readable_batch"}},{"sku":"agent-kit-v1","name":"Batchloom Agent Asset Kit","description":"A deterministic Node.js renderer for SVG product cards. Inspect fixed examples, preview one product, and validate a batch for free; purchase the source toolkit to run locally.","endpoint":{"method":"GET","path":"/v1/kit","url":"https://batchloom-studio-0913.xuikatwsicrdsidm.chatgpt.site/v1/kit","content_type":"application/json"},"pricing":{"amount":"0.99","amount_atomic":"990000","currency":"USDC","network":"eip155:8453","asset":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","decimals":6,"pay_to":"0x609f8d893c270c5ec0d909660c7d01df94fc01ea","model":"one_time_source_license"},"discovery":{"schema":"/v1/schema","sample":"/v1/sample","preview":"/v1/preview","validation":"/v1/validate","client_example":"/client-example.mjs"},"rendering":{"kind":"SVG text and geometry","photography":false,"ai_image_generation":false,"remote_resource_fetching":false,"dimensions":{"square":[1080,1080],"portrait":[1080,1350],"story":[1080,1920]},"determinism":"Pin the renderer and Node.js runtime for repeatable SVG bytes. Installed fonts and rasterizers can change rendered pixels."},"license":"Single-operator commercial-output license; use across that operator's agent fleet. Source redistribution or resale is prohibited. See delivered LICENSE.txt."}],"featured_product":"evidence-v1","name":"Batchloom Agent Services","version":"1.4.0","description":"Check literal quotations against fresh static public publisher pages. Return source URLs, fetch time, normalized-text SHA-256, match offsets and bounded excerpts. No semantic truth verification.","url":"https://batchloom-studio-0913.xuikatwsicrdsidm.chatgpt.site","intended_customers":"software_agents_only","identity_verification":"An API caller is not proven to be an AI. The service provides machine interfaces and no browser payment checkout.","endpoint":{"method":"POST","path":"/v1/evidence","url":"https://batchloom-studio-0913.xuikatwsicrdsidm.chatgpt.site/v1/evidence"},"pricing":{"amount":"0.01","amount_atomic":"10000","currency":"USDC","network":"eip155:8453","asset":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","decimals":6,"pay_to":"0x609f8d893c270c5ec0d909660c7d01df94fc01ea","model":"per_readable_batch"},"payment":{"protocol":"x402","version":2,"scheme":"exact","facilitator":"https://facilitator.payai.network","required_header":"PAYMENT-SIGNATURE","required_recovery_header":"X-Delivery-Token","human_checkout":false,"mcp_signs_or_pays":false},"discovery":{"openapi":"/openapi.json","instructions":"/llms.txt","schema":"/v1/evidence/schema","sample":"/v1/evidence/sample","status":"/v1/status","preview":"/v1/evidence/demo","validation":"/v1/evidence/validate","client_example":"/evidence-client.mjs","mcp":"/v1/mcp","bazaar":"Metadata is advertised. Third-party catalog inclusion and customer demand are not guaranteed.","prepare":"/v1/evidence/prepare","compare":"/v1/evidence/compare","buyer_bridge":"https://batchloom-studio-0913.xuikatwsicrdsidm.chatgpt.site/agent-bridge/README.md","mcp_server_metadata":"https://batchloom-studio-0913.xuikatwsicrdsidm.chatgpt.site/mcp-server.json","trial":"/v1/evidence/trial","report_audit":"/v1/evidence/report-audit","workflow":"/research-workflow.md","buyer_quickstart":"/agent-bridge/BUYER-QUICKSTART.md"},"free_endpoints":[{"method":"GET","path":"/v1/schema","returns":"JSON Schema 2020-12 renderer input contract"},{"method":"GET","path":"/v1/sample","returns":"Three fixed SVG examples and warnings"},{"method":"POST","path":"/v1/preview","input":"Renderer input JSON","limits":{"products":1,"formats":3,"assets":3,"bodyBytes":8192},"returns":"version, assets, warnings; no toolkit source"},{"method":"POST","path":"/v1/validate","input":"Renderer input JSON","limits":{"products":100,"formats":3,"assets":300,"bodyBytes":65536},"returns":"valid, productCount, assetCount, warnings; no assets or source"}],"mcp":{"url":"https://batchloom-studio-0913.xuikatwsicrdsidm.chatgpt.site/v1/mcp","transport":"streamable-http","response_type":"application/json","protocol_version":"2025-11-25","compatibility_versions":["2025-03-26","2025-06-18"],"initialize_required":true,"session_ids":false,"sse":false,"get_status":405,"tools":["audit_report_citations","trial_evidence","compare_evidence_snapshots","prepare_evidence_request","get_evidence_contract","get_evidence_sample","validate_evidence_request","get_manifest","get_sample","preview_assets","validate_batch"],"purchase_behavior":"Tools provide information and free processing only. Use the separate x402 client for a purchase authorized by its operator."},"requirements":["An operator-authorized Base native USDC buyer signer for purchases","Node.js 20+ for the optional local purchase client"],"recovery":"Persist a private 32-byte X-Delivery-Token, the original input, intent ID and PAYMENT-SIGNATURE before sending a signed request. Retry all originals. A stored result is delivered only after confirmed settlement. The same receipt returns the same snapshot; a fresh snapshot requires a new explicit purchase intent. Never sign again to recover uncertainty.","limits":{"sources_per_batch":5,"quotes_per_source":4,"quote_code_points":[12,400],"input_bytes":32768,"result_bytes":65536,"mcp_body_bytes":196608,"free_compute_rate_limit":{"requests":20,"windowSeconds":60,"scope":"per_client","enforcement":"database_required","shared_by":["POST /v1/preview","POST /v1/validate","MCP preview_assets","MCP validate_batch","POST /v1/evidence/validate","GET /v1/evidence/demo","MCP validate_evidence_request","POST /v1/evidence/prepare","MCP prepare_evidence_request","POST /v1/evidence/compare","MCP compare_evidence_snapshots","POST /v1/evidence/trial","POST /v1/evidence/report-audit","MCP trial_evidence","MCP audit_report_citations"],"excluded_tools":["get_manifest","get_sample","get_evidence_contract","get_evidence_sample"]}},"license":"Evidence excerpts retain source publisher rights. The separate local asset toolkit has its own source license in products[1].","refunds":"No automatic refund endpoint. Merchant wallet private keys are not held by this service.","catalog_version":2,"workflow":["audit_report_citations: detect citation structure issues and prepare batches without fetching","trial_evidence: try one real supported URL and quote free","prepare_evidence_request: inspect policy/price","Use buyer-local viem CLI or MCP bridge for an explicitly authorized purchase","compare_evidence_snapshots: compare repeated observations"],"measurement":{"storage":"Daily aggregate stage/outcome counters only; no request text, source URLs, payment headers, receipt secrets, wallet addresses or raw IP/user-agent data in analytics.","interpretation":"Request and delivery counters are not unique buyers or sales. Declared probe categories are not identity proof."},"payments_enabled":true,"kit_payments_enabled":true,"evidence_payments_enabled":true,"recovery_header":"X-Delivery-Token","recovery_instructions":"Generate 32 random bytes encoded as 64 lowercase hex characters before purchase. Preserve this secret with the payment header and original input. Send all originals on retries. Never publish the credentials."}