/api/agent/v1 配下のエージェントコンテキスト REST API は、順位付け・重複排除・引用付きの証拠とガバナンス付きコンテキストセットを返します。

エージェントコンテキスト API

エージェントアクセス設定とエンドポイント
設定 → エージェントアクセスには、Context Pack API と MCP サーバーのエンドポイント、および有効な bdk_… 認証情報とバインド先コンテキストセットが表示されます。

エージェントコンテキスト API は、Bundata API サーバーの /api/agent/v1 配下で提供されます。すべてのリクエストは、設定 → エージェントアクセス で作成したスコープ付き認証情報(Authorization: Bearer bdk_<16 hex>_<43 base64url>)で認証します。

認証情報とスコープ

ワークスペースの owner と admin(agent_credential:manage)は、保存型ワークスペースあたり最大 50 個の有効な認証情報を管理できます(POST /api/w/:wsId/agent-credentials)。各認証情報は 1〜365 日で失効し、作成者の現在のワークスペース権限で動作し(権限喪失時は AGENT_CREDENTIAL_AUTHORITY_LOST)、ブラウザからのリクエスト(Origin または Sec-Fetch-* ヘッダー)を 403 AGENT_BROWSER_REQUEST_REFUSED で拒否します。

スコープ作成者の最小ロール許可される操作
context:readViewer(collection:read、document:read)コンテキストパック、パッセージ・グラフ・セクション・引用ツール、テンポラルグラフ読み取り、コンテキストセット検索、学習済みフィールドツール(list_fields、query_fields)
queries:runEditor(document:read、agent:run)パック内の文書全体証拠、検証済みルールテンプレート、承認済み SQL クエリテンプレート(run_query_template)
replay:runViewer(document:read)POST /api/agent/v1/replays/:replayId(verify または recompute)
gaps:reportViewer(library:read)MCP の report_context_gap(認証情報作成時の既定はオフ)
memory:readViewer(collection:read、document:read)作成者のエージェントメモリの想起と一覧(既定はオフ)
memory:writeEditor(document:read、agent:run)作成者のエージェントメモリの記憶と削除(既定はオフ)

コンテキストパックとリプレイ

POST /api/agent/v1/context-packs(および application/x-ndjson ストリーム用の /api/agent/v1/context-packs/stream)は、トークン予算内で決定論的に順位付け・重複排除された引用付き証拠パックを構築します。

curl -sS "$BUNDATA_URL/api/agent/v1/context-packs" \
  -H "Authorization: Bearer $BUNDATA_AGENT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "task": "Who is the current CFO, and since when?",
    "budget": { "maxTokens": 2000, "coverage": "best_effort" },
    "asOf": { "validTime": "2025-01-01T00:00:00Z" }
  }'
  • リクエストフィールド: task(1〜4,000 文字)、budget.maxTokens(256〜32,000、既定 4,000)、budget.maxLatencyMs(1,000〜60,000、既定 15,000)、budget.coverage(best_effort または require_complete)、asOf(validTime、systemTime)、filters(collectionIds 最大 8 個、documentIds 最大 20 件、sources: passages、graph、documents)、retrieval(hybrid または lexical)、および任意の contextSetId。
  • セット優先パッキング: contextSetId が指定された場合(または認証情報が 1 つの有効な コンテキストセット にバインドされている場合)、予算は verified_answers、definitions、instructions(trust: "approved" としてマーク)、required_evidence、evidence、whole_document の順に埋められます。
  • 信頼できない文書テキスト: 文書から引用されたすべての項目には trust: "untrusted"、および validity、superseded、contradiction フラグが付与され、返却前に読み取り権限が再確認されます。
  • リプレイ(POST /api/agent/v1/replays/:replayId、{ "mode": "verify" | "recompute", "task"?: string }): 記録されたすべての項目を現在の文書と照合(unchanged、changed、unavailable)するか、記録時点の条件でパックを再構築して差分を返します。リプレイ記録はハッシュのみを保持し、30 日後に失効します(410 AGENT_REPLAY_EXPIRED)。

コンテキストセットとライブラリのルート

以下の 4 つのルートはすべて context:read を必要とし、プロバイダーの埋め込み予算を消費せずに単語一致で照合し、コンテキストセットのスコープを強制します。

  • POST /api/agent/v1/context-sets/list({ query?, limit? })
  • POST /api/agent/v1/context-sets/get({ contextSetId? })
  • POST /api/agent/v1/definitions/lookup({ term, contextSetId?, limit? })
  • POST /api/agent/v1/verified-answers/match({ question, contextSetId?, limit? })

学習済みフィールドとクエリテンプレート

  • 学習済みフィールド(POST /api/agent/v1/fields/list および POST /api/agent/v1/fields/query、スコープ context:read): コレクションの正規化された学習済みフィールド(number、money、date、boolean、text)を確認し、構造化プラン(最大 6 個の fields、6 個の filters、sort、最大 200 行の limit、最大 50 グループの groupBy を伴う count/min/max/sum/avg の aggregate、および任意の knownAt: "YYYY-MM-DD")を実行します。各値にはリアルタイムで検証されたパッセージスパン引用(citation、または uncitedReason 付きの null)が含まれ、記載率が 90% 未満のフィールドがある場合は coverageLines と incomplete で示されます。
  • クエリテンプレート(POST /api/agent/v1/query-templates/run、スコープ queries:run): { templateId, parameters, contextSetId? } を渡して、有効なコンテキストセットに属する承認済み PostgreSQL クエリテンプレートを実行します。エージェントが生の SQL を送受信することはありません。