{"uid":"cap_M1L2R1R-cjVzS3k3p84qR","slug":"agentdiet-dev-agentdiet-spa-markdown-reader-url-html-distiller-with-f033cb11","name":"AgentDiet 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://agentdiet.dev/v1/spa-markdown-reader)","url":"https://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_pO3Rq8UAkZmxDQhj-duTQ","protocol":"mpp","methodType":"crypto","chain":"tempo","mode":"charge","costAmount":"0.001","costPer":"request","priority":0,"asset":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":"agentdiet.dev","brandSlug":"agentdiet-dev-mpp","brandBaseUrl":"https://agentdiet.dev","brandDocsUrl":null,"whatItDoes":"Fetches a URL or accepts raw HTML and distills it into compressed Markdown, structured JSON, skeleton outline, or a BM25-focused excerpt within a strict token budget.","exampleAgentPrompt":"Fetch https://stripe.com/docs/payments and distill it into compressed markdown using budget mode focused on the query 'payment intents', with a max of 2000 tokens, so I can process it without burning through my LLM context.","exampleUseCases":[{"title":"Distill documentation for agent context","prompt":"Fetch https://docs.anthropic.com/claude/reference/getting-started and distill it to markdown — I want a clean, compressed version I can paste into my agent's context without wasting tokens."},{"title":"BM25 topic-focused excerpt from news article","prompt":"Go to https://techcrunch.com/2024/05/01/openai-gpt5-launch/ and extract only the parts most relevant to 'model pricing and availability' using budget mode, staying under 500 tokens."},{"title":"Structure raw HTML into JSON tables","prompt":"I have some raw HTML from a scraped product page — can you distill it in structured mode to pull out any tables and metadata as JSON so I can query it programmatically?"}],"resultDescription":"Returns a JSON object with a `data` field containing the distilled content (Markdown text, structured JSON tables/metadata, skeleton outline, or BM25-focused excerpt depending on mode), plus an `roi_proof` object showing raw vs. distilled token counts, compression ratio percentage, tokens saved, and estimated LLM cost saved in USD. Also includes cache status (HIT/MISS) and billing details.","failureModes":["URL unreachable or returns non-200 status — endpoint may return an error status","JavaScript-heavy SPA fails to render content within timeout — partial or empty distillation","Token budget too low (max_tokens < 20) — rejected with validation error","BM25 query provided without mode=budget — query may be ignored","Invalid or missing `url` field — schema validation error since url is required","Raw HTML too large — may be truncated or rejected","Payment failure via x402 — 402 response if agent lacks sufficient USDC balance"],"whenToPreferThis":"Choose this endpoint when you need to read a webpage (especially JavaScript-rendered SPAs) and want to minimize token consumption before feeding content to an LLM. It is especially valuable when you have a specific topic query (BM25 budget mode) and a strict token ceiling, or when you want structured JSON tables/metadata extracted from HTML. Prefer it over generic web scrapers when LLM cost reduction and compression ratio reporting matter.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-23T06:36:43.704Z","isFirstParty":false,"canonicalSlug":"agentdiet-dev-agentdiet-spa-markdown-reader-url-html-distiller-with-f033cb11"}