The Service Marketing Guys Audit について
地域サービス事業者向けの Open Service Profile 仕様、バリデーター、生成ツールです。事業者が機械可読な情報を公開でき、サイトに記載のない事実は TODO として残します。
主な機能
- 01プロフィールと予約用の6つの MCP ツール
- 02JSON Schema とマニフェスト検証
- 03サイトからプロフィールと llms.txt を生成
- 04未記載の事実は TODO のまま保持
活用シーン
- 01対応地域、営業時間、予約方針の公開
- 02事業者サイトからプロフィールを下書き
- 03仕様に沿ったマニフェストの検証
MCP 対応
仕様は、プロフィールの読み取り、対応地域と空き状況の確認、予約リクエストの送信に使う6つの MCP ツールを定義します。リクエストは予約確定を意味せず、生成ツール自体は MCP サーバーを構築しません。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://www.theservicemarketingguys.com/api/audit-mcpclaude mcp add --transport http com-theservicemarketingguys-audit https://www.theservicemarketingguys.com/api/audit-mcp{"mcpServers":{"com-theservicemarketingguys-audit":{"type":"http","url":"https://www.theservicemarketingguys.com/api/audit-mcp"}}}Cursor で開く{"servers":{"com-theservicemarketingguys-audit":{"type":"http","url":"https://www.theservicemarketingguys.com/api/audit-mcp"}}}VS Code で開く{"mcpServers":{"com-theservicemarketingguys-audit":{"type":"http","url":"https://www.theservicemarketingguys.com/api/audit-mcp"}}}{"mcpServers":{"com-theservicemarketingguys-audit":{"serverUrl":"https://www.theservicemarketingguys.com/api/audit-mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
Open Service Profile
Open Service Profile(OSP)は、/.well-known/open-service-profile で公開される、地域密着型サービス事業者の機械可読な説明です。事業者の業務内容、対応地域、営業時間、予約依頼方法を AI エージェントに伝えます。
出張型および店舗型の業種が対象です。たとえば、HVAC、配管、電気工事、造園、自動車修理、船舶修理などです。マニフェストには、事業者の基本情報、所在地と営業時間、サービス、対応 ZIP コード、予約ポリシーが含まれます。Model Context Protocol を介した 6 つのツールにより、エージェントはプロフィールの読み取り、対応地域の確認、空き状況の確認、予約依頼の送信ができます。予約依頼はあくまで依頼であり、確定ではありません。この意味は仕様で定められているため、実際には存在しない予約をエージェントが顧客に伝えることはありません。
ステータス
ドラフト v0.1 は 2026-09-07 に公開され、2026-09-09 に改訂されました(0.1.0-draft.4、テキストのみの改訂)。実装を開始できる程度にドラフトは安定しています。1.0 までの変更は、変更履歴を伴うバージョン付きリリースとして公開されます。変更の決定方法については、CONTRIBUTING.md を参照してください。
仕様
- 正式版(バージョン付き):https://www.theservicemarketingguys.com/standards/open-service-profile/v0.1
- ランディングページ(最新バージョン):https://www.theservicemarketingguys.com/standards/open-service-profile/
spec/ の Markdown がソーステキストです。ウェブサイトが正式なレンダリングであり、引用には上記のバージョン付き URL を使用してください。
メンテナー
The Service Marketing Guys(EasyServe の企業)。このリポジトリでは、Issue やプルリクエストを歓迎します。
このリポジトリの内容
spec/
v0.1.md specification source text
schemas/v0.1/
manifest.schema.json Appendix A, the manifest document
tools/
tools-common.schema.json shared definitions for tool schemas
<tool>.input.schema.json one per tool, Appendix B
<tool>.output.schema.json one per tool, Appendix B
examples/v0.1/
hvac-two-locations.json Appendix C.1
auto-repair-single-location.json Appendix C.2
marine-repair-yard.json Appendix C.3
hvac-two-locations.level1.jsonld Appendix C.4, Level 1 JSON-LD for the C.1 business
scripts/
validate-examples.mjs validates the examples against the manifest schema and the Appendix A constraints
extract-from-spec.mjs regenerates schemas/ and examples/ from spec/v0.1.md
bin/
open-service-profile.mjs the generator CLI (npx open-service-profile init <url>)
src/
validate.mjs the examples script's and the CLI's validator, a thin call into the generated core
crawl.mjs the CLI's bounded site crawl: pinned connections, private-address policy, host fence
places.mjs optional Google listing lookup (your own key)
core/ GENERATED generator core; source of truth is the maintainer's TypeScript
tests/
cli.test.mjs node --test; fixture sites under tests/fixtures/
各ツールの出力スキーマは、成功時の形式とエラー時の形式の oneOf です。エラー時の形式は tools-common.schema.json#/$defs/ErrorResult であり、各ツールのスキーマ内で、そのツールのエラーコードに制限されています。
例を検証するには、npm run validate を実行してください。依存関係はありません。
プロフィールを生成する
このリポジトリには、事業者自身のウェブサイトから Open Service Profile のドラフトを作成する、小さなコマンドラインツールも含まれています。事業者の llms.txt も作成します。Node 20 以降が必要で、依存関係はありません。
npx open-service-profile init example.com
最大 12 ページ(ホーム、問い合わせ、予約、会社概要、続いてサイトマップにあるサービスページと所在地ページ)を読み込み、./open-service-profile/ に 5 つのファイルを書き込みます。
| ファイル | 配置先 |
|---|---|
open-service-profile.json | /.well-known/open-service-profile。application/json として配信し、Access-Control-Allow-Origin: * を設定 |
llms.txt | /llms.txt |
llms-full.txt | /llms-full.txt(すべての事実について、それを読み取ったページと、各導出値の作成方法を記載) |
robots-ai-section.txt | /robots.txt に統合(2 つのクローラーに関する質問に回答するまでは、コメント付きのテンプレート) |
jsonld.html | ホームページの <head> 内に貼り付け(レベル 1 の JSON-LD:ScheduleAction を含む LocalBusiness ノード) |
すべての行に適用されるルールは 1 つです。ページに記載されていない事実は、もっともらしい既定値ではなく、必ず # TODO: 行になります。価格、営業時間、サービス、資格認定を捏造することはありません。サービスを記載できるのは、実際に読み込んだページに記載されている場合だけです。ページのマークアップに見つかった評価やレビュー件数も転記しません(標準で禁止されています)。レベル 1 のすべての事実が確認でき、文言から推測した値がなく、マニフェストが付録 A に照らして検証に合格し、ホームページにレベル 1 の JSON-LD がすでに含まれている場合に限り、ドラフトはレベル 1 を宣言します。レベル 2 は宣言しません。このツールは MCP サーバーを構築しないためです。
ウェブサイトに記載されていない情報もあるため、このツールは推測せずに質問します。予約ポリシー(依頼を受け付ける最も早い日、週末の依頼、緊急時または営業時間外の対応可否、確認方法)、2つの robots.txt の選択肢(AI アシスタントがページを読んでもよいか、トレーニングに使用してもよいか)、そしてページから判断できない場合に限り、サービスモデル(認定されている業種が1つなら、それで判断できます)、主要な所在地(所在地が1つなら、それが定義上の主要な所在地です)、タイムゾーン(州全体が1つのタイムゾーンに属するなら、それで判断できます)です。フラグで指定するか、ターミナルで実行して質問に回答してください。未回答の項目は TODO 行のまま残ります。標準の3つの時間帯は、時刻を記載せず、ID のみで記述されます。
npx open-service-profile init example.com --min-days-ahead 1 --weekend-requests saturday_only --emergency no --contact-methods call,email --ai-read yes --ai-train no
オプション:
--min-days-ahead <n>(0~60)、--weekend-requests <allowed|saturday_only|not_allowed>、--emergency <yes|no>、--contact-methods <call,text,email>:予約ポリシーを指定します。ご自身の言葉で指定してください。--ai-read <yes|no>、--ai-train <yes|no>:robots.txtの選択肢です。指定しない場合、このセクションはコメントアウトされたテンプレートとなり、何も変更しません。--service-model <on_site|in_shop|both>、--primary <city or id>、--time-zone <IANA zone>:ページから判断できない場合に限り、質問されます。--place-id <id>を指定すると、ご自身のGOOGLE_PLACES_API_KEYを使用して、Places API 経由でビジネスの Google Business Profile のリスティングも読み込みます。リスティングの情報で補完されるのは、サイトに記載がない情報のみで、サイトの情報が上書きされることはありません。また、リスティングがこのビジネスのものだと確認できた場合に限り使用されます(ウェブサイトがクロール対象のサイトと一致するか、ウェブサイトが記載されていない場合は、電話番号、または名称と郵便番号がサイトと一致する必要があります)。--out <dir>でファイルの出力先を指定します。代わりに--jsonを指定すると、結果全体(マニフェスト、ファイル、TODO リスト、出典付きの情報)が標準出力に表示されます。--verboseを指定すると、取得する URL が1つずつ表示されます。
このクローラーは、IPv4 および IPv4 アドレスを含むすべての IPv6 形式(マップ形式、互換形式、NAT64)において、プライベート、ループバック、リンクローカル、ユニークローカル、マルチキャスト、クラウドメタデータの各アドレスへのアクセスを拒否します。各ホスト名は一度だけ名前解決され、判定後、接続先は判定済みのアドレスに固定されます。リダイレクト先とサイトマップの子要素で指定できるのは、同じホストまたはその www 版のみです。これを緩和するオプションはありません。
同じジェネレーターは、親サイト上のウェブツールとしても利用できます:https://www.theservicemarketingguys.com/tools/open-service-profile
ジェネレーターのコア(src/core/)は、メンテナーの TypeScript から生成され、その旨を記したヘッダーが付いています。ここではなく、TypeScript のほうを編集してください。マニフェストバリデーターはこのコアの一部であるため、ウェブツール、公開監査ツール、この CLI、npm run validate は、すべて同じ実装でマニフェストを判定します。src/crawl.mjs、src/places.mjs、src/validate.mjs、bin/ は、このリポジトリ独自のものです。CLI のテストを実行するには npm test を実行してください(Node 組み込みのテストランナーを使用し、フィクスチャサイトは固定接続でローカルに配信されます)。
スキル
skills/ には2つの Agent Skills が含まれています。open-service-profile は顧客に代わって行動するエージェント向け(マニフェストの検出、読み込み、ツールの呼び出し、同意ルールに基づく予約依頼の送信)、open-service-profile-publish はプロフィールを公開する開発者またはサイト所有者向けです。npx skills add buildmodus/open-service-profile でインストールしてください。skills/README.md を参照してください。
実装
The Service Marketing Guys は、各サイトを動かすものと同じデータから作成した Level 2 マニフェストを、クライアントのサイトで提供しています。例:https://coastalecoheatair.com/.well-known/open-service-profile
仕様書の付録 D には、リファレンス実装と仕様にまだ相違がある箇所が記載されています。
変更の提案方法
イシューまたはプルリクエストを作成してください。CONTRIBUTING.md では、提案に含めるべき内容と、意思決定およびリリースの進め方について説明しています。仕様と実際の実装が食い違っている箇所の報告は、特に歓迎します。
引用
このリポジトリではなく、バージョン付きの仕様を引用してください。推奨される引用情報は CITATION.cff に記載されており、GitHub の「このリポジトリを引用」ボタンもこのファイルを読み取ります。
ライセンス
成果物ごとに、次の2つのライセンスが適用されます。
- 仕様テキスト(
spec/):Creative Commons Attribution 4.0 International。LICENSE-SPEC.mdをご覧ください。 - JSON Schema、例、スクリプト、ジェネレーター(
schemas/、examples/、scripts/、src/、bin/、tests/):MIT。LICENSEをご覧ください。
Copyright 2026 EasyServe LLC.
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。