loading…
Search for a command to run...
loading…
Country-agnostic MCP-callable directory for AI agents to find local SMBs — realtors, insurance agents, medical practitioners — by category, location, or natural
Country-agnostic MCP-callable directory for AI agents to find local SMBs — realtors, insurance agents, medical practitioners — by category, location, or natural-language query. Returns business catalog data and UTM-tagged booking URLs (zero PII).
MCP-callable directory for AI-driven SMB discovery. Country-agnostic, zero-PII catalog of realtors, insurance agents, and medical practitioners (Wave 1).
Working title. Public brand pending domain registration. Folder name and
package.jsonwill be renamed once the domain is locked.
When a user asks ChatGPT, Claude, or Gemini "find me a realtor in Dallas" / "evening walk-in clinic in Toronto" / "bilingual insurance broker", the AI calls this MCP server. It returns ranked business listings with UTM-tagged booking URLs. The user books directly with the SMB. We never see customer data — we are a business catalog, not a lead processor.
search_businesses, get_business_profile, get_booking_options, search_by_query, get_categoriesnpm install
npm test # run unit tests
npm run test:mcp # smoke test all tools end-to-end
npm run dev # start MCP server on stdio
npm run http # start HTTP server on :3000 (preview endpoints + Railway entrypoint)
Then visit http://localhost:3000/preview/search?category=realtor&location=Dallas to see the ranking output.
src/
server.ts # MCP server (stdio transport, Smithery entrypoint)
http.ts # Express server (Railway entrypoint, /health, /preview/*)
types.ts # BusinessProfile, SearchHit, BookingOptions, etc.
tools/ # one file per MCP tool
searchBusinesses.ts
getBusinessProfile.ts
getBookingOptions.ts
searchByQuery.ts
getCategories.ts
lib/
db.ts # data access — switches on DATA_SOURCE env (mock | supabase)
ranking.ts # 6-factor weighted relevance score
utm.ts # UTM URL builder for booking links
geo.ts # OpenStreetMap Nominatim geocoder + Haversine distance
data/
mockBusinesses.json # 30 sample SMBs (realtors, insurance, medical × Dallas, Toronto)
categories.json # vertical taxonomy
scripts/
seed.ts # Supabase seeder (Phase 2 stub)
test-mcp.ts # smoke test runner
tests/
tools.test.ts # Vitest tests for all tools
This catalog stores business data only:
It explicitly does not store:
Booking flow: agent gets the SMB's booking URL → user clicks → user books on the SMB's own system. We see impressions; SMB sees conversions via UTM tags on their own analytics.
search_businesses{
category: string, // "realtor" | "insurance_agent" | "medical_practitioner" | etc.
location: string, // "Dallas, TX" — geocoded server-side
countryCode?: "US" | "CA" | "GB" | "AU" | ...,
language?: string, // ISO-639-1, e.g. "en", "fr", "es"
subcategory?: string,
maxResults?: number, // default 10, max 25
minRating?: number
}
→ SearchHit[]
get_business_profile{ id: string, agentName?: string }
→ BusinessProfile // bookingUrl is UTM-tagged
get_booking_options{ id: string, agentName?: string }
→ { bookingUrl, acceptedMethods, hours, timezone, fallbackContact }
search_by_query{ query: string, location?: string, countryCode?: string, maxResults?: number }
→ SearchHit[]
Phase 1 implementation is keyword/substring-based. Phase 2 swaps in pgvector or OpenAI embeddings for true semantic search.
get_categories{ countryCode?: string }
→ CategoryEntry[]
Weighted score (0–100) per business:
See src/lib/ranking.ts.
Once you clone this folder into your local dev directory:
# 1. Install
npm install
# 2. Initialize git
git init
git add .
git commit -m "Initial scaffold: MCP server + 5 tools + mock data"
git branch -M main
git remote add origin [email protected]:YOUR_GH_USERNAME/ailistmybusiness.git
git push -u origin main
# 3. Validate locally
npm run typecheck
npm test
npm run test:mcp
# 4. Submit to Smithery (when ready)
# https://smithery.ai/new — point to your GitHub repo
# 5. Deploy HTTP entrypoint to Railway (when ready)
# https://railway.app/new — uses railway.json
When you're ready to wire real services:
| Service | What to do | File to edit |
|---|---|---|
| Supabase | Create tables businesses + categories, set SUPABASE_* env vars, set DATA_SOURCE=supabase, run npm run seed |
src/lib/db.ts |
| Stripe | Add billing routes, wire POST /webhooks/stripe, gate paid-tier features in ranking |
src/http.ts, new src/billing/ |
| Coinbase x402 | Wrap MCP tool handlers in metered facilitator | src/server.ts, new src/lib/x402.ts |
| AEO syndication | Push profiles to Google Business + schema.org markup on landing pages | new src/syndication/ |
| Real reviews | Pull from Google Places / OSM for Phase 2 listings | new src/lib/reviews.ts |
MIT © 2026 SokoTech.
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"ai-list-my-business": {
"command": "npx",
"args": []
}
}
}