# Lyrenth Lyrenth is AIDocument infrastructure for the AI-readable web. We resolve public URLs into stable AIDocuments: clean markdown, source trace, cache truth, page structure, and token economics in one JSON contract. Built for agents. Origin-friendly by default. This is /llms-full.txt: the long-form companion to /llms.txt. If you're an AI agent reading this, the goal is to give you everything in one fetch so you can decide whether Lyrenth solves your problem without crawling further. ## What it is Lyrenth is AIDocument infrastructure for the AI-readable web. It is a REST API that resolves any public URL into a stable AIDocument: clean markdown body, source trace (fetched_at, render_mode, status_code), cache truth (hit / miss / refreshed / stale_revalidated), page structure (headings, links, images, media, JSON-LD), and per-call token economics. The envelope is the same regardless of how the source page was rendered (static HTML, React SPA, JS-hydrated content), and no website owner has to change anything for their pages to become AI-readable through Lyrenth. The wedge: agents that read web pages today either pay to clean raw HTML themselves (expensive, slow, hallucination-prone), or call a search API that returns noisy results. Lyrenth resolves each URL once into a canonical AIDocument and caches the same envelope for every agent after that. The architecture lets us offer competitive per-call pricing while protecting origin sites from read amplification: many agents asking for the same URL within the cache window result in one upstream fetch. Per-call savings vs raw HTML to a frontier LLM run 60-90%. ## API Base URL: https://api.lyrenth.com/v1 Auth: Bearer token. Free tier is 2,000 successful API calls / month, no credit card. Sign up at https://www.lyrenth.com/signup. ``` GET /healthz public, not logged GET /aidocument.schema.json public, not logged v2 JSON Schema (draft-07) GET /v1/stats public, logged POST /v1/aidocument body {"url":"..."} Bearer, logged resolve URL -> v2 envelope GET /v1/read?url=... Bearer, logged GET form of /v1/aidocument -> clean Markdown GET /v1/document?url=... Bearer, logged index lookup only, 404 on miss POST /v1/submit body {"url":"..."} Bearer, logged 202 + background indexing # Per-user site management GET /v1/sites Bearer list of caller's verified domains POST /v1/sites/{domain}/verify Bearer issue / re-issue verification token POST /v1/sites/{domain}/check Bearer run DNS + HTML probe; 15s cooldown DELETE /v1/sites/{domain} Bearer drop the ownership record # Self-service analytics GET /v1/admin/stats?domain=...&days=N Bearer per-domain analytics GET /v1/admin/usage?api_key_id=...&days=N Bearer per-key usage GET /v1/admin/savings?api_key_id=...&days=N Bearer per-key savings ($, tokens) ``` ### The canonical AIDocument shape The v2 grouped envelope served by POST /v1/aidocument. Machine-readable JSON Schema (draft-07) lives at https://api.lyrenth.com/aidocument.schema.json; that schema is the source of truth for field names, required fields, and enum values (cache.status, source.freshness_policy, source.render_mode). The narrative example below is the same shape humans can read. ```jsonc { "schema": { "name": "AIDocument", "version": "2.0", "ref": "aidoc:sha256:7a14e9b2d8f3c901b42e5a77c0f19a34" }, "source": { "url": "https://...", "canonical_url": "https://...", "fetched_at": "...", "render_mode": "static" | "rendered" | "static_after_render_failure", "status_code": 200, "freshness_policy": "cache_first" | "force_refresh" }, "cache": { "status": "hit" | "miss" | "refreshed" | "stale_revalidated", "origin_contacted": false, "body_fetched": false }, "identity": { "title": "...", "description": "...", "language": "en", "content_type": "article" }, "content": { "markdown": "..." // the body, cleaned }, "structure": { "headings": [{"level": 1, "text": "..."}], "links": [{"url": "...", "text": "...", "internal": true}], "images": [{"url": "...", "alt": "..."}], "media": [{"url": "...", "kind": "video", "mime": "video/mp4", "poster": "..."}], "structured_data": { /* parsed JSON-LD blocks, merged into one object */ } }, "signals": { "word_count": 1552, "reading_time": 7, "has_json_ld": true, "heading_hierarchy_ok": true }, "economics": { "raw_html_tokens_approx": 12500, "output_tokens_approx": 1850, "token_savings": 10650, "token_savings_percent": 0.85, "estimated_cost_usd": { "raw_html": 0.0375, "our_output": 0.0056, "savings": 0.0319 }, "pricing_basis": { "input_price_per_1k_usd": 0.003, "model_class": "frontier-1m-context" } } } ``` Media entries are references only: native