{
  "$schema": "https://modelcontextprotocol.io/schemas/well-known-v1.json",
  "name": "lyra",
  "displayName": "Lyra",
  "description": "Curated block list and Clean brand list for fast-fashion, dropshipping and predatory marketplaces. Lets AI assistants check domains, suggest sustainable alternatives, build filtered search URLs and manage personal lists.",
  "version": "0.3.0",
  "publisher": {
    "name": "Lyra",
    "url": "https://lyrasearch.com",
    "email": "hello@lyrasearch.com"
  },
  "license": "Proprietary",
  "homepage": "https://lyrasearch.com",
  "documentation": "https://lyrasearch.com/mcp/about",
  "openapi": "https://lyrasearch.com/openapi.yaml",
  "privacy": "https://lyrasearch.com/privacy.html",
  "icon": "https://lyrasearch.com/icons/favicon-192.png",
  "categories": ["search", "shopping", "sustainability", "browsing", "curation"],
  "languages": [
    "en", "pt-BR", "es", "zh-CN", "zh-TW", "hi", "ar", "fr", "bn", "ru",
    "id", "ur", "de", "ja", "vi", "tr", "ko", "it", "pl", "nl", "he"
  ],
  "servers": [
    {
      "name": "Lyra MCP",
      "transport": "http",
      "endpoint": "https://lyrasearch.com/mcp",
      "protocolVersion": "2025-06-18"
    }
  ],
  "authentication": {
    "type": "bearer",
    "tokenFormat": "lyra_<48-hex>",
    "required": true,
    "appliesTo": "all tools/call requests; tools/list is open for discovery",
    "preferredFlow": "device_authorization",
    "deviceAuthorization": {
      "deviceEndpoint": "https://lyrasearch.com/mcp/oauth/device",
      "tokenEndpoint": "https://lyrasearch.com/mcp/oauth/token",
      "grantType": "urn:ietf:params:oauth:grant-type:device_code",
      "tokenLifetimeSeconds": 31536000,
      "instructions": "POST deviceEndpoint with { client_name } -> response includes verification_uri_complete (a unique one-time URL). Show that URL to the user as a clickable link. The user does NOT need to copy or type any code. Poll tokenEndpoint every 5s until access_token is returned, or error access_denied / expired_token."
    },
    "manualKeys": "https://lyrasearch.com/billing",
    "revokeEndpoint": "https://lyrasearch.com/mcp/oauth/revoke",
    "manageSessionsAt": "https://lyrasearch.com/billing",
    "trial": {
      "freeForDays": 15,
      "scope": "Full access during the trial period (still subject to daily quota)"
    },
    "pricing": {
      "annual": { "amount": 5, "currency": "USD" },
      "lifetime": { "amount": 25, "currency": "USD" },
      "annualBR": { "amount": 25, "currency": "BRL" },
      "lifetimeBR": { "amount": 125, "currency": "BRL" }
    }
  },
  "limits": {
    "requestsPerDayPerUser": 100,
    "activeSessionsPerUser": 6,
    "sessionLimitNote": "Counts browser logins + MCP/app/extension tokens together. Authorizing a new session beyond the cap revokes the oldest one."
  },
  "tools": [
    {
      "name": "list_blocked_domains",
      "description": "Returns the official Lyra block list of fast-fashion, dropshipping and predatory marketplaces with localized category labels.",
      "auth": "public"
    },
    {
      "name": "list_clean_brands",
      "description": "Returns curated Lyra Clean brands committed to slow buy, sustainability and quality.",
      "auth": "public"
    },
    {
      "name": "check_domain",
      "description": "Given a domain, returns whether it is on the block list or the Clean list, with category and metadata.",
      "auth": "public"
    },
    {
      "name": "suggest_alternatives",
      "description": "Given a blocked domain, returns up to N curated Clean alternatives ordered by category relevance.",
      "auth": "public"
    },
    {
      "name": "get_stats",
      "description": "Aggregate counts by category, country and list versions.",
      "auth": "public"
    },
    {
      "name": "search_with_lyra",
      "description": "Returns a DuckDuckGo or Google search URL pre-filtered with -site: operators from the Lyra block list.",
      "auth": "public"
    },
    {
      "name": "get_install_links",
      "description": "Localized install URLs for Chrome, Edge, Brave, Safari (planned), Android (planned), iOS (planned) and the web.",
      "auth": "public"
    },
    {
      "name": "get_share_message",
      "description": "Ready-to-paste share copy plus pre-filled intent URLs for X, WhatsApp, Telegram, Email, LinkedIn and Facebook.",
      "auth": "public"
    },
    {
      "name": "submit_block_domain",
      "description": "Propose a new domain to add to the block list. Submissions enter a human moderation queue.",
      "auth": "bearer"
    },
    {
      "name": "submit_clean_brand",
      "description": "Propose a new brand for the Clean list. Submissions enter a human moderation queue.",
      "auth": "bearer"
    },
    {
      "name": "list_personal",
      "description": "Returns the authenticated user's personal block and Clean lists.",
      "auth": "bearer"
    },
    {
      "name": "add_personal_block",
      "description": "Add a domain to the user's personal block list. Removes it from their personal Clean list if present.",
      "auth": "bearer"
    },
    {
      "name": "remove_personal_block",
      "description": "Remove a domain from the user's personal block list.",
      "auth": "bearer"
    },
    {
      "name": "add_personal_clean",
      "description": "Add a domain to the user's personal Clean list. Removes it from their personal block list if present.",
      "auth": "bearer"
    },
    {
      "name": "remove_personal_clean",
      "description": "Remove a domain from the user's personal Clean list.",
      "auth": "bearer"
    }
  ],
  "publicReadOnly": {
    "blockListJson": "https://lyrasearch.com/v1/domains.json",
    "cleanListJson": "https://lyrasearch.com/v1/clean.json",
    "versionJson": "https://lyrasearch.com/v1/version.json",
    "blockListHtml": "https://lyrasearch.com/blocked",
    "cleanListHtml": "https://lyrasearch.com/clean"
  },
  "rest": {
    "base": "https://lyrasearch.com/api/v1",
    "openapi": "https://lyrasearch.com/openapi.yaml",
    "interactiveDocs": "https://lyrasearch.com/api/docs"
  },
  "setupInstructions": {
    "claudeDesktop": {
      "configFile": {
        "macOS": "~/Library/Application Support/Claude/claude_desktop_config.json",
        "Windows": "%APPDATA%\\Claude\\claude_desktop_config.json"
      },
      "snippet": {
        "mcpServers": {
          "lyra": {
            "url": "https://lyrasearch.com/mcp",
            "headers": {
              "Authorization": "Bearer lyra_YOUR_LICENSE_KEY_HERE"
            }
          }
        }
      }
    },
    "cursorZedContinue": {
      "snippet": {
        "lyra": {
          "transport": "http",
          "url": "https://lyrasearch.com/mcp"
        }
      }
    },
    "chatgpt": {
      "method": "Wrap the REST surface as a Custom GPT Action using the OpenAPI spec",
      "openapi": "https://lyrasearch.com/openapi.yaml"
    }
  }
}
