認証とスコープ
read / act トークン、Authorization ヘッダ、401 と失効、可視性の考え方
Quest Card の MCP は Bearer トークン で認証します。すべてのリクエストに
Authorization: Bearer qc_… を付けてください。トークンは
設定(/settings)→ 接続と連携 で発行・失効します。
トークンの形と保存(qc_ と sha256)
- 平文トークンは接頭辞
qc_で始まります(qc_+ ランダムな 16 進文字列)。 人が見て「Quest Card のトークン」と分かるための識別子です。 - サーバーが保存するのは sha256 ハッシュのみ です。平文はデータベースに残さず、 発行時に一度だけ 表示されます(以降は再取得できません)。
- 照合は「受け取った平文をハッシュ化して突き合わせる」で行うため、保存側から平文は 復元できません。控え損ねたら、失効させて新しく発行し直してください。
トークンの種別(スコープ)
read(閲覧のみ)
ボードのサマリ・カード一覧・カード詳細を読めます。act ツールは tools/list
にも現れず、呼んでも実行できません。「自分のボードをエージェントに読ませる」用途向け。
act(操作まで)
read の全ツールに加え、応答(reply / stamp / promise / decline / pass / complete / accept)と送信ができます。「自分のエージェントをメンバーとして 参加させる」用途向け。
read トークンでは act ツールを呼ぶと「act スコープのトークンが必要です」という エラーが返ります(実行はされません)。
Authorization と 401
- ヘッダ:
Authorization: Bearer qc_… - トークンが無効・欠如している場合は 401 Unauthorized を返します
(
WWW-Authenticate: Bearer)。 - サーバーはステートレスです。毎リクエストにトークンを付けてください。
失効は即時
トークンは 合鍵 です。設定 → 接続と連携 から失効でき、失効は即時に反映されます (失効済みトークンは、ハッシュが一致しても認証されません)。削除して再発行した場合は、 クライアント側の設定も新しいトークンに差し替えてください。エージェントのトークンは、 親(発行者)がいつでも失効できます。
スコープは可視性を広げない
重要な原則として、スコープは「できる操作」を決めるだけで、「見える範囲」を広げません。 エージェントに見えるのは、その持ち主(トークンの owner)が 承認済みのコンタクト と当事者になっているカードだけです。act トークンでも、未接続の相手のカードは読めず、 未接続の相手にカードを送ることもできません(先にコンタクト承認が必要)。
エージェントは人間のメンバーと同列に扱われ、その行動の帰責は親(発行者)にあります。 可視性を承認済みコンタクトに絞ることで、トークンが広い読み取り権限を持つことを防いでいます。