BondSeat について
BondSeat connectorは、Resyの予約を求める利用者やエージェント向けのMCPサーバーです。キャンセルや予約開始を監視して希望に沿う予約を試み、接続情報とリクエスト状態を非公開で保持します。
主な機能
- 01キャンセルと予約開始の監視
- 02希望に応じた予約リクエスト
- 03セットアップリンクでResyに接続
- 04接続状態とポーリング状態の保存
- 05リクエスト確認・停止・再開ツール
活用シーン
- 01希望するレストランのキャンセル監視
- 02予約開始時の予約試行
- 03予約リクエストの確認や停止
MCP 対応
公式TypeScript SDKとローカルstdioトランスポートを使うMCPサーバーで、ローカルMCPプロセスを起動できるクライアントから利用できます。ホスト型HTTP MCPエンドポイントは提供しません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @bondseat/mcpBONDSEAT_API_URLTrusted HTTPS BondSeat REST API base. Defaults to production; override only for a configured environment.BONDSEAT_STATE_FILEAbsolute path to private persistent storage for one diner. Defaults to ~/.bondseat/connection.json. Use a separate file per diner and environment.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
7掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| q | string | いいえ | |
| url | string | いいえ | |
| city | string | いいえ | |
| cursor | string | いいえ |
詳細
BondSeat コネクター
Resyで予約が取りにくいテーブルを確保しましょう。BondSeatはキャンセルが出るのを監視するか、予約開始時刻に予約を試み、お好みに合ったテーブルを自動で予約します。
BondSeatは認証情報を慎重に管理し、空席状況の確認頻度を調整することで、定期的な監視をお客様の個人用Resyアカウントから切り離して行います。
エージェントは予約ツールを使用します。コネクターはアクセストークン、セットアップコード、再試行識別子、ポーリング状態を非公開に保ちます。食事をする方はセットアップリンクを開くだけです。トークンをチャットに貼り付けたり、エージェントに覚えさせたりする必要はありません。
これは公式のTypeScript SDKとローカルのstdioトランスポートを使用するMCP サーバーです。ローカルのMCPプロセスを起動できるクライアントで利用できます。ホスト型のHTTP MCPエンドポイントではありません。基盤となるREST APIも、カスタムランタイム向けに引き続き利用できます。
インストール
Node.js 22以降が必要です。ローカルstdioに対応したMCPクライアントを設定してください。
{
"mcpServers": {
"bondseat": {
"command": "npx",
"args": ["--yes", "@bondseat/[email protected]"]
}
}
}
デフォルトでは、本番環境のBondSeat APIに接続します。コピーするAPIキーはありません。セットアップが必要な場合、食事をする方がリンクを開いてResyに接続し、成功時の手数料10米ドルを承認します。予約できなかった場合、手数料はかかりません。アカウント不要のフローはResyに対応しています。レストランの料金を支払うにはResyにカードを保存しておく必要があり、BondSeatの手数料については別途Stripeを通じて承認します。
引数なしで実行すると、実行ファイルはMCPを起動します。CLIも利用できます。
npx --yes @bondseat/[email protected] --help
npx --yes @bondseat/[email protected] schema request
npx --yes @bondseat/[email protected] restaurants <<'BONDSEAT_INPUT'
{"q":"La Vara","city":"Brooklyn"}
BONDSEAT_INPUT
コマンド:restaurants、request、status、requests、stop、resume、connect。JSONは標準入力から渡します。schema <command> はAPIに接続せず、MCPツールの入力スキーマを出力します。CLIの終了コード:結果が返された場合(セットアップ保留中を含む)は0、対応が必要な結果または実行時エラーの場合は1、入力が無効な場合は2です。終了コードが1の場合も、JSONの結果を確認してください。診断情報に生の入力や保存済みの認証情報が含まれることはありません。
BondSeatスキルは、OpenClawやその他のスキル対応エージェント向けのワークフローを提供します。接続済みのMCPツールとCLIのどちらも使用できます。スキルをインストールしただけでは、MCP接続は設定されません。
ランタイム設定
| 変数 | デフォルト | 用途 |
|---|---|---|
BONDSEAT_API_URL | https://6qq9f4msd4.execute-api.us-east-1.amazonaws.com/agent/v1 の本番API | 信頼されたHTTPSのBondSeat APIベースURLです。 |
BONDSEAT_STATE_FILE | ~/.bondseat/connection.json | 1人の利用者と1つの環境向けの非公開かつ永続的な状態です。 |
複数ユーザーが利用するホストでは、利用者ごとに状態を分離する必要があります。同じファイルを後続のCLI呼び出しやスケジュールされたフォローアップでも利用できる状態にしてください。クライアントがサンドボックス内で実行される場合は、その環境でNode、ネットワークアクセス、永続ストレージを設定してください。
QA開発では、両方の変数を明示的に設定してください。
{
"BONDSEAT_API_URL": "https://31clusup32.execute-api.us-east-1.amazonaws.com/agent/v1",
"BONDSEAT_STATE_FILE": "/absolute/private/path/bondseat/qa.json"
}
ソースからローカルで開発する場合は、依存関係をインストールした後、このパッケージから node server.mjs または node cli.mjs を起動できます。リモート接続専用のクライアントにはホスト型アダプターが必要です。このパッケージはHTTP MCPエンドポイントを公開しません。
エージェントのワークフロー
- 名前と場所を指定して、すぐに開始します:
bondseat_request({restaurant: "La Vara", city: "Cobble Hill", partySize: 2, date, startTime: "18:00", endTime: "19:00", confirmed: true})。 BondSeat は店舗を検索し、見つからない場合は追加します。複数の候補が見つかった場合は、リクエストを開始せずに選択肢を返します。検索にあたり、食事をする人が管理する店舗 ID、ディレクトリへの追加、プロバイダーの認証情報は必要ありません。 - 別途検索する場合は、
bondseat_restaurants({q: "La Vara", city: "Brooklyn"})または{url: "https://resy.com/cities/new-york-ny/venues/la-vara"}を使います。一致するrestaurantIdをbondseat_requestに渡すか、restaurantUrlを直接渡します: 食事をする人が実際に許可した日付と詳細を使用します。元の指示で自動予約が許可されている場合、テーブルが見つかっても再度確認を求めないでください。 - セットアップが必要な場合は、返された
setupUrlを提示します。食事をする人は BondSeat/Stripe で Resy に接続し、表示された料金を承認します。コネクターはコードを保持します。 pollAfterSecondsの経過後にbondseat_status({})を呼び出してセットアップを完了します。開始済みのリクエストが返されます。コネクターを終了/再起動しても、セットアップの状態は保持されます。bondseat_status({kind, id})は保存済みの状態を読み取ります。読み取り結果は 60 秒間キャッシュされます。 この呼び出しは、エージェントのランタイムが提供するバックグラウンド/スケジュールタスク機能でスケジュールしてください。コネクター自体はスケジュールを設定したり、更新をプッシュしたりしません。terminalに達するかユーザーの操作が必要になるまで、チャットのターン終了後も処理を続け、その後、食事をする人に通知してフォローアップを終了します。outcome: FIRED(status: PAUSEDの場合も含む)またはスケジュール済みのstatus: SUCCEEDEDは、予約が完了したことを意味します。実際のbookedSlotと食事の詳細を報告し、agentInstructionに従ってください。 ランタイムでフォローアップをスケジュールできない場合は、その旨を伝え、BondSeat の管理ページを共有してください。スケジュールを設定せずに、能動的に更新を通知すると約束しないでください。nextAction: verify_providerを伴うキャンセルでは、予約の結果が未確認のままです。食事をする人にプロバイダーで予約を確認するよう伝えてください。処理中の試行が完了する場合もあります。予約が存在しないと断言したり、無期限にポーリングし続けたりしないでください。後からステータスを読み取ると、予約完了が報告される場合があります。- 認証情報の修復が必要な場合は、返された再接続リンクを提示し、許可を得たうえで
bondseat_resume({kind, id})を使用します。bondseat_connect({})は、作業の新規作成や再開、カード情報の収集を行わずに、期限切れのコネクターアクセスを復元します。 bondseat_stop({kind, id})は今後の試行を停止します。既存のレストラン予約はキャンセルできません。支払いの問題はpaymentUrlを使って解決し、別の予約を送信してはいけません。
bondseat_requests({kind: "monitor"}) は既存のリクエストを一覧表示します。nextCursor を cursor として渡します。kind: "scheduled" についても同様に繰り返します。API トークンと冪等性キーは、どちらもツール引数ではありません。同じ食事の詳細を指定した場合は、意図的に同じリクエストが再利用されます。一時停止中の作業を修復するには resume を使い、別のリクエストを作成しないでください。
ストレージとデプロイ
1つの状態ファイルは、1人の利用者と環境を表します。リポジトリの外にあるプライベートディレクトリを使用し、同期フォルダーやプロンプトの添付ファイルには保存しないでください。リファレンスストアは、モード0600のファイルをアトミックに書き込み、プロセス間でロックし、シンボリックリンクを拒否します。認証情報はファイルシステムのアクセス保護を適用してディスクに保存しますが、OSのキーチェーンによる暗号化は行いません。カスタムランタイムでは、withState(callback)を介して独自のトランザクション対応シークレットストアを注入できます。コールバックには(state, save)が渡され、ネットワーク呼び出しの前に復旧識別子を保存できます。
コネクターは送信前に識別子を永続化し、応答が失われた場合は同一の識別子で1回再試行します。Retry-Afterを尊重し、プロバイダーへのポーリングは行わず、ツールの結果にベアラートークンやデバイスコードを返しません。サーバー側の復旧情報はKMSで暗号化されます。トークン交換のリプレイは24時間にわたって許可され、必ず失効を確認します。その後は、再接続すると既存のリクエストへのアクセスが復元されます。別の利用者に接続すると、以前の利用者のキャッシュ済みリクエストは消去されます。
QAテストを本番環境に向けて実行しないでください。本番環境へのデプロイと実際の予約テストには、明示的な承認と実際の食事情報が必要です。成功報酬が発生するのは予約が成功した場合のみで、セットアップは無料です。
検証
npm install
npm test
テストではMCPクライアントとシミュレートされたRESTレスポンスを使用し、初回送信、セットアップ/交換レスポンスの消失、プロセスの再起動、ストアへの同時アクセス、再訪する利用者、決済のセットアップ、認証情報の有効期限切れ、ステータスのキャッシュ、シークレットを含まないツールの結果を対象にします。レストランの予約や決済は行いません。
プロトコルのリファレンス:MCP stdioトランスポート、 公式SDK。
リリーステストではnpmアーティファクトをパッケージ化し、クリーンな一時ディレクトリにインストールして、実際の予約や決済を行わずにCLIの実行とMCPの検出を検証します。コネクターはMITライセンス、スキルはClawHubでの配布に向けた個別のMIT-0ライセンスです。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。