Skip to main content
Glama

Server Details

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

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 17 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

A4.3/5.0

Scored across 15 tools

Disambiguation4/5

Descriptions work hard to delineate near-overlapping pairs: the three search tools (preview_search vs search_leads vs search_areas), the two estimate tools (estimate_area_search vs estimate_list), and the two readers (get_search_results vs list_results) are each explicitly scoped against the others. Still, count_saved_leads vs list_results and the estimate tools touch the same 'how much/how many' surface, so a careless agent could misselect without reading closely.

Naming Consistency5/5

Every tool uses a consistent snake_case verb_noun (or verb_noun-noun) pattern: count_saved_leads, enrich_leads, enroll_leads, find_areas, find_contacts, get_balance, get_job_status, get_search_results, list_results, preview_search, search_areas, search_leads, verify_emails. No camelCase or mixed conventions; the pattern is predictable throughout.

Tool Count5/5

15 tools is well within the healthy 3-15 range and each maps to a distinct stage of the lead-generation workflow (search, enrich, contacts, verify, estimate, read, account). Nothing appears redundant enough to be a padding tool.

Completeness4/5

Coverage of the lead-generation lifecycle is strong: discover (preview/search_leads/search_areas), enrich (enrich_leads/enroll_leads), contact resolution (find_contacts), verification (verify_emails), read-back (get_search_results/list_results), cost sizing (estimate_*), and account state (get_balance). Minor gaps remain — no way to delete/tag/manage or export saved leads, and no tool to list or cancel running jobs — but core workflows have no dead ends.

Available Tools

15 tools
count_saved_leadsCount saved leadsA
Read-onlyIdempotent
Inspect

FREE 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.

NameRequiredDescriptionDefault
cityNoSubstring match on city
typeNoSubstring match on the Google Maps business category, e.g. "Dentist"
queryNoSubstring match on the search keyword that found the lead, e.g. "roofing"
countryNoSubstring match on country
has_cmsNotrue = a CMS was detected. false = enriched and none detected (custom/hand-built site).
has_crmNotrue = a CRM was detected. false = enriched and none detected. This is the classic "they have no CRM, sell them one" filter.
enrolledNotrue = enrolled in enrichment: re-checked about monthly at no charge. Every business a search found is enrolled. false = not enrolled (usually imported); enroll_leads enrolls it at one token per two businesses.
has_emailNotrue = has a business email. false = enriched and confirmed to have none (excludes never-checked rows).
relevanceNoOne of: yes, no, unclear. Did a model reading the business website judge it to be the kind of business this row's own search query asked for? Runs inside enrichment at no extra cost, and every verdict carries a verbatim quote from the page in relevance_evidence. Absent means never judged, which is not the same as "no". Filter on "yes" to drop the results Google Maps returned that are not the trade you searched for.
search_idNoRestrict to one batch from search_leads
max_ratingNoMaximum Google star rating. Use with min_reviews to find well-reviewed but poorly-rated businesses.
min_ratingNoMinimum Google star rating
has_websiteNotrue = has a website. false = enriched and confirmed to have none.
max_reviewsNoMaximum Google review count
min_reviewsNoMinimum Google review count
ai_crawler_accessNoOne of: open, partial, blocked, unknown. "blocked" = the site is invisible to AI search engines.
enrichment_statusNoOne of: enriched, pending, unverifiable, no_website, failed
has_contact_emailNotrue = a named contact address is on file.
email_verification_statusNoOne of: verified, catch_all, unknown, invalid

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent annotations by disclosing that the call is FREE and exact, that results break down by enriched/has email/contact email/relevance-checked, and that a small result reflects account search history rather than total data available. It even warns against a specific misreporting failure mode, which is behavioral context annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the two key selling points (FREE and exact), then scope, then usage, then a clearly flagged CRITICAL caveat. No redundant sentences; the length is justified by the false-inference risk the tool carries.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even without an output schema, the description enumerates the returned breakdown (enriched, has an email, contact email, relevance-checked) and the interpretation of results. Combined with a fully covered 19-param schema, nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the 19 filters are already documented, and the baseline would be 3. The description adds value by stating filters can be combined in any combination and demonstrating a compound filter ('saved roofers have no CRM and a verified email'), clarifying these act as conjunctive optional constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (counts) and a tightly scoped resource (leads THIS ACCOUNT has already searched and saved), and immediately differentiates from the inventory reading by naming estimate_list as the tool for 'how many X do you have'. An agent can route correctly without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('size a job over data the account already owns before spending') with a concrete query example, plus two hard exclusions: it is NOT an inventory, and never report the number as available data. The alternative (estimate_list) is named for the excluded case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

enrich_leadsEnrich leadsA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
forceNoRe-enrich rows that already have data (use to refresh stale enrichment). Default false.
result_idsYesLead ids from list_results

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover write/destructive/idempotency, and the description adds real context beyond them: the token cost ratio (one token per five businesses), that it does not enroll the business, that email verification is included free, and that it runs asynchronously returning a job id. The three-state field contract is a useful honesty guarantee. It stops short of saying what re-enrichment overwrites when force is set.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and outcome, then cost, alternative, and async flow. The long middle enumeration of 50+ fields is informative but the longest sentence in the whole definition and could be trimmed without loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description compensates by explaining the return (a job id, polled via get_job_status) and the field-value contract. For a downstream write operation with rich annotations, nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented in the schema itself (force and result_ids both have descriptions). The description adds no syntax or semantics beyond that, which is the expected baseline when the schema carries the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ('Fetch each lead's website and extract 50+ fields') with a concrete enumeration of what it extracts. It also explicitly distinguishes itself from enroll_leads and verify_emails, so an agent can route correctly without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative and the condition that selects it: 'To keep businesses current, use enroll_leads instead.' It also states the follow-up flow ('returns a job id, poll it with get_job_status') and the cost model, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

enroll_leadsKeep leads currentA
Destructive
Inspect

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".

NameRequiredDescriptionDefault
result_idsYesLead ids to enroll

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing recurring monthly re-checks for the lead's lifetime, the cost model (one token per two businesses, paid once), free/skipped cases, and that it runs asynchronously returning a job id to poll. These are exactly the traits an agent needs before spending the user's tokens, none of which the hints convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the action and its effect, then layers cost, skip rules, usage guidance, and the async follow-up in a logical order. Slightly long for a one-parameter tool, with small redundancies ("for free" / "at no cost"), but nearly every sentence carries decision-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description explains the return value (a job id) and the exact next call (get_job_status with kind "enrich"). Combined with cost, skip, and recurrence semantics, an agent has everything needed to invoke and follow up correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and there is a single parameter, so the baseline is 3. The description adds real meaning by constraining which lead ids are meaningful to pass (imported or chosen leads the user cares about) and noting that some ids are skipped at no cost, which the schema's "Lead ids to enroll" does not say.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource (enroll leads) and immediately expands what enrollment means: enrich now plus monthly re-checking with change signals. This behaviorally separates it from a one-off enrichment tool, but it never names the sibling (enrich_leads) it differs from, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit selection rule ("Use it for the imported or chosen leads the user cares about most") and clear exclusions (search-found businesses already enrolled; already-enrolled leads and leads without a website are skipped), plus the required follow-up action via get_job_status. It stops short of contrasting with the one-off enrich_leads alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

estimate_listPrice a listA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
lead_countYesHow many businesses the user wants found (1-100000)
include_contactsNoAlso find the named contacts at each business on the open web and verify their mailboxes. Default false. 2 tokens per person found, verification included.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the annotations: it is free and needs no account, returns exact token costs by stage, reports account balance and affordable maximum, and enumerates the data points per lead. Cost mechanics (1 token per lead, 2 tokens per verified contact) are disclosed nowhere else and are essential for interpreting the estimate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the key qualifier ("FREE, no account needed") and keeps every clause meaningful, but the embedded quoted question and the long trailing justification about count_saved_leads make it denser than necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of explaining returns and does so: cost broken down by stage, balance, affordable maximum, and per-lead data points. Combined with full schema coverage and read-only annotations, an agent has everything needed to call and interpret it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds pricing meaning to both parameters by tying lead_count to one-token-per-lead and include_contacts to two-tokens-per-person. It stops short of naming the parameters explicitly, so it enriches rather than fully documents them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (estimate/price a list of N businesses) and precisely frames the question it answers. It also explicitly distinguishes itself from the sibling count_saved_leads, so an agent can route correctly without inspecting any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ("THIS is the tool to use when a user asks what Lyre Leads can get them") and explicit when-NOT-to-use with the named alternative ("Do NOT use count_saved_leads for that question") plus the reason: leads are generated on demand, not stored. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_areasFind search areasA
Read-onlyIdempotent
Inspect

FREE, 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.

NameRequiredDescriptionDefault
qNoPart of a place name, case-insensitive, e.g. "hous"
limitNoMax areas (default 20, max 100)
countryNoCountry name, e.g. "United States". Omit to list countries.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent, non-destructive and non-open-world, so the safety profile is established. The description adds context annotations cannot carry: it is free and requires no account, and results are returned most-populous-first with an id per area, which is behavioral/return detail absent from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences with no filler. The most decision-relevant fact (free, no account needed) is front-loaded, followed by the call patterns and the disambiguation rule.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description compensates by describing the return shape (areas ordered by population, each with an id) and the downstream use of that id. Together with annotations and the fully documented schema, nothing needed to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, which sets a baseline of 3. The description goes beyond the schema by explaining the interaction of parameters: no q means browse, no country means the country list, and the returned id is the value to hand to search_areas for ambiguous names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ("Look up the areas search_areas accepts in a country") and explicitly ties itself to the sibling tool search_areas, so an agent can distinguish the discovery step from the search step. It also defines scope (per-country) and output ordering up front.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit call patterns: omit q to browse, omit country to list countries, and pass a specific id when a place name is ambiguous (four Houstons, thirteen Springfields). That is concrete when-to-do-what guidance. It does not mention sibling alternatives such as estimate_area_search for sizing an area, so it stops short of full routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_contactsFind named contactsA
Destructive
Inspect

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).

NameRequiredDescriptionDefault
result_idsYesLead ids to search. Only leads with a website and no personal email yet are eligible; ineligible ids are skipped and not charged.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive/openWorld/non-idempotent, but the description adds behavior annotations cannot express: the exact cost model (2 tokens per person, up-front reservation of 2 tokens per lead id, settle on delivery), the async job-id + get_job_status polling contract, and a full outcome vocabulary (verified/published/catch_all/searched) with what each means.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the triggering condition, then cost, then sibling differentiation, then return/polling behavior. Dense and mostly waste-free, though the cost/reservation sentences are slightly circuitous and could be tightened without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an expensive, mutation-like, open-world tool with no output schema, the description supplies everything needed: eligibility, cost ceiling, async polling path, and the meaning of each possible per-lead outcome. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one parameter and schema coverage is 100%, so the schema already documents result_ids including the eligibility and skip-without-charge rule. The description's added value here is limited to tying cost to 'per lead id sent', which is marginal on top of the schema. Baseline 3 for a fully-covered single parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource chain: search the open web for named people (owner/founder/director), then resolve and verify their email in one run. It explicitly contrasts itself with 'enrichment', so an agent can route correctly without inspecting either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Prequalifies the audience precisely: 'for leads with a website but no named contact', and names the alternative (enrichment) along with the condition that selects it (people listed on the business's own site, already free). It also flags the case this uniquely reaches that enrichment cannot.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_balanceToken balanceA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so the description correctly adds non-obvious context instead: the token pricing model, rollover policy (up to three months' allowance), and the fact that the purchase link is returned rather than any action taking place. That genuinely helps interpret the balance number.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first sentence, followed by the token economics needed to make the returned number meaningful. The middle pricing sentences are dense and arguably belong to the consuming tools, but they are not padding and the final sentence cleanly closes the out-of-scope boundary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and no output schema, the description carries the burden of explaining what comes back: a token balance, plan info, and a purchase link. It covers all of that and adds the rollover rule, leaving only minor gaps such as the exact result shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric the baseline is 4. There are no arguments to misinterpret, and the description sensibly spends its words on output meaning instead of phantom parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific verb and resource: retrieve the account's token balance and plan. It is immediately clear what the tool returns, though it never names the sibling tools whose token consumption it contextualizes (search_leads, enrich_leads, etc.), so it is clear but not sibling-differentiating in an explicit way.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states one exclusion clearly -- plans are bought and changed on the website, not through these tools, and the result carries the link. However, it never says when an agent should call this tool (e.g., before spending tokens on search/enrich operations), leaving the primary usage trigger implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_job_statusCheck a background jobA
Read-onlyIdempotent
Inspect

Poll 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.

NameRequiredDescriptionDefault
kindYesWhich tool started it: search (search_areas), enrich (enrich_leads, enroll_leads), contacts (find_contacts), verify (verify_emails)
job_idYesJob id returned by the starting tool

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuine context beyond that: jobs are expected to be long-running ('a grid search works through many map points, and enrichment fetches every website in the batch'), which tells the agent not to treat slowness as failure. It stops short of describing terminal states, failure modes, or progress reporting.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with zero filler: the set of originating tools is front-loaded, the call mechanics follow, and the long-duration caveat closes. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a polling tool with no output schema, the description never says what the returned status looks like or, critically, that completed results are retrieved via siblings like get_search_results or list_results. The kind enum and the long-job expectation are well covered, but the post-completion path is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the enum's own description already maps each kind to its originating tool, including enroll_leads under "enrich". The description's "pass the job id and its kind" and the tool-to-kind mapping largely restate the schema, adding only marginal emphasis. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (poll) and resource (background job) and names exactly which sibling tools create the jobs it polls (search_areas, enrich_leads, enroll_leads, find_contacts, verify_emails). An agent can distinguish this from result-fetching siblings like get_search_results without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly establishes the usage context: call this after one of the named tools starts a background job, passing its job id and kind. It does not, however, say when to stop polling or route the agent onward to result tools (get_search_results, list_results) once the job completes, nor mention polling cadence.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_search_resultsRead a search's leadsA
Read-onlyIdempotent
Inspect

FREE. Read the leads a search_areas job found, up to 100 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. The summary counts every lead in the search (or every lead the filters match), not only the page, so one read answers how many have emails, contacts or no contact yet; read further pages only when the user asks to see more leads. Enrichment keeps landing for a while after the search finishes, so re-read if leads are still enriching.

NameRequiredDescriptionDefault
pageNoPage number, from 1
limitNoLeads per page (default 50, max 100)
detailNocompact (default) or full (every field, much longer)
job_idYesjob_id returned by search_areas
filtersNoDatabase filter parameters as key/value pairs, e.g. {"relevanceYes": true, "minReviews": 100}

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive), and the description adds real behavioral context on top: it is free, paginated at 100, compact-by-default with a 'full' escape hatch, and the summary reflects the whole search population rather than the page. The note that enrichment continues after the search finishes and requires a re-read is exactly the kind of non-obvious behavior an agent cannot get from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: cost, scope, filters, return shape, summary semantics, and enrichment caveat all in one compact block with no filler sentences. It is longer than typical, but each clause carries decision-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter tool with a nested filters object and no output schema, the description compensates well: it describes what each lead contains, the difference between compact and full, and how summary counts are scoped. An agent has everything needed to call it and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description goes further: it shows concrete filter keys (hasVerifiedEmail, noFBPixel) not present in the schema example, clarifies that 'full' returns every database field, and explains what the summary counts. Only the page/limit semantics are left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read the leads a search_areas job found') and ties the tool to the exact producing sibling, so an agent knows this reads results of a specific job rather than doing the searching itself. Scope ('up to 100 per page') is stated up front.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operational guidance: read further pages only when the user asks to see more leads, and re-read while enrichment is still landing. It does not, however, explicitly contrast this tool with siblings like list_results or search_leads, so the routing decision relies on inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_resultsList saved leadsA
Read-onlyIdempotent
Inspect

FREE. 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; with a search_id the summary counts the whole search, not only the page. detail "full" returns every field.

NameRequiredDescriptionDefault
limitNoMax rows to return (default 50, max 100)
detailNocompact (default) or full (every field, much longer)
offsetNoPagination offset
search_idNoBatch id returned by search_leads (optional: omit for all results)
wait_secondsNoWith search_id: wait up to this many seconds for enrichment to finish before reading. 40 right after search_leads.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and non-destructive, so the safety profile is covered. Beyond that the description adds real behavioral context: the call is 'FREE', wait_seconds blocks up to 45 seconds for in-flight enrichment, and the summary with a search_id counts the whole search rather than just the returned page.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The cost flag 'FREE.' and the core purpose are front-loaded before the field list, and no sentence is pure filler. The middle sentences run long and pack return-field enumerations densely, which slightly hurts scannability but not information value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must carry return-value burden and it largely does: it describes the compact view, the summary/next-steps payload, and how detail='full' changes output. Pagination behavior and the exact shape of the summary are left implicit, but nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is already documented at the schema level. The description mostly restates that coverage (search_id from search_leads, wait_seconds up to 45, detail 'full') without adding much new meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('Read saved leads') and then enumerates exactly which fields come back (email and verification state, contact, relevance verdict with site sentence, software, technologies, signals). It also distinguishes itself from search_leads by requiring that tool's search_id, so an agent can tell it apart from siblings like get_search_results or count_saved_leads.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear operational guidance: 'Pass the search_id from search_leads to read that search' and 'omit for all results', plus the wait_seconds timing tip. It does not explicitly rate itself against alternatives such as get_search_results or count_saved_leads, so the routing guidance is strong but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_areasSearch whole areasA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
modeNogrid (default here) covers the whole area; city pages from the centre
areasYesArea names like "Houston, Texas", or ids from find_areas
queryYesBusiness keyword, e.g. "roofing contractor" or "cosmetic dentist"
countryYesCountry name, as listed by find_areas

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial behavior beyond the annotations: billing is 1 token per NEW business with existing listings free plus a small per-page minimum, results are auto-enriched, relevance-checked, address-verified, and enrolled in monthly re-checks, and concurrency is limited to two searches. It also discloses the ambiguous-area failure mode and the polling handoff to get_job_status/get_search_results, which the destructive/openWorld annotations alone would not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and behavior lead, with operational details (cost, polling, disambiguation, concurrency) following in a dense but ordered block. Several sentences are long and pack multiple clauses, so it is efficient without being maximally tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description correctly supplies the return contract (job_id, poll get_job_status with kind 'search', then read with get_search_results). Combined with the cost model, concurrency limit, and disambiguation behavior, an agent has everything needed to invoke and follow up correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real parameter meaning: the mode tradeoff (grid vs paging from a centre) is quantified with cost/exhaustiveness evidence, and the areas parameter's ambiguity handling (returns candidate ids, starts nothing, requires resend with an id) is documented nowhere else.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb+resource (area search that sweeps a grid of map points live against Google Maps as a background job) and ties it to a concrete outcome (1,061 roofing contractors in Houston vs 255 from paging one centre). The scope and the contrast with centre-paging make it distinct from siblings like search_leads, preview_search, and estimate_area_search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear usage context: it is 'the search to use for coverage,' runs as a background job requiring a poll loop, and is capped at two concurrent searches per account. It also tells the agent what to do on an ambiguous area name (ask the user and resend with the id). It never explicitly names when NOT to use it or which sibling (search_leads, preview_search, estimate_area_search) to prefer instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_leadsQuick one-city searchA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
cityYesCity name, e.g. "Austin"
pagesNoResult pages to pull, 1-5 (about 20 results per page). Default 1.
queryYesBusiness keyword, e.g. "roofing contractor" or "cosmetic dentist" (max 200 chars)
countryYesCountry name, e.g. "United States"

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite annotations (destructiveHint true, readOnly false, openWorld true), the description discloses the token cost model, that existing leads are free, the background enrichment (~2 min for 20) with its outputs, and the return shape (Maps listing + search_id). This is rich context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and scope in the first sentence, then alternatives, cost, enrichment, and next steps. It is dense but every sentence carries actionable info; slightly long but not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but the description explains return values (Maps listing, search_id), the enrichment payload, cost implications, and the required follow-up call. An agent can invoke correctly and know what to do next.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema carries parameter syntax. The description still adds meaning: pages are 'about 20 per page' and the query is a 'city centre' scoped search, reinforcing the pages and scope semantics. Marginal extra value, so a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Search) and resource (ONE city / businesses) and the scope (city centre, 1-5 pages). It explicitly distinguishes itself from search_areas, naming the sibling and the volume difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('quick search, a page of results or one town') and when-to-use-otherwise ('for a whole city or several, use search_areas'), plus the follow-up call list_results with its wait_seconds. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_emailsVerify emailsA
Destructive
Inspect

SMTP-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.

NameRequiredDescriptionDefault
result_idsYesLead ids to verify (max 2,000 per call)

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite annotations covering the safety profile, the description adds substantial context beyond them: cost ('included in every plan at no charge'), caching ('a re-check within 90 days reuses the cached verdict'), async execution model, the polling contract, and the semantic meaning of all four verdict states. The explicit 'Never treat catch_all as verified' warning is exactly the kind of behavioral nuance annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every clause carries load — cost, caching, execution model, polling instructions, and state semantics — with no redundancy. The async contract is front-loaded before the state definitions, giving a natural reading order.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description fully compensates by explaining the return value (a job id), the polling path, and the four possible verdict states plus the catch_all caveat. An agent can complete the call and interpret results without any missing information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter's max of 2,000 is already documented in the schema, so the description adds no syntax or format detail beyond it. Per the high-coverage baseline, a 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'SMTP-verify the business emails on saved leads' — and names the provider (MillionVerifier), which cleanly separates it from siblings like enrich_leads or find_contacts. An agent knows exactly what operation this performs without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operational context: it runs in the background, returns a job id, and must be polled via get_job_status with kind "verify" until completed. It does not, however, state when to prefer this over alternatives such as enrich_leads, so it falls short of full when/when-not routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedget_search_results1 field changed
      • changedInput schema / properties / limit / description
        Previous value: -"Leads per page (default 50, max 500)"New value: +"Leads per page (default 50, max 100)"
  2. 1 tool update
    • Changedestimate_list1 field changed
      • changedInput schema / properties / include_contacts / description
        Previous value: -"Also find the named contacts at each business on the open web and verify their mailboxes. Default false. 2 tokens per contact found; a business where nobody is found costs nothing."New value: +"Also find the named contacts at each business on the open web and verify their mailboxes. Default false. 2 tokens per person found, verification included."
  3. 2 tool updates
    • Changedcount_saved_leads1 field changed
      • changedInput schema / properties / enrolled / description
        Previous value: -"true = enrolled in enrichment: re-checked about monthly at no charge. Every business a search found is enrolled. false = not enrolled (usually imported); enroll_leads enrolls it at two businesses per lead."New value: +"true = enrolled in enrichment: re-checked about monthly at no charge. Every business a search found is enrolled. false = not enrolled (usually imported); enroll_leads enrolls it at one token per two businesses."
    • Changedestimate_list1 field changed
      • changedInput schema / properties / include_contacts / description
        Previous value: -"Also find the named contacts at each business on the open web and verify their mailboxes. Default false. 2 leads per contact found; a business where nobody is found costs nothing."New value: +"Also find the named contacts at each business on the open web and verify their mailboxes. Default false. 2 tokens per contact found; a business where nobody is found costs nothing."
  4. 2 tool updates
    • Changedget_search_results1 field changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "description": "compact (default) or full (every field, much longer)",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
    • Changedlist_results3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "description": "compact (default) or full (every field, much longer)",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / limit / description
        Previous value: -"Max rows to return (default 50, max 200)"New value: +"Max rows to return (default 50, max 100)"
      • addedInput schema / properties / wait_seconds
        Added value: +{
        +  "description": "With search_id: wait up to this many seconds for enrichment to finish before reading. 40 right after search_leads.",
        +  "maximum": 45,
        +  "minimum": 0,
        +  "type": "integer"
        +}
  5. 15 tool updates
    • First observedcount_saved_leads
    • First observedenrich_leads
    • First observedenroll_leads
    • First observedestimate_area_search
    • First observedestimate_list
    • First observedfind_areas
    • First observedfind_contacts
    • First observedget_balance
    • First observedget_job_status
    • First observedget_search_results
    • First observedlist_results
    • First observedpreview_search
    • First observedsearch_areas
    • First observedsearch_leads
    • First observedverify_emails

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Discovers local businesses needing a website via OpenStreetMap and verifies their leads with checks like website existence, email deliverability, and site quality scoring.
    24 PyPI
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Finds, filters, and verifies local-business leads on demand; every returned email carries a verification receipt (verifier, verdict, timestamp). Credit-based with per-key spend budgets; 25 free validated leads at signup.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    The owner-verified local business data + service & menu-price layer for AI agents. Owner-authored business profiles where every response carries provenance — verification level, completeness score, freshness timestamps, and upstream sources. * Search & profiles — find businesses by name, category, city, or geo-radius; full profiles with contacts, hours, media, ratings. * Price layer
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Retrieves vetted Local Services Ads businesses (Google Guaranteed or Screened) as clean JSON for any service and US city, enabling lead generation, local SEO monitoring, and competitor tracking.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources