GoodLeads
REMOTE · MCP.GOODLEADS.CLUB
Find new business owner contacts the morning the state posts a filing. Preview free, pay per record.
Available components
Last scanned (7 hours ago)
Scores higher than 61% of remote servers
Reachable. Last reached 5 Nov 2026.
Category CRM and Sales
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one. See how to fix → View diagnostics → Partial
- HTTPS enforcement could not be verified: the plaintext port answered with HTTP 406, which proves neither a plaintext path nor enforcement. View diagnostics → Unverified
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability51
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 11529 tokens (~823/item across 14 items; 14 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage71
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 0% of tool parameters carry a description.Fail
- Structured output schemas are declared (79% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 14 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 15 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 0
- Tool “browse_leads” rewrote its description, which is the text the model reads security
- Tool “interpret_list” rewrote its description, which is the text the model reads security
- Tool “list_filterable_fields” rewrote its description, which is the text the model reads security
- Tool “quote_list” rewrote its description, which is the text the model reads security
- 24 Oct 26 0
- Server version: 1.27.1 → 1.30.0 functional
- 23 Oct 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “browse_leads” rewrote its description, which is the text the model reads security
- Tool “checkout_list” rewrote its description, which is the text the model reads security
- Tool “create_checkout” rewrote its description, which is the text the model reads security
- Tool “data_quality_scorecard” rewrote its description, which is the text the model reads security
- Tool “interpret_list” rewrote its description, which is the text the model reads security
- Tool “list_products” rewrote its description, which is the text the model reads security
- Tool “quote_list” rewrote its description, which is the text the model reads security
- Schema quality: excellent → good functional
- 22 Oct 26 0
- Tool “browse_leads” rewrote its description, which is the text the model reads security
- Tool “checkout_list” rewrote its description, which is the text the model reads security
- Tool “create_checkout” rewrote its description, which is the text the model reads security
- Tool “interpret_list” rewrote its description, which is the text the model reads security
- Tool “quote_list” rewrote its description, which is the text the model reads security
- 21 Oct 26 0
- Tool “checkout_list” rewrote its description, which is the text the model reads security
- Tool “quote_list” rewrote its description, which is the text the model reads security
- 18 Oct 26 −1
- Tool “data_quality_scorecard” rewrote its description, which is the text the model reads security
- 15 Oct 26 +1
- New tool “field_fill_rates” functional
- 10 Oct 26 +1
- Stability: 0.93 → pass security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://mcp.goodleads.club/mcp
TLS valid
Negotiated TLS 1.2 with TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=mcp.goodleads.club | CN=Amazon RSA 2048 M01,O=Amazon,C=US | 6 Sept 2026 | 22 Mar 2027 | RSA 2048 | SHA256-RSA | be36064bfb16e1b3808383674de1bdc |
| SANs: mcp.goodleads.club | ||||||
| CN=Amazon RSA 2048 M01,O=Amazon,C=US (CA) | CN=Amazon Root CA 1,O=Amazon,C=US | 23 Aug 2022 | 23 Aug 2030 | RSA 2048 | SHA256-RSA | 77312380b9d6688a33b1ed9bf9ccda68e0e0f |
| CN=Amazon Root CA 1,O=Amazon,C=US (CA) | CN=Starfield Services Root Certificate Authority - G2,O=Starfield Technologies\, Inc.,L=Scottsdale,ST=Arizona,C=US | 25 May 2015 | 31 Dec 2037 | RSA 2048 | SHA256-RSA | 67f944a2a27cdf3fac2ae2b01f908eeb9c4c6 |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of mcp.goodleads.club. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| club. | present | 679 | 13 | Verified |
| goodleads.club. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.goodleads.club/mcp | Verified | 200 | |
| http (plaintext) | http://mcp.goodleads.club/mcp | Inconclusive | 406 |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
browse_leads Browse leads ~2,967
Browse leads — rows for a shape or a saved list, or (`summary=True`) its counts, facets and price. **Type it the way your buyer says it.** Filter values are understood, not matched literally: "residential", "cell", "CST", "Texas", "on fire", "Denver metro" and "working from home" all resolve (case, spacing, plurals and reviewed words), and every response echoes what was understood in `interpreted_values` (typed → stored). A value that matched nothing comes back with `value_hints` — the closest real values and, for a closed list, every allowed value. Read both before telling a human a count is zero or a field is missing. 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, OR, 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 given), `exact`, `computed_at`, `quote_valid_until`, `per_state`. **Only `sellable` — a matching record whose filing names a person — is ever billed or delivered; never quote `matching` as a price.** name and address $0.25 per record · plus one verified phone or email $0.50 · plus both $0.70 (price rule v1; live prices always come from the summary call's `prices` block). Lanes: `all` / `best` / `contact` (`all` = every sellable record at the name-and-address price; `best` = each record at its own grade, verified first; `contact` = only records with a verified phone or email). Cap: `{"type": "count|budget", "value"}…
| Name | Type | Req | Description |
|---|---|---|---|
| cap | – | – | – |
| filters | – | – | – |
| group_by | – | – | – |
| include_existing | boolean | – | – |
| include_non_operating | boolean | – | – |
| lane | – | – | – |
| list_id | – | – | – |
| page | integer | – | – |
| page_size | integer | – | – |
| sort | – | – | – |
| sort_dir | string | – | – |
| state | – | – | – |
| states | – | – | – |
| summary | boolean | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
checkout_list Checkout link for a list ~1,154
Turn 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; the purchase is complete only when that person finishes 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. Pass a saved list (`list_id`, `#browse?list=<id>`) or the inline shape `filters` + `states` (omit `states` for every live state: CO, CT, FL, NY, OR, TX, VA), a `lane` (`all` / `best` / `contact`) and an optional `cap` (`{"type": "count|budget", "value"}` — records for count, cents for budget). The list is quoted through the same summary path `quote_list` uses, then checkout is opened against exactly that quote — if the price rule or the count moved in between, the server answers 409 with the fresh quote and nothing is minted. **Billing base is `sellable` (a matching record whose filing names a person), never `matching`.** name and address $0.25 per record · plus one verified phone or email $0.50 · plus both $0.70 (price rule v1; live prices always come from the summary call's `prices` block). The selected records are frozen when the link is minted, so what is billed is what is delivered. After payment we go find a phone and email on every record bought without one: the buyer authorizes a ceiling (`ceiling_cents` — today's total plus the forecast upgrades), is charged `charged_now_cents` for what exists now, and later only what we find, at that grade's price…
| Name | Type | Req | Description |
|---|---|---|---|
| cap | – | – | – |
| connector_crm_name | – | – | – |
| crm_connection_id | – | – | – |
| customer_email | – | – | – |
| delivery | string | – | – |
| filters | – | – | – |
| include_existing | boolean | – | – |
| lane | string | – | – |
| list_id | – | – | – |
| offer_code | – | – | – |
| states | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
create_checkout Checkout link for a list (older name) ~902
Mint a hosted Stripe Checkout link for a list you shaped — the same code as `checkout_list`. 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; the purchase is complete only when that person finishes payment. The dedicated buying journey is: `interpret_list` (the buyer's words → a shape) or `list_starters` (ready-made lists with live counts) → `quote_list` (graded counts + the price) → `checkout_list` (this link). This tool keeps accepting a list for compatibility — the list path is the same code as `checkout_list`. What you can buy: a list — `list_id` (a saved list, `#browse?list=<id>`) or the inline shape `filters` + `states` (omit `states` for every live state: CO, CT, FL, NY, OR, TX, VA), with a `lane` (`all` / `best` / `contact`) and an optional `cap` (`{"type": "count|budget", "value"}` — records for count, cents for budget). The list is quoted through the same summary code path `browse_leads(summary=True)` uses, then checkout is opened against exactly that quote — if the price rule or the count moved in between, the server answers 409 with the fresh quote and nothing is minted. **Billing base is `sellable` (a matching record whose filing names a person), never `matching`.** name and address $0.25 per record · plus one verified phone or email $0.50 · plus both $0.70 (price rule v1; live prices always come from the summary call's `prices` block). The selected records are frozen when the link is minted, so what is billed is what is delivered. `product_id` buys nothing: fixed-price shelf products were replaced by starter lists with live counts. Passing one returns an error that names the next calls — `list_starters` (or `interpret_list`), `quote_list`, `checkout_list`. Every purchase is one-time; a standing order is set up from a paid order's receipt,…
| Name | Type | Req | Description |
|---|---|---|---|
| cap | – | – | – |
| connector_crm_name | – | – | – |
| crm_connection_id | – | – | – |
| customer_email | – | – | – |
| delivery | string | – | – |
| filters | – | – | – |
| lane | string | – | – |
| list_id | – | – | – |
| offer_code | – | – | – |
| product_id | – | – | – |
| states | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
data_quality_scorecard Data quality scorecard ~703
How 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; the address's own state agrees with its ZIP), 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 selling in {state}?" and to track data-quality work the way classification is tracked. A small failure count can round away to a clean-looking 100.0 at both the check and the headline level (e.g. 1 defect in 300+ rows). `residual_defects` (total failing records summed across checks) and `checks_with_residual_defects` (how many distinct checks still have a nonzero failure) ride beside the score so a 100.0 is never reported as "zero defects" without checking those two fields first. The payload also carries a fifth, record-centric **coverage** dimension (the `coverage` block + `dimensions.coverage`): per pipeline stage, how many records that brain has NEVER stamped (`gap`), plus a stale-version count where the brain persists one. Free-chain checks are scored; paid stages (skip trace / gap-fill / validation / LLM passes) are reported but unscored — enrichment is spent per order, so an un-enriched set of records is posture, not a defect. Coverage deliberately does not move the headline `score`. Each check includes `browse_filters` (a `missing_stage` filter): the exact set of…
| Name | Type | Req | Description |
|---|---|---|---|
| sample_limit | integer | – | – |
| state | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
describe_surface Describe GoodLeads ~197
What GoodLeads is, who buys it and how every record is built — call this to explain or vet us; to price a list, start with interpret_list. It is for anyone who wins by reaching a business owner first: to sell what a new owner needs now, to be the name they already know a year from now, to spot their own customer starting a business, or to build a product on every new business. Never rule your owner out from this description — pass what they sell to `interpret_list` and read the free count from `quote_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.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
explain_concept Explain a concept ~603
Translate a classification code, or map YOUR word for a concept to this surface's fields — ask before concluding absence. **Codes — the crosswalk.** Every record carries NAICS, SIC, the Google Business category and the payment MCC, tied together by our own taxonomy. Give ANY one — `term` "MCC 5812", "SIC 1711", "NAICS 238220", "google category plumber" (or `system` = naics / sic / mcc / google_category plus `code`) — and get the other three back: the equivalents in each system, our industry, the ready-to-use `filters` for each system, and a live count (`total` is the whole crosswalk neighborhood; `total_exact` only industries that carry the code itself; each industry is marked `exact` or `related`). A code we do not carry directly WIDENS — to its parent group, then to the industries the crosswalk ties it to — and `widened` says which step it took; an empty answer means nothing relates to it, and names where to go next. A trade word works too — "plumbers", "electrician", "lawyer", "locksmith": it is read against the NAME of every code at every level (the Google category "Plumber", the NAICS title "Offices of Lawyers", the SIC group "Legal Services", the MCC description), and the answer says which level named it and gives the broader parent. A SIC or NAICS prefix (`17`, `238`) is a whole group. A payments seller starts from an MCC, a web designer from a Google category, a lender from NAICS — all reach the same list. Hand the `filters` to `browse_leads` / `quote_list`. **Concepts.** 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` expla…
| Name | Type | Req | Description |
|---|---|---|---|
| code | – | – | – |
| system | – | – | – |
| term | string | yes | – |
No output schema declared.
No examples provided.
field_fill_rates Field fill rates ~373
How complete is every column in the file a buyer receives — exact counts, one call. Answers "what share of the records carries a value in each field?" for every delivered column, in the file's own order. It is exact (counted from stored values over every sellable record, not sampled) and always current (refreshed whenever the data changes; `computed_at` dates it). Use it before promising a buyer a field, to compare states, or to see which columns are thin. How "filled" is defined: text and category columns need a non-blank value; numbers and dates need any value (0 counts); true/false flags need any known value (a known false counts) — except `has_phone` and `has_email`, which mean "has one" and count only when true. The records counted are the sellable cohort Browse returns by default (`total`). Each column row carries `basis`: `counted` (exact), `stamped at delivery` (the file writes a value on every row, fill 100%), or `not countable yet` (with a `reason`; `filled` and `fill_pct` are null — never guessed). Args: state: Two-letter state code (e.g. `FL`). Omit for all live states together. Returns: `{computed_at, scope, cohort: "sellable", total, columns: [{column, group, filled, fill_pct, basis, reason?}], definition}`, or `{"status": "computing"}` before the first snapshot exists. Aggregate counts only — no records and no contact details.
| Name | Type | Req | Description |
|---|---|---|---|
| state | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
find_lead_by_glid Look up one lead by ID ~308
One 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). Includes `history`: every event the state has published about this business, newest first, each with `published_date`, `event` (plain words) and `effective_date` when it differs; for a business that changed form, `prior_entity_ref` and `prior_entity_formation_date` name the record it came from. The `entity` carries `filing_kind` and `lead_class`. The history is free without a key; only the person is masked. Raises ValueError if the id is not shaped like a Lead ID or no record matches.
| Name | Type | Req | Description |
|---|---|---|---|
| glid | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
interpret_list Interpret a list request ~650
Start 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", "SIC 1711", "MCC 5812", "google category plumber") 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`, `email_primary`, `phone_primary`, `registered_agent_name`). Every classification system is an entry point — a seller who thinks in MCC, SIC, NAICS or Google category gets the same list. A code we do not carry directly WIDENS to its parent group or the industries the crosswalk ties it to, and `assumed` names the step; to see the other systems' equivalents for a code, call `explain_concept`. When the buyer asked a question or raised an objection instead ("where does this come from", "is it legal to call", "how fresh"), the response also carries `answer` (`{family, headline, body, next_step, facts}`) — our answer, in our words, written to be shown to the buyer as is. When the ask pulls two ways — the newest records AND a phone to call — `alternatives` come back live-quoted (`quote: {records, total_cents, unit_cents}`, a `why`, one `recommended`): call today · mail first with phones verified on order · a standing order. Orders are per record with no minimums, so a small first order works. The returned shape is the input `quote_list` takes for the count and the p…
| Name | Type | Req | Description |
|---|---|---|---|
| current | – | – | – |
| state | – | – | – |
| text | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
list_filterable_fields Filterable fields and grammar ~959
The 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. Each field lists the `allowed_values` when its vocabulary is closed and its `accepted_words` — the buyer's own words that mean a stored value ("cell" → mobile, "CST" → the Central zones) — so you never have to learn our spellings; typed values are understood anyway. Args: section: `fields` (default) — every one of the 86 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 77 fields `sort` accepts, `masked` flags `contact_name`, `email_primary`, `phone_primary`, `registered_agent_name` (redacted for keyless callers, who may not filter the summary on them), `allowed_values` lists the vocabulary where it is enumerable (tiers in rank order, canonical `status` / `entity_type` values — identical across all states), `job` names the jobs-ladder step the field serves (LINK / CHOOSE / REACH, or IDENTITY), `absence` states what a zero/null means per state where states differ, and `synonyms` lists the buyer words that name this field; canonical-vocabulary fields additionally carry `"canonical": true`, the `"values"` list and a `"raw_variant"` naming the sibling field that filters the raw state-specific SOS codes. `grammar` — the leaf and group shapes (`and` / `or` / `not`), the operator row per field type and the pseudo-field overrides, the null semantics of the negative operators, and the sort contract (multi-key…
| Name | Type | Req | Description |
|---|---|---|---|
| section | string | – | – |
No output schema declared.
No examples provided.
list_live_states Live states ~105
Where 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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_products Shelf (starter lists) ~357
The shelf — ready-made business type × state lists, with live counts. Returns the same live document `list_starters` returns — `{"count": N, "starters": [...]}`, one entry per (state, business type) with its display `label`, the exact `filters` it 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) — plus a `note`. The shelf is the starter lists: every count here is live, the price is quoted per record by `quote_list`, and the payment link comes from `checkout_list`. Every purchase is one-time; a buyer who wants new filings to keep coming sets up a standing order from a paid order's receipt, paid up front for the run. There are no fixed-price products and nothing here carries a `product_id`: pass a starter's `filters` to `quote_list` for the exact count and price, then to `checkout_list` for the link. name and address $0.25 per record · plus one verified phone or email $0.50 · plus both $0.70 (price rule v1; live prices always come from the summary call's `prices` block). Only sellable records (the filing names a person) are ever billed, and the selected records are frozen when the link is minted, so what is billed is what is delivered. Evaluate before buying: `browse_leads` with the same `filters` shows real masked records for free.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
list_starters Starter lists ~196
Ready-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.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
quote_list Quote a list ~1,763
What 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, OR, 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 zero by design the payload adds `zero_reasons` — a state that never publishes the value, or a channel asked of records too new to carry one yet: the morning after the state posts a filing the record carries the name and mailing address; phone and email are verified when you order. Each reason names the widened count (`nearest_alternative`, e.g. "last 90 days: 99 with a phone") and the filters that reach it (`alternative_filters`), so a zero is never silent. **Values are understood, not matched literally.** Filter values are understood, not matched literally: "residential", "cell", "CST", "Texas", "on fire", "Denver metro" and "working from home" all resolve (case, spacing, plurals and reviewed words), and every response echoes what was understood in `interpreted_values` (typed → stored). A value that matched nothing comes back with `value_hints` — the closest real values and, for a closed list, every allowed value. Read both before telling a human a count is zero or a field is missing. **Billing discipline — read before quoting money to anyone.** Only `sellable` records — matching records whose filing names a person —…
| Name | Type | Req | Description |
|---|---|---|---|
| cap | – | – | – |
| filters | – | – | – |
| group_by | – | – | – |
| include_existing | boolean | – | – |
| include_held | boolean | – | – |
| lane | – | – | – |
| list_id | – | – | – |
| offer_code | – | – | – |
| states | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
How do I install the GoodLeads MCP server?
GoodLeads is a hosted endpoint at https://mcp.goodleads.club/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.goodleads.club
claude mcp add --transport http club-goodleads-new-business-owner-contacts 'https://mcp.goodleads.club/mcp'
What is the GoodLeads MCP server?
GoodLeads is an MCP server listed in the public MCP registry as club.goodleads/new-business-owner-contacts. Find new business owner contacts the morning the state posts a filing. Preview free, pay per record. This page covers its hosted endpoint (https://mcp.goodleads.club/mcp).
Is the GoodLeads MCP server safe to use?
GoodLeads scores 74 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the GoodLeads MCP server expose?
GoodLeads exposes 14 tools: find_lead_by_glid, data_quality_scorecard, field_fill_rates, browse_leads, interpret_list, and 9 more. Their descriptions and schemas cost roughly 11,237 tokens of context every time the server is loaded.
Does the GoodLeads MCP server require authentication?
No. We connected to GoodLeads without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the GoodLeads MCP server still maintained?
GoodLeads is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.