// the clean-data endpoint for AI agents

Hand it a URL.
Get back data your
model can trust.

odood turns any web page into clean, structured, LLM-ready text — and sanitizes it against prompt injection, returning a risk score and the exact spans it stripped. Pay per call. No keys, no accounts required for agents.

Start calling → Read the docs
$0.004 / call · USDC over x402 or prepaid credits · settled on Base
raw pageGET example.com/post
<article>
  <h1>Quarterly outlook</h1>
  <p>Revenue rose 12% on…</p>
  <nav>Home · About · Login</nav>
  <div style="color:#fff"></div>
  <script>adTracker()</script>
  <!-- ​​​ zero-width payload -->
</article>
POST /v1/extract● risk 0.86 flagged
{
  "title": "Quarterly outlook",
  "content_md": "Revenue rose 12% on…",
  "word_count": 812,
  "injection": {
    "risk_score": 0.86,
    "verdict": "flagged",
    "signals": ["hidden_text",
       "instruction_override"],
    "removed": [
      { "type":"white_on_white" },
      { "type":"zero_width", "n":14 }
    ]
  },
  "sanitized": true
}
// how it works

One call. Clean in, clean out.

No browser to drive, no HTML to parse, no hidden instructions slipping into your context window. odood does the dirty work so your agent doesn't have to.

01 / fetch

Fetch & extract

We fetch the URL responsibly — honoring robots.txt and declining sites that forbid automated access — then pull the real content, stripping nav, ads, trackers, and boilerplate down to clean Markdown or JSON.

02 / sanitize

Hunt the payloads

We scan for the places injections hide: invisible text, white-on-white divs, off-screen content, HTML comments, zero-width characters, and known override patterns.

03 / score

Return with a verdict

You get the clean content plus an injection risk score, the signals that fired, and the exact spans removed — so your agent decides with eyes open.

// the differentiator

A defense layer for the untrusted web.

Every page your agent reads is attacker-controllable. odood treats the open web as hostile by default and hands you back something you can reason about.

  • Strips invisible & zero-width text, hidden divs, and off-screen content
  • Detects instruction-override, tool-call mimicry, and fake-system-prompt patterns
  • Returns a calibrated risk score and the flagged spans, not a silent pass/fail
  • Labels output as untrusted data so your model handles it correctly
⚠ we say this out loud

It's a defense layer, not a guarantee. Prompt injection is an unsolved, adversarial problem — no tool catches everything. odood meaningfully reduces your exposure and tells you when something looks wrong. It does not promise an attacker can never get through. Anyone who promises that is selling you a smoke detector as a fireproof house.

// pricing

Pay per call. Two ways in.

Agents pay autonomously over x402 — no account, no API key, settled in stablecoin. Humans and apps can top up prepaid credits with a card.

◍ x402 — for agents
$0.004 / call

Wallet-based, stateless micropayments over HTTP 402. The agent calls, pays, and gets data in one round trip.

  • No account · no API key
  • USDC on Base · on-chain settle
  • Discoverable in the x402 Bazaar
  • Volume pricing from $0.0025
See discovery →
⎈ credits — for humans
$5 / 1,500 calls

Prepaid balance tied to an API key. Top up with a card, drop the key in a header, go.

  • Simple Bearer-token auth
  • Usage & balance via /v1/usage
  • Lower latency — skips the on-chain settle
  • Same endpoints, same output
// discovery

Built to be found by machines.

odood exposes the standard discovery surfaces so agents can find, price, and call it without a human in the loop.

/.well-known/x402

Payment-requirements manifest. Any x402-compatible agent discovers price, token, network, and endpoint automatically.

/.well-known/mcp.json

MCP tool descriptor, so MCP-aware models can list odood.extract as a callable tool.

/.well-known/agent.json

A2A agent card for Google's agent-to-agent protocol and other directory crawlers.