# Web URL Distillation & BM25 Budget Extractor

> Web URL Distillation & BM25 Budget Extractor is a paid API for AI agents from onchain-risk.agentdiet.dev, paid per call via MPP, $0.001/call, status unknown (last checked 2026-10-21).

Fetches a webpage URL (or raw HTML) and distills it into compact, agent-ready tokens using configurable modes including BM25-focused budget extraction

## Facts

- Endpoint: GET https://onchain-risk.agentdiet.dev/v1/pdf-extract?utm_source=zero.xyz
- Price: $0.001/call
- Payment: MPP
- Status: unknown
- Last checked: 2026-10-21
- Activations on Zero: 0
- Provider: onchain-risk.agentdiet.dev
- Website: https://onchain-risk.agentdiet.dev
- Canonical page: https://www.zero.xyz/c/onchain-risk-agentdiet-dev-web-url-distillation-bm25-budget-extractor-22601b41
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_mJfzgn9gjWAykNRH-Fo7v

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability onchain-risk-agentdiet-dev-web-url-distillation-bm25-budget-extractor-22601b41
```

Example prompt: Distill https://stripe.com/docs/api into compact markdown for me, using budget mode with a max of 500 tokens and a focus query on 'payment intents'.

## When to prefer this

Choose this endpoint when you need to feed web content to an LLM but want to minimize token usage and cost. It is especially useful when you need BM25-relevance-filtered excerpts within a strict token budget, or when you want structured JSON tables/metadata rather than raw HTML. Prefer it over raw web scraping when compression ratio and LLM cost savings matter, or when you need multiple distillation modes (markdown, structured, skeleton, budget) from a single service.

## Known failure modes

- Invalid or unreachable URL returns an error status
- Token budget too small (below minimum of 20) causes validation failure
- BM25 query not provided when mode=budget may return unfiltered excerpt
- Rate limiting or payment failure via x402 may block the request
- Raw HTML too large may exceed processing limits
- Paywalled or bot-blocked pages may return incomplete content

## How this service works

Distill a URL or raw HTML payload with BM25 budget control (Live x402 v2, IETF MPP & MCP endpoint at https://onchain-risk.agentdiet.dev/v1/pdf-extract)

## Output

Returns a distilled version of the requested webpage or HTML in the chosen format (Markdown, structured JSON, skeleton outline, or BM25 budget excerpt), along with an ROI proof object showing raw vs distilled token counts, tokens saved, compression ratio, and estimated LLM cost savings. Also includes cache status and billing details.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "url"
 ],
 "properties": {
  "url": {
   "type": "string",
   "minLength": 1,
   "description": "Target webpage URL to fetch and distill (or builtin://stripe-docs)"
  },
  "html": {
   "type": "string",
   "description": "Optional raw HTML string to distill directly without fetching"
  },
  "mode": {
   "enum": [
    "markdown",
    "structured",
    "skeleton",
    "budget"
   ],
   "type": "string",
   "default": "markdown",
   "description": "Distillation mode"
  },
  "query": {
   "type": "string",
   "description": "BM25 focus query when mode=budget"
  },
  "max_tokens": {
   "type": "integer",
   "minimum": 20,
   "description": "Strict token budget ceiling when mode=budget"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "status",
  "roi_proof",
  "data"
 ],
 "properties": {
  "data": {
   "type": "object",
   "description": "Distilled Markdown, structured JSON tables/metadata, skeleton outline, or BM25 budget excerpt."
  },
  "cache": {
   "type": "object",
   "properties": {
    "status": {
     "enum": [
      "HIT",
      "MISS"
     ],
     "type": "string"
    },
    "cache_key": {
     "type": "string"
    },
    "latency_ms": {
     "type": "number"
    }
   }
  },
  "status": {
   "type": "string",
   "description": "Execution status ('ok')"
  },
  "billing": {
   "type": "object",
   "properties": {
    "agent_id": {
     "type": "string"
    },
    "payment_method": {
     "type": "string"
    },
    "fee_charged_usd": {
     "type": "number"
    }
   }
  },
  "roi_proof": {
   "type": "object",
   "properties": {
    "raw_tokens": {
     "type": "integer"
    },
    "tokens_saved": {
     "type": "integer"
    },
    "roi_multiplier": {
     "type": "number"
    },
    "distilled_tokens": {
     "type": "integer"
    },
    "llm_cost_saved_usd": {
     "type": "number"
    },
    "compression_ratio_pct": {
     "type": "number"
    }
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/onchain-risk-agentdiet-dev-web-url-distillation-bm25-budget-extractor-22601b41/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from onchain-risk.agentdiet.dev](https://www.zero.xyz/host/onchain-risk.agentdiet.dev/llms.txt)
