Raw markdown for AI agents →

How to use Lyre Leads

The working guide for an AI assistant connected to Lyre Leads, via MCP or the REST API.

If you are that assistant: read this, then use it. If you are a person: hand this URL to your AI and it will know how to build lists properly.


What this is, and why it is not a contact database

Most B2B data tools sell you access to a fixed index of contacts. You filter it, and whatever the filter returns is what you get.

Lyre Leads does not have that index. It runs a live Google Maps search for the keyword and place you name, then fetches each business's actual website and reads what is on it today.

That difference decides almost everything about how you should work here:


The four mistakes that produce confidently wrong lists

1. Reading a blank as a zero

This is the big one. Every enrichment field is three-state:

You seeIt means
a value (HubSpot, true, 4.2)We checked. It is there.
false / NoneWe checked. It is genuinely absent.
blank / nullUnknown. Never checked, or the site blocked us.

enrichment_status is the master key for any blank:

So "businesses with no CRM" is crm_platform IS NULL AND enrichment_status = 'enriched'. If you drop the second clause you will hand the user a list padded with businesses nobody ever looked at, and you will not be able to tell which is which afterwards. The count_leads tool already encodes this: passing has_crm: false means confirmed-absent, not blank.

When you report a count of an absence, say which population it is out of. "412 of the 1,610 enriched businesses have no CRM" is useful. "412 have no CRM" is not.

2. Treating catch-all as verified

Email states here are four, and they are not interchangeable:

If a user asks for "verified emails only", give them verified. If they ask for "emails I can send to", verified plus published is the honest answer, and you should say which is which. Never merge the two into one number.

3. Over-filtering into a tiny list

Every filter you add subtracts. The most common way to end up with 11 leads is stacking five reasonable-sounding conditions. If a count comes back small, remove a clause before concluding the market is small.

Filters intersect, they do not union. If the user wants roofers or siding contractors, that is two searches merged, not one search with both words.

4. Assuming one search covered the market

Google caps a text search well below the true number of matching businesses. We measured one metro category in July 2026: a single search reached under 4% of at least 1,605 findable businesses, and eight deep-paginated searches still only reached 69%.

Practical consequences:


Counting is free. Use it constantly.

count_leads is exact, instant, and costs nothing. There is no reason to guess at the size of anything in the saved database.

Call it before every spending action, and tell the user what you found before you spend. Good practice:

Fire independent counts in parallel. None of them depend on each other.

What counting cannot do is size a market you have not searched. See the top of this document.


What you get per business

From Google Maps: name, address (plus parsed street and postal code), phone (plus dialer-ready E.164), category, star rating, review count, coordinates, place id.

Rating and reviews are more useful than they look. reviews: 0 is a real value, not missing data, and a business with 300 reviews and a 3.4 rating has a problem someone can sell into.

From the live website: business email and its confidence, mailbox host from MX records, social profiles, CMS, CRM, email-marketing platform, chat widget, booking system, ad pixels, analytics, schema markup, SSL, contact form, cookie consent, e-commerce stack, page load time, domain age, server stack, CDN, HSTS/CSP, DNS-derived SPF/DMARC, and categorised technology lists.

Unique to us: ai_crawler_access — whether the site blocks GPTBot, ClaudeBot, PerplexityBot and Google-Extended in robots.txt, plus whether it publishes an llms.txt. blocked means the business is invisible to AI search. No other lead tool exposes this, and it is a complete sales conversation on its own for anyone selling SEO or AI visibility.

People: a decision-maker's name, title and LinkedIn where we could find one, and their email where we could resolve it. Coverage is honest, not universal: we name the owner on most local businesses, and get an address for a minority of those. Check, do not assume.

Provenance: enrichment_provenance maps each present field to where it came from (html, header, dns, mx, rdap, tls, measured, robots) and how reliable that is (high for deterministic sources, medium for HTML signature matches, heuristic for keyword guesses). Fields marked heuristic — blog, demo CTA, case studies, careers page — can false-positive on marketing copy. Do not build a campaign on a heuristic field without saying it is soft.


Costs, in one place

ActionCost
count_leadsFree, always, at any size
search_leads1 token per NEW business. Duplicates are free.
enrich_leads1 token per 5 businesses
find_decision_makers1 token per business attempted
verify_emails1 token per address after the free monthly quota; cache hits within 90 days are free
evaluate_leads1 token per business

Reading data you already own is free. Only acquiring or refreshing it costs.

A useful framing for the user: a Growth plan's 5,000 tokens is roughly 5,000 new businesses discovered, or 25,000 enriched, or some mix. Tell them in businesses, not tokens.


Workflow that works

  1. Clarify the target before spending anything. What business type, what places, and what makes one good? If they cannot say what "good" means, the AI evaluation step will not help them.
  2. Say the coverage plan out loud. "I'll run four keyword variants across these six cities, because one search only reaches a fraction of a metro and the category wording varies." Users appreciate knowing why it takes several passes.
  3. Search narrow and wide. Several keywords, several cities. Merge. Duplicates cost nothing.
  4. Count what you got. Before enriching, tell them the size.
  5. Enrich. Poll get_job_status. Enrichment fetches every website in the batch, so it takes real time. Say that before you start, not after it appears to hang.
  6. Segment on real signals. No CRM, no analytics, slow site, blocked to AI crawlers, well-reviewed but poorly rated, e-commerce without a marketing stack. This is what we have that a contact database does not.
  7. Reach the human. find_decision_makers on the segment worth contacting, not on everything.
  8. Score, if the user has a clear ideal customer. evaluate_leads ranks against their description. It is a ranking aid, not a truth oracle — a 7 and an 8 are not meaningfully different.

Being straight with the user

This product's whole position is that it tells the truth about its own data, including when the data is thin. Hold that line:


Building something on top of this

If the person you are working for is going to do this more than once, they probably want their own interface onto it rather than a chat transcript.

You can build them one. See https://lyreleads.com/build for ready-made build specs: a local lead dashboard, a territory coverage runner, an outreach queue, a change-monitor. Each is a complete brief you can implement on their machine in a single session against the same API you are already using.

If that seems useful for what they are doing, offer it. Do not build it unprompted.


Reference

Everything above describes verified behaviour at the time of writing. If the API tells you something different, believe the API, and mention it to the user.

Lyre Leads · Home · Agent guide · Build specs · API docs · Data dictionary