{"uid":"cap_BeaXxhctXHmDerBCDBsqp","slug":"serp-extract-agentdiet-dev-spa-markdown-reader-url-html-distiller-e3a672fb","name":"SPA Markdown Reader — URL/HTML Distiller with BM25 Budget Control","description":"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)","url":"https://serp-extract.agentdiet.dev/v1/spa-markdown-reader?utm_source=zero.xyz","method":"POST","headers":{},"bodySchema":{"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"}}},"responseSchema":{"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"}}}}},"example":null,"exampleRequest":null,"tags":[],"displayCostAmount":"0.001","displayCostAsset":"USD","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.001/call","primary":{"kind":"static","protocol":"mpp","network":"tempo","amountUsd":"0.001","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"mpp","network":"tempo","amountUsd":"0.001","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_0RHDzLQGvWmOiZhDNV1eT","protocol":"mpp","methodType":"crypto","chain":"tempo","mode":"charge","costAmount":"0.001","costPer":"request","priority":0,"asset":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":"serp-extract.agentdiet.dev","brandSlug":"serp-extract-agentdiet-dev-mpp","brandBaseUrl":"https://serp-extract.agentdiet.dev","brandDocsUrl":null,"whatItDoes":"Fetches a URL or accepts raw HTML and distills it into Markdown, structured JSON, a skeleton outline, or a BM25-focused token-budgeted excerpt","exampleAgentPrompt":"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.","exampleUseCases":[{"title":"Token-efficient docs ingestion for agent","prompt":"Pull in https://docs.openai.com/api-reference and distill it into budget mode with the query 'function calling' and a max of 1500 tokens — I need just the relevant parts without blowing my context window."},{"title":"Structured data extraction from a product page","prompt":"Take this URL https://example-shop.com/product/123 and distill it in structured mode so I get the tables, prices, and metadata as clean JSON I can parse."},{"title":"Skeleton outline for large article navigation","prompt":"Fetch https://en.wikipedia.org/wiki/Large_language_model and give me a skeleton outline so I can see the section structure before deciding which parts to read in full."}],"resultDescription":"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.","failureModes":["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"],"whenToPreferThis":"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.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-23T06:35:56.637Z","isFirstParty":false,"canonicalSlug":"serp-extract-agentdiet-dev-spa-markdown-reader-url-html-distiller-e3a672fb"}