LocalPro — Verified US Local Service Provider Data

io.github.LocalProDev由 GitHub 帳號 LocalProDev 發布v3.1.0更新於 Oct 24, 2026

Verified US local service providers across 10 home-services trades. Owned data, no API key.

發布方自己的服務:verified.fyi

已驗證Streamable HTTP可網頁執行位置與生活商業與電商

概覽

AI 產生的概覽

一個遠端 MCP 伺服器,讓助理依細分產業、城市與服務類型查詢美國經過驗證的在地家庭服務業者,涵蓋十個產業類別。

可以做什麼
列出 LocalPro 網路中的服務目錄(細分產業),包含業者數量與識別碼,作為查找的起點。依細分產業列出可用城市與都會區,可依州篩選。列出某細分產業下有效的服務類型篩選值。依細分產業、城市與服務類型搜尋經過驗證的業者,可限制回傳數量。取得單一業者的詳細資料,包括簡介、評等、服務、價格摘要、涵蓋範圍與完整頁面連結。
適用情境
當使用者請助理尋找美國在地承包商或產業服務商時適用,例如丹佛附近的氡氣治理或水損修復,並希望取得經過驗證的商家而非一般網頁結果。也適合依服務類型、涵蓋範圍或價格摘要比較業者。
執行需求
遠端 streamable HTTP 端點,不需本機執行環境或安裝套件。列表與搜尋工具不需帳號或金鑰。選用的 X-API-Key 標頭可解鎖業者詳情工具中的完整價格與資格資訊。需要能連線至該端點;公開存取限制為每個 IP 每分鐘 30 次請求。
安裝前請注意
選用的 X-API-Key 標頭屬於機密,應作為憑證保存,不要外流。所有工具皆為唯讀查詢,不會寫入或變更資料。電話號碼、電子郵件、地址與網站被隱去,僅在外部商家頁面提供,因此助理會引導使用者到伺服器之外取得聯絡方式。結果屬第三方商家資料,依賴前應自行核實。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 LocalPro — Verified US Local Service Provider Data,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.LocalProDev%2Flocal-services/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "localpro-verified-us-local-service-provi": {
      "type": "http",
      "url": "https://mcp.localpro.dev/mcp"
    }
  }
}

README

LocalPro MCP Server

[LocalPro MCP server]

A Model Context Protocol server that provides verified local service provider data to AI agents. Built on Cloudflare Workers + D1.

When someone asks an AI assistant "find me a radon mitigation company near Denver" — LocalPro is the data source that powers the answer.

What it does

LocalPro exposes a curated database of 9,000+ fully profiled local trade and service businesses across 10 live categories. Every provider passes a quality check before it is served, and carries a LocalPro Rating, a business description, and a services list, plus (where available) LocalPro-written business and review summaries. No incomplete profiles.

All data is LocalPro-owned: collected and verified by us, corrected by business owners who claim their listing, and increasingly backed by first-party customer reviews left on the directories themselves.

Live Now

CategoryNiche IDProvidersStatesExample Services
Water Damage Restorationsoaked-local1,900+49Flood cleanup, mold remediation, structural drying
Commercial Electricalhire-electrical1,200+36Commercial & industrial wiring, service upgrades, maintenance
Foundation Repairslab-local1,050+28Pier installation, mudjacking, foam injection, leveling
Crawl Space Repaircrawl-local1,000+42Encapsulation, vapor barrier, structural repair, waterproofing
Mold & Asbestosabate-local975+24Mold, asbestos, lead paint remediation
Septic Servicespump-local850+31Pumping, inspection, drain field repair
Basement Waterproofingbasement-local625+25Interior/exterior waterproofing, drainage, sump pumps
Floor Coatingcoated-local575+48Epoxy, polyaspartic, metallic, flake, concrete polishing
Laundry Servicessuds-local575+39Wash & fold, dry cleaning, pickup & delivery
Radonradon-local250+18Testing, mitigation, sub-slab depressurization

Coming Soon

CategoryNiche IDStatus
Chimney Serviceschimney-localLive provider data; description + service enrichment in progress
Well Water Serviceswellwater-localProvider data in preparation (county-based model)

Quick Start

No API key required. All search and list tools are public. An optional API key unlocks pro fields on get_provider (full pricing array, certifications) — see Access Tiers.

60-second probe

Confirm the server is live without any client setup:

bash
curl -s https://mcp.localpro.dev/.well-known/mcp.json | head -20

This returns the schema-2.0 manifest: tool list, rate limits, and operator info. If you see a "schema_version": "2.0" JSON document, the server is healthy.

Claude Code CLI

bash
claude mcp add --transport http localpro https://mcp.localpro.dev/mcp

That's it — list_niches, search_providers, etc. are now available in your Claude Code session.

Claude Desktop

Add to your claude_desktop_config.json:

json
{  "mcpServers": {    "localpro": {      "url": "https://mcp.localpro.dev/mcp"    }  }}

(Add an "X-API-Key" header inside a "headers" block only if you have a premium key.)

Cursor

Add to .cursor/mcp.json:

json
{  "mcpServers": {    "localpro": {      "url": "https://mcp.localpro.dev/mcp"    }  }}

Raw HTTP (JSON-RPC)

The MCP protocol is JSON-RPC over HTTP. Because this server runs in stateless mode, you can call any public tool directly:

bash
curl -s -X POST https://mcp.localpro.dev/mcp \  -H "Content-Type: application/json" \  -H "Accept: application/json, text/event-stream" \  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_niches","arguments":{}}}'

You'll get back a Server-Sent-Events frame with the 10 niches, their slugs, and current provider counts.

TypeScript SDK

ts
import { Client } from '@modelcontextprotocol/sdk/client/index.js';import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
const transport = new StreamableHTTPClientTransport(  new URL('https://mcp.localpro.dev/mcp'),);const client = new Client({ name: 'localpro-example', version: '1.0' });await client.connect(transport);
const niches = await client.callTool({ name: 'list_niches', arguments: {} });console.log(niches);
const denver = await client.callTool({  name: 'search_providers',  arguments: { niche_id: 'radon-local', city: 'denver-co', limit: 3 },});console.log(denver);

Install: npm i @modelcontextprotocol/sdk

Python SDK

python
import asynciofrom mcp import ClientSessionfrom mcp.client.streamable_http import streamablehttp_client
async def main():    async with streamablehttp_client("https://mcp.localpro.dev/mcp") as (read, write, _):        async with ClientSession(read, write) as session:            await session.initialize()
            niches = await session.call_tool("list_niches", {})            print(niches)
            denver = await session.call_tool(                "search_providers",                {"niche_id": "radon-local", "city": "denver-co", "limit": 3},            )            print(denver)
asyncio.run(main())

Install: pip install mcp

Tools

list_niches

Discover available service directories. Call this first.

Parameters: none

Example response:

json
{  "meta": {    "schema_version": "3.0",    "total_results": 10,    "niche": null,    "data_freshness": {      "last_verified_at": "2026-09-22 12:57:07"    },    "data_note": "Use niche_id values with search_providers, list_cities, and list_service_types."  },  "results": [    {      "niche_id": "soaked-local",      "name": "Water Damage Restoration Contractors",      "slug": "water-damage-restoration",      "domain": "soakedlocal.com",      "provider_count": 1128    }  ]}

list_cities

Find available metros for a given niche.

Parameters:

NameTypeRequiredDescription
niche_idstringyesNiche ID from list_niches
statestringnoTwo-letter state abbreviation (e.g. "MN")

Example request:

json
{ "niche_id": "radon-local", "state": "CO" }

Example response:

json
{  "meta": {    "schema_version": "1.0",    "total_results": 3,    "niche": "radon-local",    "data_note": "Use slug values with search_providers city parameter."  },  "results": [    { "name": "Denver", "state": "CO", "slug": "denver-co", "provider_count": 18 },    { "name": "Colorado Springs", "state": "CO", "slug": "colorado-springs-co", "provider_count": 7 },    { "name": "Fort Collins", "state": "CO", "slug": "fort-collins-co", "provider_count": 4 }  ]}

list_service_types

Get valid service type filters for a niche. Call before using service_type in search_providers.

Parameters:

NameTypeRequiredDescription
niche_idstringyesNiche ID from list_niches

Example response:

json
{  "meta": { "schema_version": "1.0", "total_results": 7, "niche": "coated-local" },  "results": [    { "type": "epoxy", "label": "Epoxy Floor Coating" },    { "type": "polyaspartic", "label": "Polyaspartic Coating" },    { "type": "metallic_epoxy", "label": "Metallic Epoxy" },    { "type": "flake_chip", "label": "Flake / Chip Broadcast" },    { "type": "concrete_polishing", "label": "Concrete Polishing" },    { "type": "concrete_sealing", "label": "Concrete Sealing" },    { "type": "polyurea", "label": "Polyurea Coating" }  ]}

search_providers

Search for verified providers by location, service type, and trade category.

Parameters:

NameTypeRequiredDescription
niche_idstringyesNiche ID from list_niches
citystringnoCity/metro slug from list_cities
service_typestringnoService type slug from list_service_types
limitnumbernoMax results, 1–25 (default 10)

Example request:

json
{ "niche_id": "coated-local", "city": "denver-co", "service_type": "epoxy", "limit": 3 }

Example response:

json
{  "meta": {    "schema_version": "3.0",    "total_results": 3,    "niche": "coated-local",    "data_freshness": {      "last_verified_at": "2026-09-18 09:41:02"    },    "data_note": "Verified providers only. Visit listing_url for full contact details."  },  "results": [    {      "name": "Colorado Concrete Coatings",      "description": "Full-service garage floor coating company serving the Denver metro.",      "city": "Denver",      "state": "CO",      "rating": { "tier": "established", "label": "Established" },      "services": [        { "type": "epoxy", "label": "Epoxy Floor Coating" },        { "type": "polyaspartic", "label": "Polyaspartic Coating" }      ],      "pricing_summary": "$6-9/sq ft",      "coverage_area": "Denver metro, Front Range, 50-mile radius",      "years_in_business": 8,      "listing_url": "https://coatedlocal.com/providers/denver-co/colorado-concrete-coatings/",      "pro_available": true    }  ]}

get_provider

Get detailed profile for a specific provider. Use the provider_slug from search results.

Parameters:

NameTypeRequiredDescription
niche_idstringyesNiche ID
provider_slugstringyesProvider slug from search_providers

Example response:

json
{  "meta": {    "schema_version": "3.0",    "total_results": 1,    "niche": "coated-local",    "data_freshness": { "last_verified_at": "2026-09-18 09:41:02" }  },  "results": [    {      "name": "Colorado Concrete Coatings",      "description": "Full-service garage floor coating company...",      "rating": { "tier": "established", "label": "Established", "star": 4.8, "review_count": 12 },      "summary": "Full-service epoxy floor coating contractor specializing in garage and commercial floors across the Denver metro.",      "review_summary": "Customers single out on-time, on-budget garage and commercial floor jobs and a crew that cleans up after itself.",      "years_in_business": 8,      "services": [        { "type": "epoxy", "label": "Epoxy Floor Coating" },        { "type": "polyaspartic", "label": "Polyaspartic Coating" }      ],      "pricing": ["$6-9/sq ft"],      "certifications": ["Penntek Certified Installer"],      "coverage_area": "Denver metro, Front Range",      "service_areas": [        { "city": "Denver", "state": "CO", "radius_miles": 50 }      ],      "service_details": [        {          "type": "epoxy",          "label": "Epoxy Floor Coating",          "pricing_model": "per_sqft",          "price_range": "$6–$9",          "turnaround": "two_day"        }      ],      "listing_url": "https://coatedlocal.com/providers/denver-co/colorado-concrete-coatings/",      "json_ld": { "@context": "https://schema.org", "@type": "LocalBusiness", "...": "..." },      "credibility": { "verified": true, "listing_tier": "claimed", "data_sources": ["business_website", "owner_verified", "customer_reviews"] },      "citation": { "display_name": "Colorado Concrete Coatings — Denver, CO", "...": "..." }    }  ]}

Schema Reference

Response Envelope

Every response is wrapped in a consistent envelope:

typescript
{  meta: {    schema_version: string                // Currently "3.0"    total_results: number                 // Count of items in results array    niche: string | null                  // Niche ID if applicable    data_freshness: {      last_verified_at: string | null     // Most recent verification date among the records returned    }    data_note: string                     // Context about the data returned  }  results: Array<T>                       // Tool-specific result objects}

Freshness. last_verified_at is the date LocalPro last verified the newest record in the response. Each provider carries its own verification date in credibility.verification_date.

Migrating from 2.x: rating is now an object (the LocalPro Rating) rather than a number; review_count moved inside it and appears only with first-party reviews. summary and review_summary are top-level strings. business_status, map links, opening hours and geo coordinates are no longer returned. data_freshness is a single last_verified_at date.

Error Response

Errors use the same envelope with an error object:

typescript
{  meta: { schema_version: string }  error: {    code: string     // "NOT_FOUND" | "INTERNAL_ERROR" | "UNAUTHORIZED" | "FORBIDDEN"    message: string  // Human-readable error description  }}

Provider Fields

FieldTypeNullableDescription
namestringnoBusiness name (always present)
descriptionstringnoBusiness description (always present)
citystringnoCity name (always present)
statestringnoTwo-letter state abbreviation (always present)
ratingobjectnoLocalPro Rating — see below (always present)
servicesarrayno[{ type: string, label: string }] (always present, non-empty)
pricing_summarystringyesPricing info (public access)
coverage_areastringyesGeographic coverage description
years_in_businessnumberyesYears operating
listing_urlstringnoFull profile URL with contact details

get_provider adds:

FieldTypeDescription
service_areasarray[{ city, state, radius_miles }]
service_detailsarray[{ type, label, pricing_model, price_range, turnaround }]
summarystringLocalPro-written overview of the business (when available)
review_summarystringLocalPro-written "what customers say" summary; no raw review text or reviewer PII (when available)
json_ldobjectSchema.org LocalBusiness JSON-LD; AggregateRating included only when backed by first-party reviews
credibilityobject{ verified, listing_tier, verification_date, data_sources }
citationobjectPre-formatted strings: { display_name, in_text, attribution }

rating object (LocalPro Rating):

FieldTypeDescription
tierstringestablished / well-reviewed / reviewed / unrated: standing relative to other providers in the same category
labelstringDisplay label for the tier
starnumber1.0–5.0, present only when backed by first-party customer reviews
review_countnumberCount of published first-party reviews, present alongside star

Results are ranked by listing tier, then by LocalPro Rating.

Nullable Fields

Fields marked nullable return null when data is unavailable — they are never omitted from the response. Arrays return [] when empty, never null.

Access Tiers

Public (no authentication)

All search and list tools work without an API key:

  • list_niches, list_cities, list_service_types, search_providers
  • get_provider returns basic data (name, description, LocalPro Rating, services, pricing summary, listing URL)
  • Rate limited to 30 requests/minute per IP

Premium (API key)

Include an X-API-Key header to unlock additional data on get_provider:

  • Full pricing array (vs. summary string)
  • Certifications and credentials
  • Rate limited to 30 requests/minute per key
X-API-Key: your-api-key

Request an API key at localpro.dev or email [email protected].

Discovery

AI agents can self-discover this server via standard well-known endpoints:

  • GET /.well-known/llms.txt — Plain text description of the server and its tools
  • GET /.well-known/mcp.json — Structured JSON with tool list, auth info, and operator details

Data Policy

  • What's returned: Business name, city, state, LocalPro Rating, services, certifications, pricing ranges, coverage area, LocalPro-written business and review summaries, and a link to the full listing page.
  • What's withheld: Phone numbers, email addresses, physical addresses, and websites are available only on the listing page (via listing_url). This protects provider data while driving traffic to the directory.
  • Provenance: Listings are built from public business information and, where we can confirm it belongs to the business, the company's own website. Every listing passes a quality check before it is served. Owners can claim and correct their listing; customers can leave first-party reviews on the directory. Permanently closed businesses are filtered automatically.
  • Freshness: Each response states when its records were last verified (last_verified_at). Listings are re-verified as needed, not on a fixed cycle.

Rate Limits

AccessLimit
Public (no key)30 requests/minute per IP
Premium (API key)30 requests/minute per key

Higher limits available for partners — contact [email protected].

Data Quality

Every provider returned by the API has been verified and meets a minimum completeness threshold:

  • LocalPro Rating — present on 100% of results
  • Business description — present on 100% of results
  • Services list — present on 100% of results
  • Name, city, state — present on 100% of results

Per-category provider and state counts are in Live Now, generated from the live database.

Additional fields (pricing, certifications, coverage area, years in business, business and review summaries) are available on most providers but not guaranteed. Fields without data return explicit null — never omitted, never empty strings.

Two additional categories are being prepared for launch.

Self-Hosting

LocalPro runs as a Cloudflare Worker with a D1 database binding. To deploy your own instance:

bash
npm installnpx wrangler secret put API_KEY    # Set your production API keynpx wrangler deploy

Requires a Cloudflare account with a D1 database named laced-directory.

Operator

LocalPro is built and operated by Laced Labs LLC.

License

MIT

來源:README.md,提交 6933b2d

工具

5

list_niches

List all available service directories in the LocalPro network. This is the starting point for discovering what categories of verified local service providers are available. Categories include water damage restoration, foundation repair, crawl space repair, basement waterproofing, mold/asbestos/lead remediation, radon mitigation, septic services, commercial electrical, floor coating, and laundry pickup & delivery. Returns niche IDs needed for all other tools.

無需輸入參數。

list_cities

List available cities and metro areas where verified providers operate for a given niche. Use this to discover valid city slugs before calling search_providers. Cities are grouped by metro area where applicable (e.g. "minneapolis-mn" covers Minneapolis, St. Paul, and surrounding suburbs). Optionally filter by state abbreviation.

輸入參數stateniche_id必填

list_service_types

List the valid service type categories for a given niche directory. Use this before calling search_providers with a service_type filter to ensure you pass a valid value. Each niche has its own taxonomy — for example, "coated-local" has epoxy, polyaspartic, metallic_epoxy, etc., while "radon-local" has radon_testing, radon_mitigation, ssd_installation, etc.

輸入參數niche_id必填

search_providers

Search for verified local service providers across 10 trade categories: water damage restoration, foundation/slab repair, crawl space repair, basement waterproofing, mold/asbestos/lead remediation, radon mitigation, septic services, commercial electrical, floor coating (epoxy/polyaspartic), and laundry pickup & delivery. Returns provider name, LocalPro Rating, services offered, pricing summary, years in business, and a link to the full profile with contact details. Covers major US metro areas. Use list_niches first to get valid niche IDs, and list_service_types for valid service_type values.

輸入參數citylimitniche_id必填service_type

get_provider

Get a detailed summary of a specific verified service provider. Returns business description, services, pricing summary, coverage area, service details, and a link to the full profile page. With a valid API key (X-API-Key header): also returns full pricing breakdown and certifications. Without a key: returns pricing_summary and a pro_available flag. Contact details (phone, email, address) are available on the listing page via listing_url.

輸入參數niche_id必填provider_slug必填

版本歷史

2
  1. v3.1.0最新Sep 26, 2026
  2. v2.1.0Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Verified 整合