# SPA Markdown Reader — URL/HTML Distiller with BM25 Budget Control

> SPA Markdown Reader — URL/HTML 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-23).

Fetches a URL or accepts raw HTML and distills it into Markdown, structured JSON, a skeleton outline, or a BM25-focused token-budgeted excerpt

## Facts

- Endpoint: POST https://serp-extract.agentdiet.dev/v1/spa-markdown-reader?utm_source=zero.xyz
- Price: $0.001/call
- Payment: MPP
- Status: unknown
- Last checked: 2026-10-23
- 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-spa-markdown-reader-url-html-distiller-e3a672fb
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_BeaXxhctXHmDerBCDBsqp

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-spa-markdown-reader-url-html-distiller-e3a672fb -d '<json body>'
```

Example prompt: Fetch https://stripe.com/docs/payments and distill it into clean markdown using budget mode focused on 'payment intents', keeping it under 2000 tokens so it fits in my LLM context window.

## When to prefer this

Choose this endpoint when you need to feed web content into an LLM and want to minimize token cost through intelligent compression. It is especially valuable when dealing with large documentation pages, SPAs, or HTML-heavy sites where raw content would exceed context limits. The BM25 budget mode makes it uniquely suited for query-focused extraction within a strict token ceiling — a capability generic scrapers lack. Prefer it over raw HTTP fetching whenever token efficiency and structured output matter.

## Known failure modes

- Invalid or unreachable URL returns a fetch error with status != 'ok'
- mode=budget without a 'query' field may return unfiltered or error response
- max_tokens set below minimum of 20 causes schema validation failure
- SPA pages with heavy JavaScript that cannot be rendered may return incomplete or empty content
- Rate limiting or payment failure via x402 returns HTTP 402 Payment Required
- Malformed raw HTML may produce poor distillation quality with low compression ratio

## How this service works

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

## Output

Returns a JSON object with a 'data' field containing the distilled content (Markdown text, structured JSON tables/metadata, a skeleton outline, or a BM25-ranked token-budgeted excerpt depending on mode), plus an 'roi_proof' object showing raw token count, distilled token count, tokens saved, compression ratio percentage, ROI multiplier, and estimated LLM cost saved in USD. Also includes optional cache hit/miss 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/serp-extract-agentdiet-dev-spa-markdown-reader-url-html-distiller-e3a672fb/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)
