AI List My Business
ailistmybusiness
AI主導の中小企業発見のためのMCP呼び出し可能なディレクトリ。不動産業者、保険代理店、医療従事者(フェーズ1)の、国を問わない個人情報ゼロのカタログです。
仮タイトル。 ドメイン登録待ちのパブリックブランド。フォルダ名と
package.jsonはドメイン確定後に変更されます。
これは何ですか
ユーザーがChatGPT、Claude、またはGeminiに「ダラスの不動産業者を探して」「トロントの夜間診療所」「バイリンガルの保険ブローカー」などと尋ねると、AIはこのMCPサーバーを呼び出します。ランキングされたビジネスリストとUTMタグ付きの予約URLを返します。ユーザーは中小企業と直接予約を行います。私たちは顧客データを見ることがありません。私たちはリードプロセッサーではなく、ビジネスカタログです。
Related MCP server: discava – Business Directory for AI
フェーズ1のステータス
[x] MCPサーバーの足場(Node 20 + TypeScript)
[x] 5つのツール:
search_businesses,get_business_profile,get_booking_options,search_by_query,get_categories[x] 3つの業種 × 2カ国(ダラス + トロント)にわたる30のモック中小企業
[x] OpenStreetMap Nominatimジオコーディング(無料、個人情報なし)
[x] 中小企業の属性把握のためのUTMタグ付き予約URL
[x] 5つのツールすべてのVitestテストスイート
[x] Smithery + Glama + Railwayマニフェスト
[ ] Supabaseの接続(フェーズ2)
[ ] 有料ティアのStripe課金(フェーズ2)
[ ] APIティアのCoinbase x402メータリング(フェーズ3)
クイックスタート
npm 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)その後、http://localhost:3000/preview/search?category=realtor&location=Dallas にアクセスしてランキング結果を確認してください。
アーキテクチャ
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個人情報ゼロのルール
このカタログはビジネスデータのみを保存します:
ビジネス名、住所、営業時間、サービス
公的な資格情報およびライセンス番号
集計されたレビュー数と評価(フェーズ2で公開APIから取得)
UTMタグ付き予約URL
以下は明示的に保存しません:
顧客/患者の名前、電話番号、メールアドレス、またはその他の識別子
保険証券の詳細、病歴、またはHIPAA / PIPEDA / GDPRで保護されるもの
個別の予約記録や予約データ
予約フロー:エージェントが中小企業の予約URLを取得 → ユーザーがクリック → ユーザーが中小企業のシステムで予約。私たちはインプレッションを確認し、中小企業は自社の分析ツールでUTMタグを通じてコンバージョンを確認します。
MCPツールコントラクト
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-taggedget_booking_options
{ id: string, agentName?: string }
→ { bookingUrl, acceptedMethods, hours, timezone, fallbackContact }search_by_query
{ query: string, location?: string, countryCode?: string, maxResults?: number }
→ SearchHit[]フェーズ1の実装はキーワード/部分一致ベースです。フェーズ2では、真のセマンティック検索のためにpgvectorまたはOpenAI埋め込みに切り替えます。
get_categories
{ countryCode?: string }
→ CategoryEntry[]ランキングロジック
ビジネスごとの加重スコア(0〜100):
ティア (20%) — 医療 100 / プロ 85 / 標準 65 / 無料 40
距離 (30%) — クエリの起点に近いほど高スコア
評価 (20%) — 公開レビュー評価 × ボリューム
業種/サブカテゴリの一致 (20%)
認証済みリスト (5%)
言語の一致 (5%)
src/lib/ranking.ts を参照してください。
Claude Codeへの引き継ぎ
このフォルダをローカルの開発ディレクトリにクローンした後:
# 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 git@github.com: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フェーズ2のプラグインポイント
実際のサービスを接続する準備ができたら:
サービス | やること | 編集するファイル |
Supabase |
|
|
Stripe | 課金ルートを追加し、 |
|
Coinbase x402 | MCPツールハンドラーをメータリングファシリテーターでラップ |
|
AEOシンジケーション | プロフィールをGoogleビジネスにプッシュし、ランディングページにschema.orgマークアップを追加 | 新規 |
実際のレビュー | フェーズ2のリスト用にGoogle Places / OSMから取得 | 新規 |
ライセンス
プロプライエタリ。© 2026 Charles Mutamiri。
Available Tools
5 toolsget_booking_optionsA
Get UTM-tagged booking URL plus accepted methods and hours for a business. The user books directly with the SMB; we never see customer data.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Business ID. | |
| agentName | No | MCP client identifier for UTM attribution. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the 'UTM-tagged' nature and the privacy aspect of not seeing customer data, but does not reveal additional behaviors such as caching, rate limits, or whether the URL is always returned. Some behavioral traits remain implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The first sentence front-loads the core functionality, and the second adds a relevant privacy caveat. Every sentence contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lists the key outputs (booking URL, accepted methods, hours). Since there is no output schema, it would benefit from explicitly stating the response structure. However, for a simple tool with two parameters, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning by explaining that agentName is for 'UTM attribution,' clarifying its purpose beyond the schema's 'MCP client identifier for UTM attribution.' This extra context justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool retrieves a UTM-tagged booking URL along with accepted methods and hours for a business. The verb 'Get' is specific, and the resource 'booking options' is distinct from sibling tools like get_business_profile, get_categories, search_businesses, and search_by_query.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing booking details but does not explicitly state when to use this tool versus alternatives or when not to use it. The privacy note 'we never see customer data' provides some context but no direct guidance on selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_business_profileA
Get full structured profile for a business by ID. Returns services, hours, credentials, languages, contact channels, and a UTM-tagged booking URL.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Business ID returned by search_businesses. | |
| agentName | No | Optional MCP client identifier (e.g. 'chatgpt', 'claude', 'gemini'). Used for UTM attribution. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description carries full burden. It describes returns but does not disclose safety (read-only assumed), authentication needs, rate limits, or potential errors. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with purpose, no waste. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description explains return values well. Parameter coverage is complete. Could mention output structure in more detail, but sufficient for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both params with descriptions (id from search_businesses, agentName for UTM). Description adds context about UTM-tagged URL but overall schema is sufficient. Baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it gets a full structured profile by ID, listing specific return fields (services, hours, etc.). Distinct from sibling tools like search_businesses or get_booking_options.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage when you have a business ID and need a full profile, but no explicit when-to-use vs alternatives or when-not-to-use guidance. Sibling names suggest different purposes but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_categoriesA
List available business verticals per country. Use to discover what kinds of businesses agents can search for in a given region.
| Name | Required | Description | Default |
|---|---|---|---|
| countryCode | No | ISO-3166 alpha-2 (US, CA, GB, ...). Omit for all categories everywhere. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must cover behavioral traits. It is adequate as a read-only listing tool, but does not mention optional omission of countryCode or any edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the essential verb and resource, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple single-parameter tool and no output schema, the description sufficiently conveys the tool's purpose and usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for countryCode with a clear description. The tool description adds minimal value beyond reinforcing the 'per country' concept.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'business verticals per country', and it distinguishes itself from sibling tools like search_businesses or get_booking_options.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Use to discover what kinds of businesses agents can search for in a given region' provides clear context for when to use the tool, though it lacks explicit when-not-to-use guidance or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_businessesB
Search businesses by category and location. Returns ranked hits with name, city, rating, and matchScore. Filters: countryCode, language, subcategory, minRating, maxResults.
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | Vertical to search. One of: realtor, insurance_agent, medical_practitioner, dentist, home_health, medical_transport, home_services. Or a free-text category like 'plumber'. | |
| location | Yes | Location string — city, region, postal code, or 'Dallas, TX' style. Geocoded server-side. | |
| countryCode | No | ISO-3166 alpha-2 (US, CA, GB, AU). Restricts results to that country. | |
| language | No | ISO-639-1 (en, fr, es, ...). Boosts businesses speaking this language. | |
| subcategory | No | Optional sub-tag, e.g. 'buyer-agent', 'auto-insurance', 'family-medicine'. | |
| maxResults | No | ||
| minRating | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only states basic behavior (returns ranked hits) and lists filters. Lacks disclosure of side effects, read-only nature, rate limits, or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states main action and return fields, second lists filters. No filler, front-loaded, efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description covers basic purpose and filters but lacks details on error handling, default ordering, geocoding behavior, and interpretation of 'ranked'. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (71%), so baseline 3. Description adds no extra semantic value beyond listing filter names already in schema. No explanation of parameter behavior like minRating or free-text categories.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it searches businesses by category and location and returns ranked hits with specific fields. However, it does not explicitly differentiate from the sibling 'search_by_query' tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage for category/location searches with optional filters but provides no explicit when-to-use or when-not-to-use guidance, nor alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_by_queryA
Natural-language search across the catalog. Use for fuzzy queries like 'evening dentist that takes Sun Life' or 'realtor in Dallas who speaks Spanish'.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Natural-language query, e.g. 'evening dentist in Toronto that takes Sun Life' or 'realtor in Dallas who speaks Spanish'. | |
| location | No | Optional location override. | |
| countryCode | No | ||
| maxResults | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It states 'natural-language search' implying approximate matching but does not disclose behavioral traits like pagination, result ordering, error handling, or rate limits. The description is not misleading but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and examples. No wasted words, though could include more detail without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description is adequate but incomplete. It explains usage but not return format, error cases, or limitations like result set size. For a tool with 4 parameters, more context on result behavior would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema describes 'query' with examples similar to description, and location is briefly mentioned. Description adds examples but does not clarify 'countryCode' or 'maxResults' beyond schema. With schema coverage 50%, description provides moderate added value but does not fully compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool performs natural-language searches across the catalog, using verbs 'search' and examples like 'evening dentist that takes Sun Life'. This distinguishes it from sibling tool 'search_businesses', which likely supports structured queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description provides explicit usage examples for fuzzy queries, implying when to use this tool (natural-language) over alternatives. However, it does not explicitly state when not to use it or mention the sibling 'search_businesses' as an alternative for structured queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.1.0- First observed
get_booking_options - First observed
get_business_profile - First observed
get_categories - First observed
search_businesses - First observed
search_by_query
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose: get_booking_options returns booking URL and hours; get_business_profile returns full structured profile; get_categories lists business verticals; search_businesses performs structured search; search_by_query handles natural-language queries. No overlaps.
All tool names follow a consistent verb_noun pattern in snake_case: get_* for retrieval operations, search_* for searching. Predictable and clear.
5 tools is well-scoped for a business listing and search server. It covers the core functionalities of searching (two modes), retrieving profiles, booking options, and category discovery without being bloated.
The tool surface covers the main use cases: search by category/location, natural-language search, profile retrieval, booking info, and category listing. Minor gaps include lack of review details or contact info beyond what's in the profile, but overall it's complete for a read-only search and listing service.
Maintenance
Related MCP Connectors
MCP layer for local businesses: discover, query, book, and transact with verified SMB AI agents.
Verified local businesses, bookable by AI agents: services, prices, availability and appointments.
Local business intel for AI agents: audits, lead scoring, tech stack, prospecting.
Find local businesses, enrich them with emails and socials, and run lead pipelines from your AI.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceSearch for local businesses worldwide. Structured data optimized for AI agents. • Search Millions of businesses over 49 countries (Europe, Northamerica, Southamerica, Asia, Oceania) • Quality & demand scoring for every business • Ranking based on real user click-through data • No API key needed, free access • Rate limit: 500 requests/hour per IP-
- AlicenseAqualityCmaintenanceSearch for local businesses worldwide. Structured data optimized for AI agents. • Search Millions of businesses over 49 countries (Europe, Northamerica, Southamerica, Asia, Oceania) • Quality & demand scoring for every business • Ranking based on real user click-through data • No API key needed, free access • Rate limit: 500 requests/hour per IP61MIT
- AlicenseAqualityFmaintenanceUniversal search engine for AI agents. Discover products, services, and businesses across every category. 10 MCP tools, zero LLM calls, millisecond responses.114AGPL 3.0

@qasperai/mcp-serverofficial
AlicenseAqualityCmaintenanceEnables AI assistants to discover and book local service businesses like barbers, plumbers, and mechanics directly through MCP-compatible tools.934 npmMIT