{
  "markdown": "# Lyrenth MCP server\n\n[![lyrenth-mcp MCP server](https://glama.ai/mcp/servers/lyrenth/lyrenth-mcp/badges/card.svg)](https://glama.ai/mcp/servers/lyrenth/lyrenth-mcp)\n\n[![Listed on mcpservers.org](https://mcpservers.org/badge.svg)](https://mcpservers.org/servers/lyrenth/lyrenth-mcp)\n\n[![M8ven Live Monitored](https://m8ven.ai/badge/mcp/lyrenth-lyrenth-mcp-0x2ngd?variant=verified)](https://m8ven.ai/mcp/lyrenth-lyrenth-mcp-0x2ngd)\n\nRead the web through [Lyrenth](https://lyrenth.com)'s index from any MCP client.\n\nExposes three tools:\n\n- **`read_url`** turns a public web page into a clean **AIDocument**: stable\n  Markdown plus title, description, and structure, with the navigation and\n  boilerplate stripped. Your agent reads cleaned, low-token content instead of\n  raw HTML, and every result shows how many tokens it saved vs the raw page.\n- **`read_urls`** does the same for up to 20 URLs in one batch call.\n- **`check_usage`** reports your plan tier and credit usage.\n\nReads resolve through Lyrenth's cross-caller cache, and for verified domains\nthey return the publisher's canonical version.\n\nEvery tool declares all four MCP tool annotations (read-only,\nnon-destructive, idempotent, and open or closed world) as explicit\nbooleans, and the HTTP transport ships with a 14-test suite covering\nits security posture.\n\n## Hosted, no install\n\nIf your MCP client supports remote HTTP servers with a custom header\n(Claude and Cursor remote connectors do), there is nothing to run:\n\n- URL: `https://api.lyrenth.com/mcp`\n- Header: `Authorization: Bearer aiwk_your_key_here`\n\nSame three tools, same key. The npx path below is for clients that\nspeak MCP over stdio, and for anyone who prefers a local process.\n\n## Setup\n\n1. Get a free API key at <https://lyrenth.com/signup> (2,000 reads/month, no card).\n2. Add the server to your MCP client.\n\n### Claude Desktop (one click)\n\nDownload `lyrenth-mcp.mcpb` from the\n[latest release](https://github.com/lyrenth/lyrenth-mcp/releases/latest) and\nopen it. Claude Desktop installs the server and asks for your API key; there is\nno config file to edit. The bundle carries the same code as the npm package.\n\nTo build it yourself: `./scripts/build-mcpb.sh`.\n\n### Claude Desktop / Cursor (manual config)\n\nAdd to your MCP config (Claude Desktop: `claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"lyrenth\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"lyrenth-mcp\"],\n      \"env\": { \"LYRENTH_API_KEY\": \"aiwk_your_key_here\" }\n    }\n  }\n}\n```\n\n### Claude Code\n\n```sh\nclaude mcp add lyrenth -e LYRENTH_API_KEY=aiwk_your_key_here -- npx -y lyrenth-mcp\n```\n\nThen ask your assistant to read a page, for example: *\"Read\nhttps://example.com/article and summarize it.\"* It will call `read_url` and get\nthe cleaned AIDocument back.\n\n## Tools\n\n| Tool | Arguments | Returns |\n|------|-----------|---------|\n| `read_url` | `url` (string, required), `fresh` (boolean, optional), `max_tokens` (integer, optional) | The page as a clean AIDocument: a short provenance header (token count + how much smaller than raw HTML) plus the Markdown body. `fresh: true` forces a fresh fetch instead of the cached copy; `max_tokens` caps the body to your context budget, trimmed at a clean paragraph or sentence boundary. |\n| `read_urls` | `urls` (array of 1-20 strings, required), `fresh` (boolean, optional), `max_tokens` (integer, optional) | Up to 20 pages in one call, each as a clean AIDocument, with per-URL error isolation (a failed URL is reported and doesn't block the others). Billed one credit per successfully-read URL. |\n| `check_usage` | none | Your plan tier, credits used against your monthly limit, credits remaining, and the reset date. |\n\n## Configuration\n\n| Env var | Required | Default | Notes |\n|---------|----------|---------|-------|\n| `LYRENTH_API_KEY` | yes | none | Free key at <https://lyrenth.com/signup> |\n| `LYRENTH_API_URL` | no | `https://api.lyrenth.com` | Override for staging or self-host |\n\n## Why read through Lyrenth\n\n- **Cleaner, cheaper.** One stable AIDocument shape per URL; far fewer tokens\n  than raw HTML to a model.\n- **Cached across callers.** The same URL fetched by many agents collapses to a\n  minimal number of origin fetches, so it is fast and origin-friendly.\n- **Canonical when verified.** When a site's owner has verified with Lyrenth,\n  you get the version they authored, kept fresh by their change signal.\n\n## Privacy\n\nThe server sends exactly two things to Lyrenth's API (api.lyrenth.com): the\nURLs you ask it to read, and your API key to authenticate and meter the call.\nNothing else leaves your machine: no page content you hold locally, no\nconversation context, no telemetry. How Lyrenth handles fetched pages and\naccount data is covered by the privacy policy:\n<https://www.lyrenth.com/privacy>.\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n\n## Local build\n\n```sh\nnpm install\nnpm run build\nLYRENTH_API_KEY=aiwk_... node dist/index.js   # speaks MCP over stdio\n```\n\nPart of the [Lyrenth](https://lyrenth.com) project. The AIDocument format is an\nopen contract; see <https://lyrenth.com/llms-full.txt>.\n",
  "bytes": 5081,
  "sha": "c75b696440f8c080150869dfdabb0d8104098681c3a5b2ebe99f7699a7917800",
  "repo_slug": "lyrenth/lyrenth-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_com_lyrenth_lyrenth_mcp_5d228a28/readme"
}