このサイトに、ページだけでなくツールが加わりました
actmorehuman.comを訪れたAIエージェントは、これまでどのサイトでもやるのと同じことをしてきました。HTMLを読み、どのdivが検索ボックスかを当て推量し、ボタンらしく見えるものをクリックする。リデザインを公開すれば壊れました。モーダルが開けば迷子になりました。
それも終わりです。本日から、このサイトはできることの型付きリストをエージェントに渡し、エージェントはそれを直接呼び出します。
採用した標準はWebMCPです。ページが、見ているエージェントに向けてツールを宣言できるようにする、W3Cの提案です。私たちは10個のツールを公開しました。
エージェントにできるようになったこと
読み取り専用のツールが4つあります。何も変更しないので、自由に呼び出せます。
search_guidesとget_guideで、サイトのすべてのガイドに届きます。すべて11言語で公開されていますlist_assistantsとget_setup_stepsは、ChatGPT、Claude、Gemini、Grok、Perplexity、Copilotそれぞれのカスタム指示の設定がどこにあるか、そこに何を入れるかを返します
何かを組み立てるツールが3つあります。
get_wizard_optionsとbuild_humanizer_promptは、サイトのウィザードが作るのと同じプロンプトを、訪問者がウィザードをクリックして進まなくても作りますhumanize_textは、AIが書いた文章を4つのトーンのどれかで書き直します。対象は20〜6,000文字です
お金やメールボックスに触れるツールが3つあります。
list_productsは、販売しているものと現在の価格を返します。アドオン付きの、価格が確定したCompany Voice構成も含みますstart_checkoutは、Stripeのセッションを開きますsubscribe_to_updatesは、確認メールを1通送るよう依頼します
エージェントが読む完全な説明文は、自分自身の限界も書いています。list_productsの説明には、返すのは販売中のものだけなので、リストが短いことがあると書いてあります。humanize_textの説明には、呼び出しごとに費用がかかるため、同じ文章で再試行してはいけないと書いてあります。あいまいな説明をもとに計画するエージェントは、計画も下手になります。
書き込みは、止まって確認する
start_checkoutとsubscribe_to_updatesは、ページ上のダイアログで人が承認するまで完了しません。ダイアログには、だれかがクリックする前に、商品、価格、メールアドレスが明示されます。確認を求めるのに、見せる具体的なものがないツールは、ビルドが失敗します。ですから、対象のない「よろしいですか?」は出荷できません。
購読は、さらにダブルオプトインです。ツールが送るのは確認メール1通で、返すのは購読ではなく、送ったという事実です。メールを無視すれば、何も起きません。エージェントはアドレスをリストに入れられませんし、私たちにもできません。
humanize_textは、裏で黙って取得するのではなく、画面に見えているフォームを操作します。訪問者は、自分の文章がボックスに届き、書き直されるのを見ます。共有された画面という考え方の、核心です。エージェントがしたことを、いま見ているページの、自分の画面で見られるべきなのです。
ブラウザの外にいるエージェント
同じツールは/api/mcpでMCPとして提供されているので、ブラウザを持たないコーディングエージェントやデスクトップアシスタントも呼び出せます。2つのトランスポートは同じパイプラインを通ります。ガードがずれていかないのは、そのおかげだけです。
読み取り専用のツールは、そこでも公開されています。humanize_textは公開されていません。理由は地味ですが、書いておく価値があります。リモートのエンドポイントには認証がないので、モデルの予算を使うツールを公開すれば、訪問者が開いたどのページからも、その人のブラウザ経由で私たちの予算を使えてしまいます。読み取りは公開のまま。お金がかかる操作には、身元のわかる呼び出し元が必要です。
通信簿、悪かった点も含めて
webmcp.comのディレクトリは6ページをスキャンし、結果をAと評価しました。見つかったツールは9個で、これは正しい数字です。10個目のhumanize_textは、ヒューマナイザーページと同じ機能フラグの裏にあります。そのフラグがオフの間は、ツールは登録されず、一覧にも載りません。呼び出すと失敗する機能を宣伝するくらいなら、持たないほうがましです。
スキャンは説明文と入力の制約を評価しました。そして本物の欠点をひとつ挙げています。どのツールにも出力スキーマがないことです。どのツールも、何が入るかは正確に宣言していますが、何が返るかは宣言していません。エージェントは出力を解析して確かめるしかありません。当たっている指摘で、対応予定の一覧に入っています。
規模を知るための数字も挙げます。ディレクトリには、検証済みサイトが522、ツールが3,387あります。全体では、51%がページを操作し、44%は質問に答えるだけ、5%がお金や約束ごとに触れます。私たちは3つすべてに当てはまります。
なぜやったのか
アシスタントはすでにこのサイトを読んでいます。Claudeのカスタム指示の入力欄がどこにあるかをChatGPTに尋ねると、私たちが書いたページをもとにした答えが返ってきます。読まれるのは良いことです。でも、使えるようになることは別の話で、それが次のステップです。
私たちがどのみち主張したいこともあります。エージェントのウェブには、2つの道がありえます。ひとつは、エージェントがサイトをスクレイピングし、サイトは解析されるだけの受け身の表面になる道。もうひとつは、サイトが自分のロジックを持ち続け、自分の条件で公開する道です。自前のガード、自前のレート制限、自前の確認ダイアログとともに。私たちは後者をやりたい。人がダイアログで承認したときだけ進むチェックアウトは、手間ではありません。サイトが、自分のふるまいの主導権を握り続けているということです。
出荷前に、2回のセキュリティレビューで4つの問題が見つかり、すべて修正しました。MCPルートのCORSが開放されていたこと、エージェントが見る前にリトライのタイミングを握りつぶすエラー経路、オリジンのない呼び出し元を受け入れていたブリッジ、別のモジュールのエラー文言で分岐していたハンドラです。67ファイル、898件のテストが通っており、そのうち254件は新規です。
試してみる
WebMCPに対応したブラウザでサイトを開き、エージェントに、ダッシュに関するガイドを探すよう頼むか、アドオン付きのCompany Voiceの料金を出すよう頼んでみてください。エージェントはsearch_guidesかlist_productsを呼び出し、返ってきたものを教えてくれます。何かを買うよう頼めば、止まって、判断をあなたに渡します。
通信簿はwebmcp.comで公開しています。次は出力スキーマです。
---
この記事はAIを使って書かれています。内容のすべては、公開前に人が確認しました。AIの文章がその確認に耐えられないなら、公開する準備ができていないということです。