{"openapi":"3.1.0","info":{"title":"Primitive402 API","version":"0.12.0","description":"Tiny paid tools for AI agents. Composable x402 microtools for safe web ingestion, source verification, page proofs, return policy extraction, and subscription terms extraction."},"servers":[{"url":"https://primitive402.dev","description":"Configured public API base URL"}],"paths":{"/v1/safe-fetch-url":{"post":{"operationId":"safe_fetch_url","tags":["web","safety","prompt-injection","fetch","ssrf-guard"],"summary":"Safe Fetch URL","description":"Fetches a public HTTP or HTTPS URL after SSRF checks, follows only safe redirects, restricts response size and content type, extracts readable text or markdown, hashes the returned content, and optionally includes deterministic prompt-injection risk signals.","x-agent-use-case":"Use before ingesting raw webpage content into an AI agent context.","x-agent-use-cases":["Read a public webpage before summarizing it in an agent workflow.","Extract clean text from an external source while preserving a content hash.","Screen fetched content for prompt-injection risk signals before passing it to another tool."],"x-price-usd":"0.01","x-cache-policy":"May cache public URLs for 15 minutes.","x-safety-notes":["All requested URLs are checked with SSRF protection before fetching.","External content may still be unsafe to pass directly into an agent.","Response content is truncated and hashed; Primitive402 does not guarantee content safety."],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SafeFetchUrlInput"}}}},"responses":{"200":{"description":"Structured JSON response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SafeFetchUrlOutput"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment required for x402 route.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x402-protected":false}},"/x402/v1/safe-fetch-url":{"post":{"operationId":"safe_fetch_url_x402","tags":["web","safety","prompt-injection","fetch","ssrf-guard"],"summary":"Safe Fetch URL","description":"Fetches a public HTTP or HTTPS URL after SSRF checks, follows only safe redirects, restricts response size and content type, extracts readable text or markdown, hashes the returned content, and optionally includes deterministic prompt-injection risk signals.","x-agent-use-case":"Use before ingesting raw webpage content into an AI agent context.","x-agent-use-cases":["Read a public webpage before summarizing it in an agent workflow.","Extract clean text from an external source while preserving a content hash.","Screen fetched content for prompt-injection risk signals before passing it to another tool."],"x-price-usd":"0.01","x-cache-policy":"May cache public URLs for 15 minutes.","x-safety-notes":["All requested URLs are checked with SSRF protection before fetching.","External content may still be unsafe to pass directly into an agent.","Response content is truncated and hashed; Primitive402 does not guarantee content safety."],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SafeFetchUrlInput"}}}},"responses":{"200":{"description":"Structured JSON response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SafeFetchUrlOutput"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment required for x402 route.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x402-protected":true}},"/v1/check-prompt-injection-risk":{"post":{"operationId":"check_prompt_injection_risk","tags":["safety","prompt-injection","classification","risk-signal"],"summary":"Check Prompt Injection Risk","description":"Runs deterministic pattern rules over supplied external text and returns a risk score, risk level, matched patterns, evidence snippets, a safe summary, and a recommendation for downstream agent handling.","x-agent-use-case":"Use before treating external webpage, email, document, or tool output text as trusted task context.","x-agent-use-cases":["Screen tool output before adding it to an agent's instruction context.","Flag emails, webpages, or document snippets that may be unsafe to pass directly into an agent.","Route high-risk external text into an isolation or summarization step."],"x-price-usd":"0.005","x-cache-policy":"Do not cache by default because inputs may contain sensitive text.","x-safety-notes":["This endpoint returns risk signals, not a guarantee that content is safe or malicious.","Do not log or store raw sensitive text outside the hashed usage log path.","Keep agent permissions constrained even when the reported risk is low."],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptInjectionRiskInput"}}}},"responses":{"200":{"description":"Structured JSON response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptInjectionRiskOutput"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment required for x402 route.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x402-protected":false}},"/x402/v1/check-prompt-injection-risk":{"post":{"operationId":"check_prompt_injection_risk_x402","tags":["safety","prompt-injection","classification","risk-signal"],"summary":"Check Prompt Injection Risk","description":"Runs deterministic pattern rules over supplied external text and returns a risk score, risk level, matched patterns, evidence snippets, a safe summary, and a recommendation for downstream agent handling.","x-agent-use-case":"Use before treating external webpage, email, document, or tool output text as trusted task context.","x-agent-use-cases":["Screen tool output before adding it to an agent's instruction context.","Flag emails, webpages, or document snippets that may be unsafe to pass directly into an agent.","Route high-risk external text into an isolation or summarization step."],"x-price-usd":"0.005","x-cache-policy":"Do not cache by default because inputs may contain sensitive text.","x-safety-notes":["This endpoint returns risk signals, not a guarantee that content is safe or malicious.","Do not log or store raw sensitive text outside the hashed usage log path.","Keep agent permissions constrained even when the reported risk is low."],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptInjectionRiskInput"}}}},"responses":{"200":{"description":"Structured JSON response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptInjectionRiskOutput"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment required for x402 route.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x402-protected":true}},"/v1/verify-claim-against-source":{"post":{"operationId":"verify_claim_against_source","tags":["research","verification","citations","web","claim-check"],"summary":"Verify Claim Against Source","description":"Fetches a public source through the safe-fetch pipeline, searches for relevant snippets, and returns a baseline source-grounded verdict explaining whether the source supports, contradicts, or does not address the submitted claim.","x-agent-use-case":"Use before citing a webpage as evidence for a claim in agent-generated research or writing.","x-agent-use-cases":["Check whether a source addresses a claim before citing it.","Attach source-grounded snippets to an agent-generated research answer.","Route unsupported claims to a human review or additional source search step."],"x-price-usd":"0.05","x-cache-policy":"May cache fetched public source content for 15 minutes.","x-safety-notes":["The verdict is a source-grounded baseline, not a legal, scientific, or factual guarantee.","URL fetching uses SSRF protection before retrieval.","Source snippets may omit relevant context outside the fetched and truncated content."],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyClaimAgainstSourceInput"}}}},"responses":{"200":{"description":"Structured JSON response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyClaimAgainstSourceOutput"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment required for x402 route.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x402-protected":false}},"/x402/v1/verify-claim-against-source":{"post":{"operationId":"verify_claim_against_source_x402","tags":["research","verification","citations","web","claim-check"],"summary":"Verify Claim Against Source","description":"Fetches a public source through the safe-fetch pipeline, searches for relevant snippets, and returns a baseline source-grounded verdict explaining whether the source supports, contradicts, or does not address the submitted claim.","x-agent-use-case":"Use before citing a webpage as evidence for a claim in agent-generated research or writing.","x-agent-use-cases":["Check whether a source addresses a claim before citing it.","Attach source-grounded snippets to an agent-generated research answer.","Route unsupported claims to a human review or additional source search step."],"x-price-usd":"0.05","x-cache-policy":"May cache fetched public source content for 15 minutes.","x-safety-notes":["The verdict is a source-grounded baseline, not a legal, scientific, or factual guarantee.","URL fetching uses SSRF protection before retrieval.","Source snippets may omit relevant context outside the fetched and truncated content."],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyClaimAgainstSourceInput"}}}},"responses":{"200":{"description":"Structured JSON response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyClaimAgainstSourceOutput"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment required for x402 route.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x402-protected":true}},"/v1/create-page-proof":{"post":{"operationId":"create_page_proof","tags":["web","proof","audit","screenshot","page-capture"],"summary":"Create Page Proof","description":"Creates a timestamped page proof for a public URL after SSRF checks, capturing page metadata, final URL, content hashes, and optional screenshot and text artifacts for lightweight agent audit trails.","x-agent-use-case":"Use before acting on price, policy, availability, or source content that may need an audit trail.","x-agent-use-cases":["Capture a lightweight audit trail before an agent acts on a public webpage.","Record page metadata and hashes for price, policy, or availability checks.","Create screenshot and text artifacts for later human review."],"x-price-usd":"0.10","x-cache-policy":"Do not cache proof creation requests.","x-safety-notes":["A page proof is not a certified proof or legally binding record.","URL fetching and page capture use SSRF protection before navigation.","Screenshots and text snapshots can contain untrusted external content."],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePageProofInput"}}}},"responses":{"200":{"description":"Structured JSON response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePageProofOutput"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment required for x402 route.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x402-protected":false}},"/x402/v1/create-page-proof":{"post":{"operationId":"create_page_proof_x402","tags":["web","proof","audit","screenshot","page-capture"],"summary":"Create Page Proof","description":"Creates a timestamped page proof for a public URL after SSRF checks, capturing page metadata, final URL, content hashes, and optional screenshot and text artifacts for lightweight agent audit trails.","x-agent-use-case":"Use before acting on price, policy, availability, or source content that may need an audit trail.","x-agent-use-cases":["Capture a lightweight audit trail before an agent acts on a public webpage.","Record page metadata and hashes for price, policy, or availability checks.","Create screenshot and text artifacts for later human review."],"x-price-usd":"0.10","x-cache-policy":"Do not cache proof creation requests.","x-safety-notes":["A page proof is not a certified proof or legally binding record.","URL fetching and page capture use SSRF protection before navigation.","Screenshots and text snapshots can contain untrusted external content."],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePageProofInput"}}}},"responses":{"200":{"description":"Structured JSON response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePageProofOutput"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment required for x402 route.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x402-protected":true}},"/v1/extract-return-policy":{"post":{"operationId":"extract_return_policy","tags":["commerce","shopping","policy-extraction","returns","refunds","web","ssrf-guard"],"summary":"Extract Return Policy","description":"Fetches a public HTTP or HTTPS page through Primitive402's SSRF-protected safe-fetch pipeline, extracts readable text, and applies deterministic policy rules to identify return windows, free return signals, restocking fees, refund methods, exchange terms, cancellation terms, warranty mentions, important conditions, snippets, confidence, and content hashes.","x-agent-use-case":"Use before a shopping or browser agent recommends, compares, or purchases a product.","x-agent-use-cases":["Check whether a merchant appears to allow returns before recommending a product.","Attach return-window and refund-method snippets to a commerce workflow decision.","Route unclear or low-confidence policy pages to additional research or human review."],"x-price-usd":"0.03","x-cache-policy":"May cache fetched public policy pages for 15 minutes.","x-safety-notes":["All requested URLs are checked with SSRF protection before fetching.","The response contains policy extraction signals, not legal advice or guaranteed merchant terms.","When policy language is unclear, Primitive402 returns null fields and low confidence instead of guessing."],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractReturnPolicyInput"}}}},"responses":{"200":{"description":"Structured JSON response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractReturnPolicyOutput"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment required for x402 route.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x402-protected":false}},"/x402/v1/extract-return-policy":{"post":{"operationId":"extract_return_policy_x402","tags":["commerce","shopping","policy-extraction","returns","refunds","web","ssrf-guard"],"summary":"Extract Return Policy","description":"Fetches a public HTTP or HTTPS page through Primitive402's SSRF-protected safe-fetch pipeline, extracts readable text, and applies deterministic policy rules to identify return windows, free return signals, restocking fees, refund methods, exchange terms, cancellation terms, warranty mentions, important conditions, snippets, confidence, and content hashes.","x-agent-use-case":"Use before a shopping or browser agent recommends, compares, or purchases a product.","x-agent-use-cases":["Check whether a merchant appears to allow returns before recommending a product.","Attach return-window and refund-method snippets to a commerce workflow decision.","Route unclear or low-confidence policy pages to additional research or human review."],"x-price-usd":"0.03","x-cache-policy":"May cache fetched public policy pages for 15 minutes.","x-safety-notes":["All requested URLs are checked with SSRF protection before fetching.","The response contains policy extraction signals, not legal advice or guaranteed merchant terms.","When policy language is unclear, Primitive402 returns null fields and low confidence instead of guessing."],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractReturnPolicyInput"}}}},"responses":{"200":{"description":"Structured JSON response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractReturnPolicyOutput"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment required for x402 route.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x402-protected":true}},"/v1/extract-subscription-terms":{"post":{"operationId":"extract_subscription_terms","tags":["commerce","shopping","subscription","billing","trial","renewal","cancellation","web","ssrf-guard"],"summary":"Extract Subscription Terms","description":"Fetches a public HTTP or HTTPS page through Primitive402's SSRF-protected safe-fetch pipeline, extracts readable text, and applies deterministic subscription-term rules to identify trial availability and length, billing frequency, renewal type, renewal and introductory pricing mentions, cancellation terms, refund terms, minimum commitments, notice periods, price-change language, important conditions, snippets, confidence, and content hashes.","x-agent-use-case":"Use before a shopping, SaaS-buying, browser, or research agent recommends, purchases, or summarizes a subscription product.","x-agent-use-cases":["Check whether a subscription appears to auto-renew before recommending a plan.","Attach trial, billing, renewal, cancellation, and refund snippets to a commerce workflow decision.","Route unclear or low-confidence subscription terms to additional research or human review."],"x-price-usd":"0.04","x-cache-policy":"May cache fetched public subscription terms pages for 15 minutes.","x-safety-notes":["All requested URLs are checked with SSRF protection before fetching.","The response contains subscription-term extraction signals, not legal advice or guaranteed merchant terms.","When subscription language is unclear, Primitive402 returns null fields and low confidence instead of guessing."],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractSubscriptionTermsInput"}}}},"responses":{"200":{"description":"Structured JSON response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractSubscriptionTermsOutput"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment required for x402 route.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x402-protected":false}},"/x402/v1/extract-subscription-terms":{"post":{"operationId":"extract_subscription_terms_x402","tags":["commerce","shopping","subscription","billing","trial","renewal","cancellation","web","ssrf-guard"],"summary":"Extract Subscription Terms","description":"Fetches a public HTTP or HTTPS page through Primitive402's SSRF-protected safe-fetch pipeline, extracts readable text, and applies deterministic subscription-term rules to identify trial availability and length, billing frequency, renewal type, renewal and introductory pricing mentions, cancellation terms, refund terms, minimum commitments, notice periods, price-change language, important conditions, snippets, confidence, and content hashes.","x-agent-use-case":"Use before a shopping, SaaS-buying, browser, or research agent recommends, purchases, or summarizes a subscription product.","x-agent-use-cases":["Check whether a subscription appears to auto-renew before recommending a plan.","Attach trial, billing, renewal, cancellation, and refund snippets to a commerce workflow decision.","Route unclear or low-confidence subscription terms to additional research or human review."],"x-price-usd":"0.04","x-cache-policy":"May cache fetched public subscription terms pages for 15 minutes.","x-safety-notes":["All requested URLs are checked with SSRF protection before fetching.","The response contains subscription-term extraction signals, not legal advice or guaranteed merchant terms.","When subscription language is unclear, Primitive402 returns null fields and low confidence instead of guessing."],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractSubscriptionTermsInput"}}}},"responses":{"200":{"description":"Structured JSON response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractSubscriptionTermsOutput"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment required for x402 route.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x402-protected":true}}},"components":{"schemas":{"ErrorResponse":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"additionalProperties":false}},"additionalProperties":false},"SafeFetchUrlInput":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","pattern":"^https?://","description":"Public http or https URL."},"output":{"type":"string","enum":["markdown","text","html_excerpt"],"default":"markdown"},"maxBytes":{"type":"integer","minimum":1000,"maximum":2000000},"includeLinks":{"type":"boolean","default":true},"includeInjectionScan":{"type":"boolean","default":true}},"additionalProperties":false},"SafeFetchUrlOutput":{"type":"object","required":["url","finalUrl","title","contentHash","riskLevel","detectedInjectionPatterns","metadata"],"properties":{"url":{"type":"string","format":"uri"},"finalUrl":{"type":"string","format":"uri"},"title":{"type":["string","null"]},"cleanMarkdown":{"type":"string"},"cleanText":{"type":"string"},"contentHash":{"type":"string"},"riskLevel":{"type":"string","enum":["low","medium","high","critical"]},"detectedInjectionPatterns":{"type":"array","items":{"type":"string"}},"metadata":{"type":"object","required":["statusCode","contentType","fetchedAt","byteLength"],"properties":{"statusCode":{"type":"integer"},"contentType":{"type":["string","null"]},"fetchedAt":{"type":"string","format":"date-time"},"byteLength":{"type":"integer"}},"additionalProperties":false}},"additionalProperties":false},"PromptInjectionRiskInput":{"type":"object","required":["text"],"properties":{"text":{"type":"string","minLength":1,"maxLength":200000},"context":{"type":"string","enum":["webpage","email","document","tool_result","unknown"],"default":"unknown"}},"additionalProperties":false},"PromptInjectionRiskOutput":{"type":"object","required":["riskScore","riskLevel","patterns","safeSummary","recommendation"],"properties":{"riskScore":{"type":"integer","minimum":0,"maximum":100},"riskLevel":{"type":"string","enum":["low","medium","high","critical"]},"patterns":{"type":"array","items":{"type":"object","required":["id","label","severity","matched"],"properties":{"id":{"type":"string"},"label":{"type":"string"},"severity":{"type":"string","enum":["low","medium","high","critical"]},"matched":{"type":"boolean"},"evidence":{"type":"string"}},"additionalProperties":false}},"safeSummary":{"type":"string"},"recommendation":{"type":"string"}},"additionalProperties":false},"VerifyClaimAgainstSourceInput":{"type":"object","required":["claim","sourceUrl"],"properties":{"claim":{"type":"string","minLength":5,"maxLength":2000},"sourceUrl":{"type":"string","format":"uri","pattern":"^https?://","description":"Public http or https URL."},"maxSnippets":{"type":"integer","minimum":1,"maximum":8,"default":4}},"additionalProperties":false},"VerifyClaimAgainstSourceOutput":{"type":"object","required":["verdict","confidence","reason","supportingSnippets","source"],"properties":{"verdict":{"type":"string","enum":["supported","contradicted","not_addressed","unclear"]},"confidence":{"type":"number","minimum":0,"maximum":1},"reason":{"type":"string"},"supportingSnippets":{"type":"array","items":{"type":"string"}},"source":{"type":"object","required":["url","finalUrl","title","contentHash"],"properties":{"url":{"type":"string","format":"uri"},"finalUrl":{"type":"string","format":"uri"},"title":{"type":["string","null"]},"contentHash":{"type":"string"}},"additionalProperties":false}},"additionalProperties":false},"CreatePageProofInput":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","pattern":"^https?://","description":"Public http or https URL."},"captureScreenshot":{"type":"boolean","default":true},"captureText":{"type":"boolean","default":true},"viewport":{"type":"object","properties":{"width":{"type":"integer","minimum":320,"maximum":1920,"default":1280},"height":{"type":"integer","minimum":320,"maximum":3000,"default":900}},"additionalProperties":false}},"additionalProperties":false},"CreatePageProofOutput":{"type":"object","required":["proofId","url","finalUrl","timestamp","statusCode","title","contentHash","textHash","screenshotUrl","textSnapshotUrl"],"properties":{"proofId":{"type":"string"},"url":{"type":"string","format":"uri"},"finalUrl":{"type":"string","format":"uri"},"timestamp":{"type":"string","format":"date-time"},"statusCode":{"type":["integer","null"]},"title":{"type":["string","null"]},"contentHash":{"type":"string"},"textHash":{"type":["string","null"]},"screenshotUrl":{"type":["string","null"],"format":"uri"},"textSnapshotUrl":{"type":["string","null"],"format":"uri"}},"additionalProperties":false},"ExtractReturnPolicyInput":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","pattern":"^https?://","description":"Public http or https URL."},"strictness":{"type":"string","enum":["low","medium","high"],"default":"medium"},"maxSnippets":{"type":"integer","minimum":1,"maximum":10,"default":5},"includeRawText":{"type":"boolean","default":false}},"additionalProperties":false},"ExtractReturnPolicyOutput":{"type":"object","required":["return_window_days","free_returns","restocking_fee","exchange_policy","refund_method","cancellation_policy","warranty_summary","important_conditions","extracted_snippets","confidence","content_hash","fetched_at","source_url","final_url"],"properties":{"return_window_days":{"type":["integer","null"],"minimum":0},"free_returns":{"type":["boolean","null"]},"restocking_fee":{"type":["string","null"]},"exchange_policy":{"type":["string","null"]},"refund_method":{"type":["string","null"]},"cancellation_policy":{"type":["string","null"]},"warranty_summary":{"type":["string","null"]},"important_conditions":{"type":"array","items":{"type":"string"}},"extracted_snippets":{"type":"array","items":{"type":"string"}},"confidence":{"type":"number","minimum":0,"maximum":1},"content_hash":{"type":"string"},"fetched_at":{"type":"string","format":"date-time"},"source_url":{"type":"string","format":"uri"},"final_url":{"type":["string","null"],"format":"uri"},"raw_text":{"type":"string"}},"additionalProperties":false},"ExtractSubscriptionTermsInput":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","pattern":"^https?://","description":"Public http or https URL."},"strictness":{"type":"string","enum":["low","medium","high"],"default":"medium"},"maxSnippets":{"type":"integer","minimum":1,"maximum":10,"default":5},"includeRawText":{"type":"boolean","default":false}},"additionalProperties":false},"ExtractSubscriptionTermsOutput":{"type":"object","required":["has_subscription_terms","trial_available","trial_length_days","billing_frequency","renewal_type","renewal_price","intro_price","cancellation_policy","cancellation_deadline","refund_policy","minimum_commitment","notice_period","price_change_terms","important_conditions","extracted_snippets","confidence","content_hash","fetched_at","source_url","final_url"],"properties":{"has_subscription_terms":{"type":"boolean"},"trial_available":{"type":["boolean","null"]},"trial_length_days":{"type":["integer","null"],"minimum":0},"billing_frequency":{"type":["string","null"]},"renewal_type":{"type":["string","null"]},"renewal_price":{"type":["string","null"]},"intro_price":{"type":["string","null"]},"cancellation_policy":{"type":["string","null"]},"cancellation_deadline":{"type":["string","null"]},"refund_policy":{"type":["string","null"]},"minimum_commitment":{"type":["string","null"]},"notice_period":{"type":["string","null"]},"price_change_terms":{"type":["string","null"]},"important_conditions":{"type":"array","items":{"type":"string"}},"extracted_snippets":{"type":"array","items":{"type":"string"}},"confidence":{"type":"number","minimum":0,"maximum":1},"content_hash":{"type":"string"},"fetched_at":{"type":"string","format":"date-time"},"source_url":{"type":"string","format":"uri"},"final_url":{"type":["string","null"],"format":"uri"},"raw_text":{"type":"string"}},"additionalProperties":false}}}}