protogrid

Search / com.lyreleads/lyre-leads

Lyre Leads

R0· no sign-in

Every business of a kind in a city, from Google Maps, read from its website, with verified emails.

v1.1.0 · active · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality89new
Trust83of 100
Uptime, 30 days100%
Latency p50307 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "lyre-leads": {
      "type": "http",
      "url": "https://lyreleads.com/mcp"
    }
  }
}
claude mcp add --transport http lyre-leads https://lyreleads.com/mcp
[mcp_servers.lyre-leads]
url = "https://lyreleads.com/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "lyre-leads": {
      "type": "remote",
      "url": "https://lyreleads.com/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "lyre-leads": {
      "type": "http",
      "url": "https://lyreleads.com/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=lyre-leads&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vbHlyZWxlYWRzLmNvbS9tY3AifQ%3D%3D"
}
{
  "servers": {
    "lyre-leads": {
      "type": "http",
      "url": "https://lyreleads.com/mcp"
    }
  }
}
{
  "mcpServers": {
    "lyre-leads": {
      "httpUrl": "https://lyreleads.com/mcp"
    }
  }
}
extensions:
  "lyre-leads":
    enabled: true
    name: "lyre-leads"
    type: streamable_http
    uri: "https://lyreleads.com/mcp"
    timeout: 300

Quality 89 / 100new

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene100 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations15 of 15 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 4,675 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stabilityn/a · weight 15
  • n/a
    stability.changes, stability.rug_pulltool history recorded for 6 of the 7 days needed
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

15 tools, about 4,675 tokens to load them all · tool set 5fedddbfa5c1 · tools last changed 2026-10-18 · checked 2026-10-20 20:14 UTC

Tool changes

  • find_contactschangeddescription
    before

    For leads with a website but no named contact, search the open web for the people the business names (owner, founder, director), then resolve and verify their email; verification is part of the run and included. Costs 2 tokens per named contact found, and nothing for a business where nobody is found; the run reserves 2 tokens per business up front and settles on what it delivered, so the most a run can cost is 2 tokens per lead id sent. Separate from enrichment, which already lists the people a business's own site names, with a verified email where one exists, at no extra charge. This is what reaches local business owners who are not in any LinkedIn-derived contact database. Returns a job id, poll with get_job_status. Outcomes per lead: verified (SMTP-confirmed), published (the address is printed on the company's own site but the domain is catch-all so SMTP cannot confirm it), catch_all (person named, no address obtainable), or searched (no name found).

    after · 95% of words in common

    For leads with a website but no named contact, search the open web for the people the business names (owner, founder, director), then resolve and verify their email in the same run. Costs 2 tokens per person found, verification included; the run reserves 2 tokens per business up front and settles on what it delivered, so the most a run can cost is 2 tokens per lead id sent. Separate from enrichment, which already lists the people a business's own site names, with a verified email where one exists, at no extra charge. This is what reaches local business owners who are not in any LinkedIn-derived contact database. Returns a job id, poll with get_job_status. Outcomes per lead: verified (SMTP-confirmed), published (the address is printed on the company's own site but the domain is catch-all so SMTP cannot confirm it), catch_all (person named, no address obtainable), or searched (no name found).

  • estimate_listchangedinput schema
  • find_contactschangeddescription
    before

    For leads with a website but no named contact, search the open web for the people the business names (owner, founder, director), then resolve and verify their email. Costs 2 leads per named contact found, and nothing for a business where nobody is found; the run reserves 2 per business up front and settles on what it delivered, so the most a run can cost is 2 leads per lead id sent. Separate from enrichment, which already lists the people a business's own site names, with a verified email where one exists, at no extra charge. This is what reaches local business owners who are not in any LinkedIn-derived contact database. Returns a job id, poll with get_job_status. Outcomes per lead: verified (SMTP-confirmed), published (the address is printed on the company's own site but the domain is catch-all so SMTP cannot confirm it), catch_all (person named, no address obtainable), or searched (no name found).

    after · 95% of words in common

    For leads with a website but no named contact, search the open web for the people the business names (owner, founder, director), then resolve and verify their email; verification is part of the run and included. Costs 2 tokens per named contact found, and nothing for a business where nobody is found; the run reserves 2 tokens per business up front and settles on what it delivered, so the most a run can cost is 2 tokens per lead id sent. Separate from enrichment, which already lists the people a business's own site names, with a verified email where one exists, at no extra charge. This is what reaches local business owners who are not in any LinkedIn-derived contact database. Returns a job id, poll with get_job_status. Outcomes per lead: verified (SMTP-confirmed), published (the address is printed on the company's own site but the domain is catch-all so SMTP cannot confirm it), catch_all (person named, no address obtainable), or searched (no name found).

  • enroll_leadschangeddescription
    before

    Enroll leads in enrichment so they stay current: each lead is enriched now and re-checked about once a month for as long as the user keeps it, with change signals when something moves. Costs one lead per two businesses, paid once. Businesses a search found are already enrolled for free; already-enrolled leads and leads without a website are skipped at no cost. Use it for the imported or chosen leads the user cares about most. Runs in the background and returns a job id: poll get_job_status with kind "enrich".

    after · 99% of words in common

    Enroll leads in enrichment so they stay current: each lead is enriched now and re-checked about once a month for as long as the user keeps it, with change signals when something moves. Costs one token per two businesses, paid once. Businesses a search found are already enrolled for free; already-enrolled leads and leads without a website are skipped at no cost. Use it for the imported or chosen leads the user cares about most. Runs in the background and returns a job id: poll get_job_status with kind "enrich".

  • enrich_leadschangeddescription
    before

    Fetch each lead's website and extract 50+ fields: business email, social profiles, CMS, CRM, email-marketing platform, chat widget, booking system, ad pixels, analytics, schema, SSL, page load, domain age, mail host, and AI-crawler policy. Costs one lead per five businesses, on any business you hold, and does not enroll it. Every address it finds is verified at no extra charge. To keep businesses current, use enroll_leads instead. Runs in the background, returns a job id, poll it with get_job_status. Every field follows the three-state contract: a value, a confirmed absence, or unknown.

    after · 99% of words in common

    Fetch each lead's website and extract 50+ fields: business email, social profiles, CMS, CRM, email-marketing platform, chat widget, booking system, ad pixels, analytics, schema, SSL, page load, domain age, mail host, and AI-crawler policy. Costs one token per five businesses, on any business you hold, and does not enroll it. Every address it finds is verified at no extra charge. To keep businesses current, use enroll_leads instead. Runs in the background, returns a job id, poll it with get_job_status. Every field follows the three-state contract: a value, a confirmed absence, or unknown.

  • count_saved_leadschangedinput schema
  • estimate_listchangeddescription, input schema
    before

    FREE, no account needed. Answers "what would it cost to find me N businesses, and what data comes with each one". Returns an exact cost in leads broken down by stage (search, enrichment, contact discovery), and when the user's account is connected its balance and the maximum businesses affordable right now, and the full list of data points each lead arrives with. THIS is the tool to use when a user asks what Lyre Leads can get them. Do NOT use count_saved_leads for that question: Lyre Leads generates leads on demand from a live Google Maps search and does not sell access to a stored pile of them, so a count of what an account already holds is not a measure of what is available.

    after · 96% of words in common

    FREE, no account needed. Answers "what would it cost to find me N businesses, and what data comes with each one". Returns an exact cost in tokens broken down by stage (search, enrichment, contact discovery; one new lead costs one token), and when the user's account is connected its balance and the maximum businesses affordable right now, and the full list of data points each lead arrives with. THIS is the tool to use when a user asks what Lyre Leads can get them. Do NOT use count_saved_leads for that question: Lyre Leads generates leads on demand from a live Google Maps search and does not sell access to a stored pile of them, so a count of what an account already holds is not a measure of what is available.

  • get_balancechangedtitle, description, annotations
    before

    Get the account lead balance and tier. The unit is a lead: 1 lead = 1 new business found by a search, with enrichment, relevance check, verified address and the monthly re-check included. Businesses you already hold: enrichment is five per lead, enrolling in the monthly re-check is two per lead. Named contacts found on the open web cost 2 leads each, charged only when a person is found. Email verification is included at no charge. Unused leads roll over, up to three months' allowance. Plans are bought and changed on the Lyre Leads website, not through these tools; the result carries the link.

    after · 77% of words in common

    Get the account's token balance and plan. Plans are sold in leads and every price is in tokens: one new lead (a business found by a search, with enrichment, relevance check, verified address and the monthly re-check included) costs one token. Businesses the account already holds: enrichment is one token per five, enrolling in the monthly re-check one token per two. A named contact found on the open web costs 2 tokens, charged only when a person is found. Email verification is included at no charge. Unused tokens roll over, up to three months' allowance. Plans are bought and changed on the Lyre Leads website, not through these tools; the result carries the link.

  • search_leadschangeddescription
    before

    Search ONE city on the user's account and get the businesses back in the same call: 1 to 5 result pages from the city centre, about 20 per page. Use it when the user asks for a quick search, a page of results or one town; for a whole city or several, use search_areas, which finds several times more. Costs 1 lead per NEW business; ones the account already holds are free. Every new business is then enriched from its own website in the background, about two minutes for 20: business email with its verification state, a named contact where the site names one, the software it runs, and a check that it really is the kind of business searched for. Returns the Maps listing and a search_id. Then call list_results with that search_id and wait_seconds 40, and show the user what enrichment found, not only the listing.

    after · 99% of words in common

    Search ONE city on the user's account and get the businesses back in the same call: 1 to 5 result pages from the city centre, about 20 per page. Use it when the user asks for a quick search, a page of results or one town; for a whole city or several, use search_areas, which finds several times more. Costs 1 token per NEW business (one new lead costs one token); ones the account already holds are free. Every new business is then enriched from its own website in the background, about two minutes for 20: business email with its verification state, a named contact where the site names one, the software it runs, and a check that it really is the kind of business searched for. Returns the Maps listing and a search_id. Then call list_results with that search_id and wait_seconds 40, and show the user what enrichment found, not only the listing.

  • search_areaschangeddescription
    before

    The search to use for coverage. Sweeps each area with a grid of map points live against Google Maps, as a background job, the same search the Lyre Leads Search page runs. In Houston this found 1,061 roofing contractors where paging from one centre found 255. Costs 1 lead per NEW business; listings the account already holds cost nothing (a small per-page minimum applies). Every new business is enriched, relevance-checked, its address verified, and enrolled in the monthly re-check automatically. Returns job_id: poll get_job_status with kind "search" until finished is true, then read the leads with get_search_results. If an area name fits more than one place, the call returns the candidates with ids and starts nothing: ask the user which one they mean and resend with that id. At most two searches run at once per account.

    after · 99% of words in common

    The search to use for coverage. Sweeps each area with a grid of map points live against Google Maps, as a background job, the same search the Lyre Leads Search page runs. In Houston this found 1,061 roofing contractors where paging from one centre found 255. Costs 1 token per NEW business (one new lead costs one token); listings the account already holds cost nothing (a small per-page minimum applies). Every new business is enriched, relevance-checked, its address verified, and enrolled in the monthly re-check automatically. Returns job_id: poll get_job_status with kind "search" until finished is true, then read the leads with get_search_results. If an area name fits more than one place, the call returns the candidates with ids and starts nothing: ask the user which one they mean and resend with that id. At most two searches run at once per account.

Showing the latest 10. Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 83 / 100

no-repository
provenance55
liveness100
freshness100
hygiene80

+dns-namespace +website +reachable +uptime-100% +updated-6d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://lyreleads.com/mcp streamable-httpnoneyes100%307 ms2025-11-252026-10-20

Tools (15)

count_saved_leadsread-onlyFREE and exact. Counts leads THIS ACCOUNT has already searched and saved, matching any combination of filters, with a breakdown of how many are enriched, have an email, have a contact email, or have been relevance-checked. Use it to size a job over data the account already owns before spending: "how many of my saved roofers have no CRM and a verified email". CRITICAL: this is NOT an inventory of what Lyre Leads can find, and a small result here means the account has not searched much yet, nothing more. Never report this number to a user as the amount of data available, and never use it to answer "how many X do you have" — call estimate_list for that.
enrich_leadsdestructiveFetch each lead's website and extract 50+ fields: business email, social profiles, CMS, CRM, email-marketing platform, chat widget, booking system, ad pixels, analytics, schema, SSL, page load, domain age, mail host, and AI-crawler policy. Costs one token per five businesses, on any business you hold, and does not enroll it. Every address it finds is verified at no extra charge. To keep businesses current, use enroll_leads instead. Runs in the background, returns a job id, poll it with get_job_status. Every field follows the three-state contract: a value, a confirmed absence, or unknown.
enroll_leadsdestructiveEnroll leads in enrichment so they stay current: each lead is enriched now and re-checked about once a month for as long as the user keeps it, with change signals when something moves. Costs one token per two businesses, paid once. Businesses a search found are already enrolled for free; already-enrolled leads and leads without a website are skipped at no cost. Use it for the imported or chosen leads the user cares about most. Runs in the background and returns a job id: poll get_job_status with kind "enrich".
estimate_area_searchread-onlyFREE, no account needed. Size a search_areas run before starting it: how many grid points, and, when the user's account is connected, how many areas it already covers for the query (those are skipped). It cannot give an exact cost, because billing is 1 token per NEW business found (one new lead costs one token) and nobody knows how many exist before looking.
estimate_listread-onlyFREE, no account needed. Answers "what would it cost to find me N businesses, and what data comes with each one". Returns an exact cost in tokens broken down by stage (search, enrichment, contact discovery; one new lead costs one token), and when the user's account is connected its balance and the maximum businesses affordable right now, and the full list of data points each lead arrives with. THIS is the tool to use when a user asks what Lyre Leads can get them. Do NOT use count_saved_leads for that question: Lyre Leads generates leads on demand from a live Google Maps search and does not sell access to a stored pile of them, so a count of what an account already holds is not a measure of what is available.
find_areasread-onlyFREE, no account needed. Look up the areas search_areas accepts in a country, most populous first, each with an id. Call without q to browse; call with no country to get the list of countries. When a place name is shared (the US list has four Houstons and thirteen Springfields), pass the id of the one the user means to search_areas.
find_contactsdestructiveFor leads with a website but no named contact, search the open web for the people the business names (owner, founder, director), then resolve and verify their email in the same run. Costs 2 tokens per person found, verification included; the run reserves 2 tokens per business up front and settles on what it delivered, so the most a run can cost is 2 tokens per lead id sent. Separate from enrichment, which already lists the people a business's own site names, with a verified email where one exists, at no extra charge. This is what reaches local business owners who are not in any LinkedIn-derived contact database. Returns a job id, poll with get_job_status. Outcomes per lead: verified (SMTP-confirmed), published (the address is printed on the company's own site but the domain is catch-all so SMTP cannot confirm it), catch_all (person named, no address obtainable), or searched (no name found).
get_balanceread-onlyGet the account's token balance and plan. Plans are sold in leads and every price is in tokens: one new lead (a business found by a search, with enrichment, relevance check, verified address and the monthly re-check included) costs one token. Businesses the account already holds: enrichment is one token per five, enrolling in the monthly re-check one token per two. A named contact found on the open web costs 2 tokens, charged only when a person is found. Email verification is included at no charge. Unused tokens roll over, up to three months' allowance. Plans are bought and changed on the Lyre Leads website, not through these tools; the result carries the link.
get_job_statusread-onlyPoll a background job started by search_areas, enrich_leads, enroll_leads (kind "enrich"), find_contacts or verify_emails. Pass the job id and its kind. Long jobs are normal: a grid search works through many map points, and enrichment fetches every website in the batch.
get_search_resultsread-onlyFREE. Read the leads a search_areas job found, up to 500 per page. Accepts the same filters as the Lyre Leads database, passed as filters, e.g. {"relevanceYes": true, "hasVerifiedEmail": true, "noFBPixel": true}. Each lead comes back compact by default: contact details, business email and its verification state, named contact, relevance verdict with its evidence, software and signals, plus a summary and next steps; detail "full" returns every database field. Enrichment keeps landing for a while after the search finishes, so re-read if leads are still enriching.
list_resultsread-onlyFREE. Read saved leads with what enrichment found: business email and its verification state, named contact (name, title, email and its state), the relevance verdict with the sentence from the business's own site, software (CMS, CRM, booking, chat, email marketing), technologies and signals. Pass the search_id from search_leads to read that search; wait_seconds (up to 45) first waits for enrichment still running on it. Returns a compact view with a summary and next steps; detail "full" returns every field.
preview_searchread-onlyFREE sample, no account: the first page (up to 20) of ONE Google Maps search for a kind of business in a place, with phones partly hidden. Nothing is saved or enriched, and it returns no emails, contacts or software. Use it only when the user asks for a preview or a sample, or has no account connected and wants to see what comes back. When the user asks to search, find, pull or list businesses, use search_leads (one city, answered at once) or search_areas (whole cities) instead, even for a single page: they save the businesses to the user's account and enrich them, and calling one starts sign-in if the account isn't connected yet. Places look like "Houston, TX", "Copenhagen" or "Lyon, France"; a shared name picks the largest and lists the others.
search_areasdestructiveThe search to use for coverage. Sweeps each area with a grid of map points live against Google Maps, as a background job, the same search the Lyre Leads Search page runs. In Houston this found 1,061 roofing contractors where paging from one centre found 255. Costs 1 token per NEW business (one new lead costs one token); listings the account already holds cost nothing (a small per-page minimum applies). Every new business is enriched, relevance-checked, its address verified, and enrolled in the monthly re-check automatically. Returns job_id: poll get_job_status with kind "search" until finished is true, then read the leads with get_search_results. If an area name fits more than one place, the call returns the candidates with ids and starts nothing: ask the user which one they mean and resend with that id. At most two searches run at once per account.
search_leadsdestructiveSearch ONE city on the user's account and get the businesses back in the same call: 1 to 5 result pages from the city centre, about 20 per page. Use it when the user asks for a quick search, a page of results or one town; for a whole city or several, use search_areas, which finds several times more. Costs 1 token per NEW business (one new lead costs one token); ones the account already holds are free. Every new business is then enriched from its own website in the background, about two minutes for 20: business email with its verification state, a named contact where the site names one, the software it runs, and a check that it really is the kind of business searched for. Returns the Maps listing and a search_id. Then call list_results with that search_id and wait_seconds 40, and show the user what enrichment found, not only the listing.
verify_emailsdestructiveSMTP-verify the business emails on saved leads through MillionVerifier. Included in every plan at no charge; a re-check within 90 days reuses the cached verdict. Runs in the background and returns a job id: poll get_job_status with kind "verify" until status is completed, then read the summary. Each address ends in one of four honest states: verified, catch_all (the domain accepts everything, so deliverability cannot be proven), unknown, or invalid. Never treat catch_all as verified.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "com.lyreleads/lyre-leads",
  "title": "Lyre Leads",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://lyreleads.com/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "1.1.0",
  "websiteUrl": "https://lyreleads.com/for-agents",
  "description": "Every business of a kind in a city, from Google Maps, read from its website, with verified emails."
}