Search 14.9M US businesses and export leads to CSV. A low-cost Google Places API alternative.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer <your Storefinch API key>. Get a free key at https://storefinch.com
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Build a lead list as a CSV download link (valid 24 h): name, category, address, phone, website, email, socials, coordinates, source and license per row. Needs a category and a location. Rows count against the plan's monthly export quota; preview shows the first rows.
Category ids from find_categories, e.g. ["plumbing"].
City name as written in addresses, e.g. "Austin". Exact match; for a metro area prefer near + radius_km.
Center point for a radius search: "City, ST", a 5-digit ZIP, or "lat,lon". Results are sorted by distance.
2-letter US state code, e.g. "TX".
5-digit ZIP code.
Radius in km around `near` (max 100).
Minimum Overture confidence that the place exists (0-1). 0.77 is a good default; lower adds more, noisier rows.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http storefinch https://storefinch.com/mcp \ --header 'Authorization: Bearer YOUR_TOKEN'
Headers
Authorization (required): Bearer <your Storefinch API key>. Get a free key at https://storefinch.comBuild a lead list as a CSV download link (valid 24 h): name, category, address, phone, website, email, socials, coordinates, source and license per row. Needs a category and a location. Rows count against the plan's monthly export quota; preview shows the first rows.
| Argument | Type | Description |
|---|---|---|
| city | any | City name as written in addresses, e.g. "Austin". Exact match; for a metro area prefer near + radius_km. |
| near | any | Center point for a radius search: "City, ST", a 5-digit ZIP, or "lat,lon". Results are sorted by distance. |
| state | any | 2-letter US state code, e.g. "TX". |
| category* | array | Category ids from find_categories, e.g. ["plumbing"]. |
| max_rows | integer | |
| postcode | any | 5-digit ZIP code. |
| radius_km | number | Radius in km around `near` (max 100). |
| require_email | boolean | |
| require_phone | boolean | |
| min_confidence | number | Minimum Overture confidence that the place exists (0-1). 0.77 is a good default; lower adds more, noisier rows. |
| require_website | boolean |
{
"type": "object",
"title": "export_leadsArguments",
"required": [
"category"
],
"properties": {
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "City",
"default": null,
"description": "City name as written in addresses, e.g. \"Austin\". Exact match; for a metro area prefer near + radius_km."
},
"near": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Near",
"default": null,
"description": "Center point for a radius search: \"City, ST\", a 5-digit ZIP, or \"lat,lon\". Results are sorted by distance."
},
"state": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "State",
"default": null,
"description": "2-letter US state code, e.g. \"TX\"."
},
"category": {
"type": "array",
"items": {
"type": "string"
},
"title": "Category",
"minItems": 1,
"description": "Category ids from find_categories, e.g. [\"plumbing\"]."
},
"max_rows": {
"type": "integer",
"title": "Max Rows",
"default": 1000,
"maximum": 50000,
"minimum": 1
},
"postcode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Postcode",
"default": null,
"description": "5-digit ZIP code."
},
"radius_km": {
"type": "number",
"title": "Radius Km",
"default": 25,
"maximum": 100,
"description": "Radius in km around `near` (max 100).",
"exclusiveMinimum": 0
},
"require_email": {
"type": "boolean",
"title": "Require Email",
"default": false
},
"require_phone": {
"type": "boolean",
"title": "Require Phone",
"default": true
},
"min_confidence": {
"type": "number",
"title": "Min Confidence",
"default": 0.77,
"maximum": 1,
"minimum": 0.5,
"description": "Minimum Overture confidence that the place exists (0-1). 0.77 is a good default; lower adds more, noisier rows."
},
"require_website": {
"type": "boolean",
"title": "Require Website",
"default": true
}
}
}Find category ids to use with search_places / export_leads. Returns matching ids, their place in the taxonomy, and how many US places each has. Broader ids include all their subcategories.
| Argument | Type | Description |
|---|---|---|
| query* | string | Plain words for a kind of business, e.g. "roofers", "dentist", "italian restaurant". |
{
"type": "object",
"title": "find_categoriesArguments",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"title": "Query",
"description": "Plain words for a kind of business, e.g. \"roofers\", \"dentist\", \"italian restaurant\"."
}
}
}Full record for one place: all contact fields, coordinates, category path, data sources and license, and the latest website check if one was run.
| Argument | Type | Description |
|---|---|---|
| place_id* | string | Place id from search_places or export_leads. |
{
"type": "object",
"title": "get_placeArguments",
"required": [
"place_id"
],
"properties": {
"place_id": {
"type": "string",
"title": "Place Id",
"description": "Place id from search_places or export_leads."
}
}
}Search US businesses and places by category, name and location. Needs at least one location filter or a name. Returns up to 100 compact results per call plus the total match count; use export_leads instead when you need more than a few pages.
| Argument | Type | Description |
|---|---|---|
| city | any | City name as written in addresses, e.g. "Austin". Exact match; for a metro area prefer near + radius_km. |
| name | any | Substring of the business name, e.g. "Starbucks". |
| near | any | Center point for a radius search: "City, ST", a 5-digit ZIP, or "lat,lon". Results are sorted by distance. |
| limit | integer | |
| state | any | 2-letter US state code, e.g. "TX". |
| offset | integer | |
| category | any | Category ids from find_categories, e.g. ["roofing"]. Matches the category and all of its subcategories ("dental_clinic" includes general_dentistry, orthodontics, ...). |
| postcode | any | 5-digit ZIP code. |
| radius_km | number | Radius in km around `near` (max 100). |
| require_email | boolean | |
| require_phone | boolean | |
| min_confidence | number | Minimum Overture confidence that the place exists (0-1). 0.77 is a good default; lower adds more, noisier rows. |
| require_website | boolean |
{
"type": "object",
"title": "search_placesArguments",
"properties": {
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "City",
"default": null,
"description": "City name as written in addresses, e.g. \"Austin\". Exact match; for a metro area prefer near + radius_km."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name",
"default": null,
"description": "Substring of the business name, e.g. \"Starbucks\"."
},
"near": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Near",
"default": null,
"description": "Center point for a radius search: \"City, ST\", a 5-digit ZIP, or \"lat,lon\". Results are sorted by distance."
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 25,
"maximum": 100,
"minimum": 1
},
"state": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "State",
"default": null,
"description": "2-letter US state code, e.g. \"TX\"."
},
"offset": {
"type": "integer",
"title": "Offset",
"default": 0,
"maximum": 10000,
"minimum": 0
},
"category": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Category",
"default": null,
"description": "Category ids from find_categories, e.g. [\"roofing\"]. Matches the category and all of its subcategories (\"dental_clinic\" includes general_dentistry, orthodontics, ...)."
},
"postcode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Postcode",
"default": null,
"description": "5-digit ZIP code."
},
"radius_km": {
"type": "number",
"title": "Radius Km",
"default": 10,
"maximum": 100,
"description": "Radius in km around `near` (max 100).",
"exclusiveMinimum": 0
},
"require_email": {
"type": "boolean",
"title": "Require Email",
"default": false
},
"require_phone": {
"type": "boolean",
"title": "Require Phone",
"default": false
},
"min_confidence": {
"type": "number",
"title": "Min Confidence",
"default": 0.77,
"maximum": 1,
"minimum": 0.5,
"description": "Minimum Overture confidence that the place exists (0-1). 0.77 is a good default; lower adds more, noisier rows."
},
"require_website": {
"type": "boolean",
"title": "Require Website",
"default": false
}
}
}Check whether each place's listed website is live right now (status per place: live, live_bot_protected, redirected_elsewhere, page_not_found, dead_domain, unreachable, ...). Use before outreach. Each place checked counts as one call.
| Argument | Type | Description |
|---|---|---|
| place_ids* | array | Up to 25 place ids to check. |
| force_recheck | boolean | Ignore cached results (cached up to 30 days). |
{
"type": "object",
"title": "verify_websitesArguments",
"required": [
"place_ids"
],
"properties": {
"place_ids": {
"type": "array",
"items": {
"type": "string"
},
"title": "Place Ids",
"maxItems": 25,
"minItems": 1,
"description": "Up to 25 place ids to check."
},
"force_recheck": {
"type": "boolean",
"title": "Force Recheck",
"default": false,
"description": "Ignore cached results (cached up to 30 days)."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 6, 2026.