LocationLists
US business location data: search, sample, count, query rows or buy CSVs (Stripe or x402 USDC).
| Endpoint | https://locationlists.com/mcp (streamable-http) |
|---|---|
| Registry version | 1.2.0 |
| Now | 16 tools · grade F (30) · pin ts_ed37e96156f7eba8b6ab41b0fd33b836 · protocol 2025-06-18 |
| First / last listed | 2026-11-01 03:00 UTC / 2026-11-01 03:00 UTC |
| Grade over time | 2026-11-01: F (30), 16 tools |
Is this your server? Own a server? ToolFit hosted watch re-checks it every 24 h ($0.25 per 30 days) or 6 h ($0.60) and sends you an HMAC-signed webhook when its tools or grade change: POST https://api.youraitools.co/toolfit/v1/watch. To opt out, see About & opt-out.
Tools: search_datasets relate_locations count_by_area cotenancy get_dataset count_locations get_sample request_list send_feedback email_quote get_quote create_checkout check_order create_query_checkout query_locations buy_dataset
search_datasets | Find LocationLists datasets by brand, kind of business or industry (e.g. 'bobcat', 'restaurants', 'bank branches', 'dental practices', 'hardware stores'). Returns EVERY matching dataset, best first, with slug, name, business type, industry, record count, coverage, whether it can be searched by distance (distanceSearch), and page URL. A kind of business or an industry in the query matches every dat params: query, category, limit, kind, state |
relate_locations | Free. How one set of places relates to another, by straight-line distance. The base set is the usual dataset / datasets / category plus filters; relate.anchor is the other set, given the same way. Modes: nearest (each base row's k<=3 nearest anchors with miles), count_within (rank base rows by how many anchors are within radius_miles), within_any (base rows with at least one anchor within radius_m params: dataset, datasets, category, exclude, state, city, county, zip, metro, areas_in, where, near, area_where, area_columns, opendata, relate*, total |
count_by_area | Free, counts only. Counts places per county / zip / state / metro for 1 to 4 labeled sets (each a dataset, datasets or category plus filters), and compares them: has (areas with at least one of every listed set) and lacks (areas with none of any listed set). E.g. counties that have set a but no set b; ZIPs where a closure-filtered set exists and another set still has places. Rows that cannot be pl params: by*, sets*, has, lacks, in_state, area_where, per, per_field, area_columns, order_by, limit, offset, all, top_values, with_sample |
cotenancy | Free, counts only. How two sets of places sit together: the share of set a within radius_miles of set b and of b within radius_miles of a, how many places overlap, and the county / zip / state / metro areas that have both, only a, or only b (top 10 of each named). Each set is a dataset, datasets or category plus filters, the same as count_locations; any US brand or kind of place works, including O params: a*, b*, radius_miles, by, in_state |
get_dataset | Full record for one dataset: fields with descriptions, record and state counts, coverage measured on the rows (a list in 14 states says "partial U.S.: 14 states"; coverageDetail lists the states, rows per state and the states with none), whether it can be searched by distance, advertised refresh cadence AND the real last-modified date of the file, FAQs, sample URL and the dataset's page on locatio params: slug* |
count_locations | Free. How many rows of one dataset match a filter — on geography AND any other column (e.g. nonprofits with revenue_amt gt 2000000, dealers with dealerClass eq 'Elite'). Also reports how many rows were excluded only because a tested column was blank, so a thin column is not mistaken for a small answer; a small or empty answer says how many rows each condition removed and what the column really hol params: dataset, state, city, county, zip, where, near, area_where, area_columns, metro, areas_in, datasets, category, exclude, permits, total, limit, offset, order_by |
get_sample | Free. Real rows from the live file, as JSON plus CSV text. Show these to the user so they can judge the fields and quality. Without filters: up to 10 rows spread across the whole dataset. With filters (the same ones count_locations takes: city, state, county, zip, metro, `where` on any column, areas_in (county / ZIP / metro / state ids from count_by_area), area_where, area_columns (Census figures params: slug, rows, state, city, county, zip, where, near, area_where, area_columns, metro, areas_in, datasets, category, exclude, permits, total, shape |
request_list | Ask LocationLists to add a list we do not have yet. Use it when search_datasets finds nothing that fits, or the user wants a brand, place or kind of business we do not publish. BEFORE calling: ask the user whether to send the request, and ask for their email so we can tell them when the list is ready. Pass an email only if the user gave it to you in this conversation; never guess or invent one. Ca params: topic*, email, email_declined, use_case, details, name, company |
send_feedback | Send a message to the LocationLists team: wrong or missing data in a dataset, something that did not work, a pricing question, an idea, or anything else. Ask the user before sending and use their words. Ask for their email so the team can reply, and pass it only if they gave it; never guess or invent one. Called with neither email nor email_declined, it sends nothing and asks for the email. Free. params: message*, email, email_declined, category, dataset |
email_quote | Free. Emails the user a plain-English quote for exactly this request: how many rows match, the card price, a few of the matches and a card checkout link, so they can pay later, from any device, or forward it to whoever holds the card. Takes the same arguments as count_locations: dataset, or datasets / category with total, plus filters. BEFORE calling: ask the user for their email and whether to se params: email*, dataset, state, city, county, zip, where, near, area_where, area_columns, metro, areas_in, datasets, category, exclude, permits, total |
get_quote | Line-item prices and total for a list of dataset slugs, each with how it is sold (soldBy: file, row, or both) — the same rule create_checkout, buy_dataset, create_query_checkout and query_locations enforce, so a quote never offers a route checkout refuses. A list sold by the row only (an Overture Maps list) is quoted at its per-row rate with the route named, not as a file; count_locations with fil params: slugs* |
create_checkout | Opens a Stripe Checkout session for one dataset and returns the payment URL plus the session id. Give the URL to the user to pay (card, Apple Pay, Google Pay). After payment Stripe emails them a permanent download link; use check_order with the session id to confirm and fetch it. Does not charge anything by itself. params: slug*, email |
check_order | Given a Stripe Checkout session id (cs_…), reports whether it is paid and, if so, returns the permanent download link for the CSV. Works for whole files, filtered rows and combined (several-dataset) orders. Any download link takes ?shape=hubspot or ?shape=salesforce for CRM-ready column names (every column kept). params: sessionId* |
create_query_checkout | For buyers paying by card (no wallet needed): opens a Stripe Checkout for just the rows of one dataset that match a filter, and returns the payment URL to give the user. Takes the same filters as count_locations (state/city/county/zip, `where` on any column, `near`, `order_by`) and up to 10,000 rows. It counts the matches first, so the buyer pays only for rows that exist: the data price is the sam params: dataset, state, city, county, zip, where, near, area_where, area_columns, metro, areas_in, datasets, category, exclude, permits, total, relate, shape, order_by, limit, email |
query_locations | Return matching rows from one dataset, filtered on ANY of its columns — state/city/county/zip shortcuts plus `where` conditions with numeric comparisons (e.g. [{field:"revenue_amt",op:"gt",value:2000000}]), sorted with `order_by` and paged with `offset`. `near` ({place:"Topeka, KS"}, a zip, or lat+lng, optional radius_miles) returns the closest rows first with distance_miles, on lists with coordin params: dataset, state, city, county, zip, where, near, area_where, area_columns, metro, areas_in, datasets, category, exclude, permits, total, relate, shape, order_by, offset, limit |
buy_dataset | Buy an ENTIRE dataset outright and get a permanent download link for the CSV. Pays once in USDC on Base, at the same list price a human pays by card — no account and no checkout page.\n\nPrefer this over repeated query_locations calls whenever you want most of a file. Metered queries are priced per row and deliberately cost more than the file if you assemble it that way, so past a few hundred rows params: dataset* |
Entries describe changes in tool definitions. They are not statements about a server, its quality or its author. The grade measures how the tool definitions fit model providers (token cost, schema compatibility, confusable names) as scored by the ToolFit engine at the time of the listing. JSON: append .json. Opt-out: how or hello@youraitools.co.