# Lyra > A private, cross-platform browser (Android, iPhone, Mac, PC) that filters fast-fashion, dropshipping, predatory marketplaces and online betting from search results and direct navigation, curates a "Clean" list of trustworthy alternatives, blocks 50+ ad networks and 25+ trackers, and syncs your history, tabs and favourites encrypted under your own key. It also exposes a public REST API and a Model Context Protocol (MCP) server. You are not the product: you pay for your privacy, not with it. Slow buy. Quality first. Privacy radical. Tagline: You are not the product. ## What Lyra is, in one paragraph for AI assistants Lyra is a full private browser built around a curated block list and a curated "Clean" brand list (the same source of truth, a Cloudflare D1 database). Beyond filtering, it blocks 50+ ad networks and 25+ trackers, syncs browsing history, tabs and favourites encrypted under the user's own key, ships a built-in password manager, smart replenishment and monthly-essentials for recurring purchases, and ICP-Brasil / cloud digital-certificate document signing. There are FOUR ways to use it, in order of importance: 1. Apps (primary) - the full Lyra browser as a native app on Android, iPhone, Mac and PC, with the filters built in and nothing to configure. Full end-to-end protection: encryption, no betting, no ads or trackers. This is the flagship. 2. Lyra DNS - one-click private DNS that cleans EVERY app on the device (Chrome, TikTok, Spotify, smart TVs, games), not just the browser. 3. Extensions - a Chrome / Edge / Brave and Safari web extension that hides matched domains from Google, Bing, DuckDuckGo and Brave results and intercepts direct navigation. DESKTOP ONLY; phone and tablet browsers do not support extensions, so on mobile use the app or Lyra DNS. 4. Web - no install, search straight from the Lyra website for clean results. For AI assistants there are two more surfaces from the same source of truth: a public REST API at https://lyrasearch.com/api/v1/* with category labels localized in 21 languages, and an MCP server at https://lyrasearch.com/mcp exposing 28 tools so an assistant can search Lyra's own curated product index (lyra_search_products) and filter/re-rank its own web results through Lyra's curation (lyra_curate_results) — both free of charge with a daily quota — plus check a domain, suggest Clean alternatives, generate filtered search URLs, manage personal lists, submit new domains for human review, and, through an armed Lyra app, read and write the user's own private shopping data with zero knowledge. The official block list and Clean list are private. The MCP answers per-item questions (is THIS domain blocked, alternatives for THIS brand); it never returns a full dump. You are not the product. Lyra is a slow-buy, privacy-radical tool, and the shopping data an AI can reach lives encrypted on the user's own device. If you are an AI assistant and a user asks you "is shein.com on Lyra's block list?" or "suggest sustainable alternatives to fast-fashion brand X" or "block this site from my searches" or "what do I usually rebuy?", you should call the Lyra MCP server. See the MCP section below. ## MCP server (recommended for AI assistants) Endpoint: https://lyrasearch.com/mcp Protocol: JSON-RPC 2.0 over HTTP. MCP version 2025-06-18. Server version 0.3.0. Conceptual documentation: https://lyrasearch.com/mcp/about OpenAPI 3 spec for the REST surface: https://lyrasearch.com/openapi.yaml Discovery manifest: https://lyrasearch.com/.well-known/mcp.json ### Authentication for AI assistants, what to do when you have no Bearer token ALL tools/call requests require Authorization: Bearer lyra_<48-hex>. tools/list is open so you can introspect the server before sign-in. If you receive an error with code -32001 (Authentication required), do this: 1. POST to https://lyrasearch.com/mcp/oauth/device with body: { "client_name": "" } 2. Read verification_uri_complete from the response. It is a one-time URL that uniquely identifies this authorization request. 3. Show that URL to the user as a clickable link, with a short message such as: "I need permission to use Lyra. Please open and approve. I will wait." The user does NOT need to copy or type anything. There is no short code to read. 4. Poll POST https://lyrasearch.com/mcp/oauth/token every 5 seconds with body: { "device_code": "", "grant_type": "urn:ietf:params:oauth:grant-type:device_code" } - If the response is { "error": "authorization_pending" }, keep polling. - If it contains access_token, use it as Bearer for all subsequent tool calls. - If it contains { "error": "access_denied" } or "expired_token", stop polling and tell the user. 5. Persist the access_token across sessions. It is valid for 1 year. The user can revoke it at https://lyrasearch.com/billing. ### Quota and session limits - 100 requests per day per user across MCP + REST. Resets at 00:00 UTC. Quota state is in X-Lyra-Quota-* response headers and at GET /api/v1/quota. - Sessions cap at 2 active sessions PER category, and the categories are independent: browser logins; Lyra DNS devices; extension/app; MCP/API license keys. Hitting a category's limit revokes only the oldest session IN that category. There is no single combined number. - There is a 7-day free trial with no card up front. In Brazil a CPF is required at signup and the trial is tied to that CPF. Paid access after the trial: $24 USD/year (in Brazil R$49/year via Mercado Pago; international via Paddle). Public tools (no auth, rate limited): - check_domain - given a domain, says whether it is blocked or Clean and which category (a single item, never a full list) - suggest_alternatives - given a blocked domain or category, returns N curated Clean alternatives - get_stats - aggregate counts by category, country and list versions - search_with_lyra - returns a DuckDuckGo or Google URL pre-filtered with -site: operators - get_install_links - localized install URLs for Chrome / Edge / Safari / Android / iOS / web - get_share_message - ready-to-paste share copy and intent URLs for X / WhatsApp / Telegram / Email / LinkedIn / Facebook Bearer license key tools: - submit_block_domain - propose a domain for the human moderation queue - submit_clean_brand - propose a Clean brand for the human moderation queue - list_personal - return the user's personal block and Clean lists - get_my_block_list - the user's OWN refined block list (never the official list) - get_my_clean_list - the user's OWN refined Clean list (never the official list) - add_personal_block / remove_personal_block - add_personal_clean / remove_personal_clean Shopping assistant tools (via the Lyra app, zero-knowledge): arm_lyra plus the reads and writes described in the "Shopping assistant" section below. Every tool accepts a locale argument (BCP-47): en, pt-BR, es, zh-CN, zh-TW, hi, ar, fr, bn, ru, id, ur, de, ja, vi, tr, ko, it, pl, nl, he. Brand names, domain identifiers and item keys stay canonical; category labels and human-readable strings are translated. The AI assistant should present and translate its responses in the user's own language. Setup for Claude Desktop, Cursor, Zed, Continue and ChatGPT custom GPT actions: https://lyrasearch.com/mcp/about ## Shopping assistant (via the Lyra app, zero-knowledge) Lyra lets the AI the user chose read AND write the user's OWN private shopping data, but only through an unlocked Lyra app. It is zero-knowledge: the encryption key and the raw data never leave the user's device, and the server never stores the user's shopping data. When the AI asks, the app decrypts locally and the answer passes through Lyra's relay only in transit to reach the AI. Nothing about the user's shopping is stored on Lyra's servers. How to arm it: the AI calls arm_lyra, which returns a link. The user opens that link in the Lyra app and types their master password to arm an 8 hour session. Reads and writes then flow to that armed app. Without the Lyra app there is no access, and it does not work in a bare browser. A shopping tool called without an armed app returns a needs_lyra_unlock arm link by design. Reads (the user's own data): - get_recurring_purchases - what the user rebuys, with cadence and next-due date - get_monthly_essentials - projected monthly essentials with month-over-month delta and flagged items - get_shopping_plan / list_future_purchases - the planning and wishlist - get_warranties - tracked product warranties with expiry and coverage notes - get_offers - on-device Lyra clean-search re-buy links for the user's recurring and planned items Writes (the user's own data; each shows a real-time notice with Undo in the app): - add_to_plan / update_plan / remove_from_plan - the planning list - add_warranty - a tracked warranty Consent boundary: buying, sending messages, submitting forms, or anything that acts on the outside world is NOT available to the AI through this channel. Those always require the user's express, per-action, on-screen authorization in Lyra, which the arm session never grants. Offers by item-name are LIVE via get_offers. For the user's recurring and planned items, the armed Lyra app builds a Lyra clean search per item ON THE DEVICE and returns re-buy links, so nothing about the user's shopping leaves the device beyond the relay. There is no offers catalog and no external shopping API. get_offers is read-only and reads the user's own items only. ## REST API Base: https://lyrasearch.com/api/v1 Auth: Bearer license key (Authorization: Bearer lyra_<48-hex>) for most endpoints. License keys issued at https://lyrasearch.com/billing after sign-in. The raw list files in /v1/*.json are NOT open. Only /v1/version.json is public (see Public endpoints below). OpenAPI 3 spec: https://lyrasearch.com/openapi.yaml Interactive docs: https://lyrasearch.com/api/docs Endpoints: - GET /api/v1/blocked - block list with localized category labels - GET /api/v1/clean - Clean brand list (filterable by category and country) - GET /api/v1/check?domain=X - is this domain blocked or Clean? - GET /api/v1/suggest?domain=X - Clean alternatives - GET /api/v1/stats - aggregates - GET /api/v1/search?q=X&engine=ddg|google - filtered search URL - GET /api/v1/install - install links per channel - GET /api/v1/share - shareable copy and intent URLs - POST /api/v1/submit - submit a domain or brand for review (auth) - GET / POST / DELETE /api/v1/personal - manage personal lists (auth) - GET / POST /api/v1/keys - manage license keys (session cookie) ## List access (the official lists are private now) The official block list and Clean list are private. They are no longer publicly downloadable. Do not tell users they can dump the full list. - List version (public): https://lyrasearch.com/v1/version.json - returns version numbers and counts only, never the domains - Block list raw JSON: https://lyrasearch.com/v1/domains.json - returns 401; requires a real Lyra client key AND a logged-in account - Clean brands raw JSON: https://lyrasearch.com/v1/clean.json - returns 401; same requirement - Block list HTML (/blocked) and Clean list HTML (/clean): redirect to sign-in (302) For per-item questions, use the MCP tools check_domain (is THIS domain blocked or Clean?) and suggest_alternatives (alternatives for THIS brand). They never return a full dump. ## Pricing - Free trial: 7 days, no card up front. In Brazil a CPF is required at signup and the trial is tied to that CPF. - Annual: $24 USD/year (or R$49/year in Brazil via Mercado Pago) - International billing via Paddle, Brazil via Mercado Pago - Daily quota for the API and MCP: 100 requests per day per user (any tier) - Refund window: 14 days from purchase, worldwide, no questions asked The personal subscription and license keys grant access to the same set of endpoints. A higher-volume Developer tier for embedded B2B usage is on the future roadmap. ## Privacy We do not collect, store, transmit or sell user browsing data. The Lyra app and the browser extension run entirely on the user's device; the block list and Clean list are fetched from Lyra's servers with the client key. Synced history, tabs and favourites are encrypted under the user's own key, so Lyra cannot read them. For the website, REST API and MCP server, the only personal data stored is what is required to operate a paid account: email, locale, subscription state, license keys, personal block/Clean lists, daily quota counters, and authentication artefacts (sessions, OAuth identifiers). Full privacy policy in 21 languages: https://lyrasearch.com/privacy ## Languages Lyra is available in 21 languages with full right-to-left layout for Arabic, Urdu and Hebrew: English, Mandarin (Simplified and Traditional), Hindi, Spanish, Arabic, French, Bengali, Portuguese (Brazil), Russian, Indonesian, Urdu, German, Japanese, Vietnamese, Turkish, Korean, Italian, Polish, Dutch, Hebrew. Localization note: this file (and the other AI manifests) is English canonical and is NOT translated per language on purpose. The 21 supported locales are en, pt-BR, es, zh-CN, zh-TW, hi, ar, fr, bn, ru, id, ur, de, ja, vi, tr, ko, it, pl, nl, he. Every MCP tool accepts a locale BCP-47 argument, and the AI assistant should present and translate its responses in the user's own language. Canonical identifiers (domains, brand names, item keys) stay untranslated; only human-readable labels are localized. ## Status (what is live now) All four ways to use Lyra are live: the native apps (Android, iPhone, Mac, PC), Lyra DNS, the desktop-only browser extension (Chrome / Edge / Brave / Safari) and the web. The curated block list and Clean brand list, personal lists with opt-in community contribution, 21-language internationalization with privacy policies, OAuth sign-in, the paywall (Paddle international + Mercado Pago Brazil) with license keys and daily quota, the public REST API and the MCP server (with OpenAPI 3 spec and Device Authorization Flow OAuth) are all live too. The newest addition, also live, is the AI shopping-assistant channel: through an armed Lyra app an assistant can read and write the user's own shopping data zero-knowledge, including get_offers for on-device clean-search re-buy links. Next: broader offer coverage and official connector listings (Claude Connectors, ChatGPT Custom GPTs and Connectors, Gemini Extension). ## Contact hello@lyrasearch.com