# Web URL Distiller with BM25 Budget Control

> Web URL Distiller with BM25 Budget Control is a paid API for AI agents from serp-extract.agentdiet.dev, paid per call via MPP, $0.001/call, status unknown (last checked 2026-10-21).

Fetches a webpage (or processes raw HTML) and compresses it into compact, agent-ready tokens using configurable distillation modes including markdown, structured, skeleton, or BM25-focused budget excerpts.

## Facts

- Endpoint: GET https://serp-extract.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: serp-extract.agentdiet.dev
- Website: https://serp-extract.agentdiet.dev
- Canonical page: https://www.zero.xyz/c/serp-extract-agentdiet-dev-web-url-distiller-with-bm25-budget-control-19e22d7c
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_hhttQYAoUu6xxu_5D5lXy

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 serp-extract-agentdiet-dev-web-url-distiller-with-bm25-budget-control-19e22d7c
```

Example prompt: Can you distill https://stripe.com/docs/payments into compact markdown, keeping it under 1000 tokens using budget mode with a focus query of '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 valuable when working with long documentation pages, competitor sites, or any URL where raw content would exceed context limits. The BM25 budget mode makes it uniquely useful when you have a specific query focus and a hard token ceiling. Prefer it over raw HTML fetching or generic scrapers when compression ratio and cost savings are first-class concerns.

## Known failure modes

- URL is unreachable or returns a non-200 response — endpoint may return an error status
- HTML payload is malformed and cannot be parsed cleanly
- mode=budget used without a query parameter — BM25 scoring may be undefined
- max_tokens ceiling set too low (below 20) — request rejected by schema validation
- Target URL requires JavaScript rendering which the fetcher does not support
- Rate limiting or payment failure via x402 causes the request to be rejected

## How this service works

Distill a web URL into compact agent-ready tokens (Live x402 v2, IETF MPP & MCP endpoint at https://serp-extract.agentdiet.dev/v1/pdf-extract)

## Output

Returns a distilled data object containing the page content in the chosen format (markdown, structured tables/metadata, skeleton outline, or BM25-focused excerpt), plus ROI proof metrics (raw token count, distilled token count, tokens saved, compression ratio, LLM cost saved in USD, ROI multiplier), billing details, and cache status.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "url"
 ],
 "properties": {
  "url": {
   "type": "string",
   "minLength": 1,
   "description": "Target webpage URL to distill (or builtin://stripe-docs)"
  },
  "mode": {
   "enum": [
    "markdown",
    "structured",
    "skeleton",
    "budget"
   ],
   "type": "string",
   "default": "markdown",
   "description": "Extraction mode: markdown, structured, skeleton, or budget"
  },
  "limit": {
   "type": "integer",
   "default": 20,
   "maximum": 100,
   "minimum": 1,
   "description": "Maximum number of items to return per page (1-100)"
  },
  "query": {
   "type": "string",
   "description": "BM25 focus query when mode=budget"
  },
  "cursor": {
   "type": "string",
   "description": "Opaque pagination cursor for fetching the next page"
  },
  "max_tokens": {
   "type": "integer",
   "minimum": 20,
   "description": "Strict token 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/serp-extract-agentdiet-dev-web-url-distiller-with-bm25-budget-control-19e22d7c/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from serp-extract.agentdiet.dev](https://www.zero.xyz/host/serp-extract.agentdiet.dev/llms.txt)
