https://mcp.goodleads.club/mcp ↗
Find new business owner contacts the morning the state posts a filing. Preview free, pay per record.
GoodLeads is a remote MCP server published at mcp.goodleads.club. It has been probed 12 times since 9/12/2026. It answered in 12 of them (100.0%), a near-uninterrupted record. Median response time is 608 ms, a delay an agent will notice. It offers a narrow, focused set of 13 tools. On the protocol side it still runs 2025-11-25 and has not moved to the newer spec.
Can an LLM agent pick the right tool here — names, descriptions and parameter clarity are assessed.
data_quality_scorecard — Parameter 'state' has null type, unclear input expectationsbrowse_leads — Multiple parameters (filters, states) use null type without definitioncheckout_list — Overlaps with 'create_checkout' for payment link generationinterpret_list — Description cuts off mid-sentence, missing critical detailstools/list structure, inputSchema validity, and a functional smoke test — the components of the 0-100 score.
Tools the server advertised in the latest measurement — measured, not catalog-claimed.
find_lead_by_glidOne record in full, by its Lead ID (e.g. `GL-CO-00042`). Use this when you already hold a Lead ID — from a file, a CRM, a receipt — and want everything we know about that business and its owner: the business, the primary contact, both scores, every attribute, and where each field came from. Args: glid: The Lead ID, e.g. `GL-CO-00042` — the `lead_ref` field on every record. Case-insensitive. Returns: The full lead detail dict, including a `_meta` provenance block (schema_version, freshness incl. this record's last update, source, score_versions, access_level). Raises ValueError if the id is not shaped like a Lead ID or no record matches.
glidstringrequireddata_quality_scorecardHow clean is the data a buyer would receive in a state — numbers, not adjectives. The scorecard grades the records a buyer would receive on mechanical conformance across four dimensions — format (state/phone/email/zip), completeness (a name for who filed it, an address present), consistency (names in CRM-ready Title Case, not ALL-CAPS), and standardization (how much of the state's raw status / entity-type vocabulary is mapped into the canonical cross-state values that `status` / `entity_type` filters match on — an unmapped row is one a canonical filter silently misses). It returns an overall 0–100 score, the per-dimension breakdown, and per-check pass rates with sample offenders you can click through. Use it to answer "how clean is the data we're se
statesample_limitintegerbrowse_leadsBrowse leads — rows for a shape or a saved list, or (`summary=True`) its counts, facets and price. Two ways to say which records, one contract underneath: * a saved list — `list_id`, the 8-char id in `#browse?list=<id>`. Its states, filters, sort and inactive-or-holding toggle are read from the list; pass nothing else about the shape. * an inline shape — `filters` plus `state` (one state) or `states` (several); omit both for every live state (CO, CT, FL, NY, TX, VA). `summary=True` returns the summary contract instead of rows — the same numbers the buying surface shows, from the same code path: `matching`, `sellable`, `verified_one`, `verified_both`, `no_channel`, `unnamed`, `facets`, `prices`, `quote` (present when `lane` or `cap` is g
statefilterspageintegerpage_sizeintegersortsort_dirstringinclude_non_operatingbooleanlist_idstatessummarybooleanlanecapinterpret_listStart here: the buyer's own words become a list we can count, price and sell. Give it what the buyer would type ("cleaning companies in Texas", "denver plumbers formed last 30 days with a phone", "NAICS 238220") and you get back a list shape in the one filter contract — `states`, `filters`, `sort`, `lane`, `cap` — with a one-sentence `readback` to show the buyer, `assumed` (every default and substitution, named), `unresolved` (the words it could not place) and up to three `alternatives`. It is the same interpreter behind the buy page's search box, so a person and an agent get the same list from the same words. It never answers in prose, never asks a question back, never looks a person up, and never emits a predicate on a masked field (`contact_name`
textstringrequiredstatecurrentquote_listWhat this list costs before anyone pays: how many records name a person, and the price by grade. Pass a saved list (`list_id`, the 8-char id in `#browse?list=<id>`) or an inline shape (`filters` + `states`; omit `states` for every live state: CO, CT, FL, NY, TX, VA). You get the same numbers the buy page shows a person: `matching`, `sellable`, `verified_one`, `verified_both`, `no_channel`, `unnamed`, `facets`, `prices` (the live graded price rule + `price_rule_version`), `quote` (present when `lane` or `cap` is given), `exact`, `computed_at`, `quote_valid_until` (counts refresh tomorrow morning; the quote holds until then), `per_state`, and the `_meta` provenance block every read carries (schema_version, freshness, source, access_level). When a count is
list_idstatesfiltersinclude_heldbooleanlanecaplist_startersReady-made lists to start from: every live state × business type, with live counts and a starting price. Returns one document: `{"count": N, "starters": [...]}` — one entry per (state, business type): the display `label`, the exact `filters` the card opens with, the graded counts (`matching`, `sellable`, `verified_one`, `verified_both`) and `price_from_cents` (the name-and-address grade — the floor, not a flat price; the full price ladder comes from `quote_list`). Show these to a buyer who has not said what they want yet, then narrow with `interpret_list` or your own filters and price the result with `quote_list`. Counts come from live inventory, cached server-side for a few hours — never a stale copy from a marketing page.
checkout_listTurn a quoted list into a payment link a person completes — the buyer gets the file within a minute of paying. Creating the link costs nothing and charges nobody — payment only happens if a human opens the returned `checkout_url` and completes it on Stripe's hosted page. Hand the URL to your human; do not represent the purchase as complete until they confirm payment. Nothing is charged until a person completes checkout; the file arrives about a minute after they pay; if we find a phone or email on the records after that, the updated file replaces it on the order's receipt page within a few hours and the receipt shows what was found and billed. A hard bounce, a disconnected phone or the wrong person is replaced within 30 days; what you buy is yours to re-download any time.
list_idfiltersstateslanestringcapdeliverystringcustomer_emailcrm_connection_idconnector_crm_namelist_filterable_fieldsThe filter contract, from the schema endpoint (`GET /api/v1/schema/attributes?include=grammar`): fields, grammar, or recipes. Call this before building `browse_leads` filters you haven't used before. Args: section: `fields` (default) — every one of the 77 filterable fields as `{"field", "label", "type", "operators", "sortable", "masked", "allowed_values"?, "description", "job", "absence", "synonyms"}`: `operators` is the ENFORCED set for that field (its type's row, or a narrower pseudo-field override), `sortable` flags the 71 fields `sort` accepts, `masked` flags `contact_name`, `email_primary`, `phone_primary` (redacted for keyless callers, who may not filter the summary on them), `allowe
sectionstringexplain_conceptMap YOUR word for a concept to this surface's fields — ask before concluding absence. Call this whenever a term you or your buyer uses ("vertical", "direct dial", "sole proprietor", "operating address", "decision maker") doesn't obviously match a field name. It answers in three shapes: `carried` names the exact fields and how to use them; `partially_carried` adds per-state availability with the reason a state is zero (zero by state design is not a data gap); `not_carried` explains why and names the nearest signal we do hold. Ambiguous terms return a clarifying question instead of a guess. Never conclude "this data is missing" from an empty filter result or an unmatched field name without calling this first — several concepts are carried under a dif
termstringrequiredlist_live_statesWhere we are live right now — the state codes, read from production, never a cached page. Call it before promising a buyer a state: a state not in this list is not live yet. Returns `[{"state": "CO"}, ...]` — codes only, no counts. For how many records a state holds, `quote_list` (or `browse_leads(summary=True)`) on that state returns the live graded counts.
describe_surfaceWhat GoodLeads is — call this to explain or vet us; to price a list, start with interpret_list. Leads with what the buyer gets and how to act on it, then the mechanics: which database this surface reads (production, or an explicitly opted-in local surface — provenance you can trust), the contract it upholds, and the tools available. The surface never silently answers from local data.
list_productsThe pre-shaped shelf — ready-made business type × state lists. Each product is a ready-made list of newly formed businesses for one business type in one state (or across every live state). Returns `product_id`, `name`, `description`, `state` (null = all live states), `lead_count`, `price_cents`, `period` and `stripe_price_id`. `period`: `monthly` = a standing order billed each period; absent = a one-time purchase. `stripe_price_id` is Stripe's own id for that price (null until the catalog syncs) — informational, never something to pass back. Pricing everywhere follows the one graded rule — per record, by what the record carries (name + address; plus one verified phone or email; plus both, verified) — and only sellable records (the filing names a per
Derived by comparing consecutive probes — changes in era, protocol version, build and reachability.
Add this badge to your README — it updates automatically as measurements change.
[](https://mcpmetrics.io/servers/club-goodleads-new-business-owner-contacts)<a href="https://mcpmetrics.io/servers/club-goodleads-new-business-owner-contacts"><img src="https://mcpmetrics.io/badge/club.goodleads/new-business-owner-contacts/era.svg" alt="mcpmetrics"></a>You are seeing the last 7 days. Sign up for the full history. Which check failed and why is in the dashboard.
Sign up free to seeThe catalog entries whose name and description are closest to this one, found with the same index the search box uses.
Free, read-only access to the UK parliamentary record: Hansard, bills, division votes, MPs and peers, petitions, political donations, the lobbying register, ministerial meetings and gifts, ACOBA appointments, government contracts and committee evidence. 14 tools, no key required. By Emily Politics, the AI public affairs agent.
Free joined public records for small business and CRE: Twin Cities parcels, sales, licences
Real-time Korean business verification via NTS. 10 free calls/day, then pay-per-call (x402).
NexaLink digital business card & personal CRM — edit your card and capture contacts via MCP.
Verify a US business exists and is active by name + state. Status, formation date, agent.
Find the safest first AI workflow before investing in AI agents or automation.
| Run | Era | Modern | ms | Legacy | ms | Versions |
|---|---|---|---|---|---|---|
| 2026-09-13 14:49:35 | Legacy | 400 | 596 | 200 | 531 | 2025-11-25 |
| 2026-09-13 12:47:19 | Legacy | 400 | 665 | 200 | 554 | 2025-11-25 |
| 2026-09-13 10:45:14 | Legacy | 400 | 574 | 200 | 577 | 2025-11-25 |
| 2026-09-13 08:43:04 | Legacy | 400 | 731 | 200 | 584 | 2025-11-25 |
| 2026-09-13 06:40:42 | Legacy | 400 | 650 | 200 | 787 | 2025-11-25 |
| 2026-09-13 04:35:29 | Legacy | 400 | 702 | 200 | 697 | 2025-11-25 |
| 2026-09-13 01:33:33 | Legacy | 400 | 677 | 200 | 769 | 2025-11-25 |
| 2026-09-12 23:31:36 | Legacy | 400 | 754 | 200 | 722 | 2025-11-25 |
| 2026-09-12 21:29:15 | Legacy | 400 | 608 | 200 | 622 | 2025-11-25 |
| 2026-09-12 19:27:29 | Legacy | 400 | 566 | 200 | 608 | 2025-11-25 |
Each block is one measurement round. Green: working response. Amber: responded but the server was returning errors (5xx). Red: no response at all.
Each cell is one probe run. Faded cells are incomplete probes — one leg did not answer, so the era is inconclusive.
The two probe legs separately: modern server/discover and legacy initialize.
Comments
Sign in to write a comment
No comments yet. Be the first.