Retrieve a hostile web page safely: clean Markdown, citation anchors, and decoded evidence of what the page was trying to say to your agent.
SafeFetch retrieves one public page through a three-layer SSRF guard that revalidates every redirect hop, extracts the article as Markdown or text, and returns the full redirect chain, a sha256 of the exact bytes retrieved, a retrieval timestamp, and W3C Web Annotation citation anchors (TextQuoteSelector plus TextPositionSelector) with a Text Fragment deep link for each passage. It then reports what the page was doing to whatever reads it: CSS-hidden and HTML-hidden text, invisible Unicode channels decoded rather than counted, encoded blobs, and instruction-like phrasing, each as an evidence entry carrying the decoded payload, the technique, and a span. robots.txt is fetched through the same guard and honoured by default; a disallow is a free refusal. Detection is deterministic and can be evaded by a technique not in the rule set, so `allow` means no signal was found and never that the page is safe. Nothing is retained.
| Route | What it does | Price |
|---|---|---|
POST /v1/fetch | Fetch one public page as Markdown with citation anchors, a content hash, and decoded evidence of hidden or injected instructions | $0.01 |
Send the request unpaid to see the live quote. You get HTTP 402 and a PAYMENT-REQUIRED header.
curl -i -sS -X POST https://safefetch.schemasure.com/v1/fetch \
-H 'content-type: application/json' \
-d '{"url":"https://example.com/article","output":"markdown","policy":{"max_bytes":2000000,"allow_redirects":3,"flag_prompt_injection":true,"respect_robots":true,"user_initiated":false}}'
eip155:8453).Every response carries a verdict. When this service cannot determine an answer it returns
unknown with evidence explaining why. It never reports an undetermined result as a clean one.