{"uid":"cap_NXeJSIITHzTJYme6j6mhQ","slug":"safefetch-90699e93","name":"SafeFetch","description":"Fetch a public web page and return clean Markdown with stable citation anchors, a content hash, and a retrieval timestamp — plus evidence of hidden text, invisible Unicode, and prompt-injection attempts found in the page. Strict SSRF protection on every redirect hop. Returns a per-span verdict with the decoded payload, not a confidence score. Zero retention.","url":"https://safefetch.schemasure.com/v1/fetch?utm_source=zero.xyz","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"url":{"type":"string","format":"uri","maxLength":2048,"description":"An http or https URL naming a hostname. Ports other than 80 and 443, credentials in the URL, and literal IP addresses are rejected."},"output":{"enum":["markdown","text","both"],"type":"string","default":"markdown","description":"Which rendering to include in the result. Defaults to markdown."},"policy":{"type":"object","properties":{"max_bytes":{"type":"integer","maximum":20971520,"minimum":1024,"description":"Analysis cap. A document larger than this is truncated before parsing and the verdict becomes unknown, because an unanalysed remainder exists."},"respect_robots":{"type":"boolean","default":true,"description":"Honour robots.txt. A disallow returns 403 POLICY_BLOCKED with the matched rule and is not charged. Setting this false requires user_initiated:true."},"user_initiated":{"type":"boolean","default":false,"description":"Attestation that a person explicitly asked for this specific page. Required to set respect_robots:false. Logged."},"allow_redirects":{"type":"integer","maximum":3,"minimum":0,"description":"Redirect hops permitted. Every hop is revalidated against the SSRF policy."},"flag_prompt_injection":{"type":"boolean","default":true,"description":"Run injection detection. Setting this false makes the verdict unknown rather than allow: `allow` means no signal was found, and with detection off nothing looked."}},"additionalProperties":false}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.02","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.02/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.02","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.02","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_zkC6Gu4aQZsWpNUj-lKBx","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.02","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Fetches a public web page and returns clean Markdown with citation anchors, a content hash, a retrieval timestamp, and per-span detection of hidden text, invisible Unicode, and prompt-injection attempts.","exampleAgentPrompt":"Can you safely fetch https://example.com/blog/article and return the clean markdown version, with prompt-injection detection on, respecting robots.txt, and allowing up to 2 redirect hops?","exampleUseCases":[{"title":"Verify AI-safe content before ingestion","prompt":"Before I feed this article into my RAG pipeline, can you fetch https://news.example.com/story/42 as markdown and tell me if it contains any hidden text, invisible Unicode, or prompt-injection attempts I should know about?"},{"title":"Cite-stable research page retrieval","prompt":"Fetch https://research.example.org/papers/overview as markdown so I get stable citation anchors and a content hash — I need to prove the page content at retrieval time for my report."},{"title":"Agent browsing with robots.txt override","prompt":"I know the user just clicked this link themselves — fetch https://internal.example.com/report as both markdown and plain text, it's user-initiated so you can bypass robots.txt, and cap the analysis at 5 megabytes."}],"resultDescription":"Returns the fetched page as clean Markdown and/or plain text, a SHA-based content hash, a retrieval timestamp, stable per-paragraph citation anchors, and a per-span security verdict for each detected anomaly (hidden text, invisible Unicode, prompt-injection). Each verdict includes the decoded payload. No data is retained after the response.","failureModes":["URL uses a non-standard port (not 80/443) — rejected with SSRF policy error","URL contains credentials or a literal IP address — rejected","robots.txt disallows the URL and respect_robots is true — returns 403 POLICY_BLOCKED with matched rule, not charged","Document exceeds max_bytes — truncated, remainder unanalysed, injection verdict becomes unknown","Redirect hop limit exceeded or a redirect hop resolves to a private IP — SSRF rejection","user_initiated not set to true when respect_robots is false — request rejected","Network timeout or unreachable host — fetch error returned"],"whenToPreferThis":"Choose SafeFetch when you need to retrieve a web page for use in an AI pipeline and need security guarantees: SSRF protection on every redirect hop, detection of prompt-injection payloads embedded in page content, and evidence of hidden text or invisible Unicode that could manipulate downstream LLMs. Prefer it over generic fetch/scrape tools when auditability (content hash, citation anchors, retrieval timestamp) or adversarial content detection matters. It is particularly well-suited for RAG ingestion pipelines, citation-requiring research tasks, and any agent that browses the open web autonomously.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-10T18:34:07.985Z","isFirstParty":false,"canonicalSlug":"safefetch-90699e93"}