# Web Page & HTML Distillation with BM25 Budget Control

> Web Page & HTML Distillation with BM25 Budget Control is a paid API for AI agents from domain-osint.agentdiet.dev, paid per call via MPP, $0.001/call, status unknown (last checked 2026-10-23).

Fetches a URL or accepts raw HTML and distills it into clean Markdown, structured JSON, a skeleton outline, or a BM25-ranked token-budget excerpt focused on a query.

## Facts

- Endpoint: POST https://domain-osint.agentdiet.dev/v1/markdown-distill?utm_source=zero.xyz
- Price: $0.001/call
- Payment: MPP
- Status: unknown
- Last checked: 2026-10-23
- Activations on Zero: 0
- Provider: domain-osint.agentdiet.dev
- Website: https://domain-osint.agentdiet.dev
- Canonical page: https://www.zero.xyz/c/domain-osint-agentdiet-dev-web-page-html-distillation-with-bm25-37d44999
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_Hr-6dSx6nbPdgCmTkfkSI

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 domain-osint-agentdiet-dev-web-page-html-distillation-with-bm25-37d44999 -d '<json body>'
```

Example prompt: Fetch https://stripe.com/docs/payments and distill it into clean markdown using budget mode focused on the query 'payment intents' with a max of 2000 tokens.

## When to prefer this

Choose this endpoint when an AI agent needs to ingest web page content efficiently within a token budget, especially when feeding external URLs into an LLM context. It is superior to raw fetching because it strips boilerplate, compresses content, and provides ROI proof of tokens saved. The BM25 budget mode is uniquely suited when only the most query-relevant passages of a long page are needed under a strict token ceiling.

## Known failure modes

- URL unreachable or returns non-200 status — fetch failure error
- Invalid or malformed URL string — validation error
- HTML payload too large — may hit processing limits
- BM25 query missing when mode=budget — may return unfiltered or error
- max_tokens below minimum of 20 — schema validation rejection
- Payment not settled via x402 — 402 Payment Required response

## How this service works

Distill a URL or raw HTML payload with BM25 budget control (Live x402 v2, IETF MPP & MCP endpoint at https://domain-osint.agentdiet.dev/v1/markdown-distill)

## Output

Returns a JSON object with a 'data' field containing the distilled content (Markdown, structured JSON, skeleton, or BM25-ranked excerpt depending on mode), an 'roi_proof' object showing raw vs distilled token counts, compression ratio, and estimated LLM cost saved, plus optional 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/domain-osint-agentdiet-dev-web-page-html-distillation-with-bm25-37d44999/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from domain-osint.agentdiet.dev](https://www.zero.xyz/host/domain-osint.agentdiet.dev/llms.txt)
