Recap Raven
公式Discord D&Dノートテイカー:あらゆるAIからTTRPGセッションのリキャップ、クエスト、NPC、文字起こしを検索して引用できます。Recap Raven APIキーが必要です。
Recap Raven MCPで何ができますか?
- キャンペーンとセッションを一覧表示 — AIにキャンペーンの一覧表示を依頼し、詳細を取得する前にセッション番号を正しいリキャップに対応付けます。
- トランスクリプトとビートを検索 — トランスクリプトの発言やシーンビートに対して完全一致のキーワード検索を実行し、名前、アイテム、場所がどこで登場したかを見つけます。
- リキャップとトランスクリプトの範囲を読む — プレイヤー向けの安全なリキャップ、またはセッションに保存された発言のインデックス範囲による位置指定の抜粋を取得します。
- 準備と未解決のフックを確認 — 未解決の物語フック、次セッションの準備パック、キャンペーンの前回までのあらすじを取得します。
- エンティティと伝承を調べる — エンティティの一覧または個別のエンティティカード、さらに伝承ドキュメントと用語集のエントリを取得します。
- エンゲージメントとクエストを確認 — 話者ごとの参加傾向、プレイヤーに表示されるクエストログ、Askクレジットの使用状況を読み取ります。
ホスト型 MCP サーバー
npx add-mcp 'https://mcp.recapraven.com/mcp'Claude Code、Codex、Cursor などにインストールできます
ドキュメント
カスタム AI ワークフロー向け
あなたのキャンペーンツールを、互換性のある AI クライアントで。
MCP を通じてリキャップとキャンペーンデータを読み取れます。既存の API キーアクセスは互換性のあるクライアントで利用できます。公開クライアント ID をサポートする AI アプリからサインインしてください。接続する前に、以下でお使いのクライアントの要件を確認してください。
MCP とは?
MCP を使うと、互換性のある AI アプリが Recap Raven のツールを直接呼び出せます。リキャップを別の AI にコピーする代わりに、AI が Recap Raven にセッション、トランスクリプトの範囲、フック、エンティティ、引用、キャンペーンに関する回答を問い合わせられます。
はじめに
Raven のリモート MCP エンドポイントは https://mcp.recapraven.com/mcp です。セットアップ手順についてはクライアントを選択してください。Premium には決定論的読み取りが含まれます。メモリ検索と AI 回答には Searchable Memory が必要です。
MCP エンドポイント
https://mcp.recapraven.com/mcp
ChatGPT のセットアップ
- ChatGPT のウェブサイトで Plugins を開き、+ を選択してから Add custom MCP server を選びます。「Recap Raven」と以下のサーバー URL を入力します。
- Raven のサインインが有効な場合は、OAuth と公開クライアント認証を用いる公開クライアント ID(CIMD)オプションを選択します。クライアントシークレットや Raven API キーは不要です。Raven は自動クライアント登録をサポートしていません。
- プラグインを作成してインストールし、Raven にサインインしてアプリの ID と要求されたアクセスを確認します。自分で開始した接続のみを承認してください。
- 会話の中で @ を使って Recap Raven を選択し、「Use Recap Raven to list my campaigns.」と尋ねます。
- 読み取りおよび書き込みツールは、あなたの権限と確認に依存します。セットアップが不足している場合は、ワークスペースの制限と、お使いのアプリの公式 ChatGPT セットアップガイドを確認してください。
ChatGPT リモートサーバー URL
https://mcp.recapraven.com/mcp
同意と接続のヘルプ
Raven のサインイン接続では、キャンペーン、トランスクリプト、GM 専用情報へのアクセス許可を求められます。ツールの結果は選択した AI プロバイダーに送信され、有料ツールは既存の Ask クレジットを消費します。
バックグラウンドアクセスを承認すると、アプリは最大 30 日間接続を更新できます。Raven からサインアウトしている場合でも同様です。有効期限切れまたは取り消し後は、再接続して再度承認してください。アカウント設定では、承認済みの AI 接続を確認し、1 つの接続を切断するか、Disconnect all AI connections を使用できます。API キーは別途管理されます。
結果が空ですか?キャンペーンを所有する Raven アカウントにサインインしていることを確認してください。プランの変更によりツールアクセスが失われることがあります。AI 回答には利用可能なクレジットも必要です。同意が期限切れまたは失敗した場合は、クライアントから接続をやり直してください。
メニューが見つからない場合やサポートされていないワークスペースは、Raven キーを変更しても解決できません。リンクされたベンダーの要件を確認するか、アプリ名、バージョン、エラーメッセージを添えてDiscord コミュニティにお問い合わせください。トークンやキーは送信しないでください。
Premium と Searchable Memory で利用可能
Premium には API キーと、利用可能なリキャップ、トランスクリプト、手動の World データへのアクセスが含まれます。メモリツール、キャンペーン検索、AI 回答には Searchable Memory が必要です。セマンティック検索と AI 回答は既存の Ask クレジットを消費します。
プラン別の MCP 利用可否
| 無料プラン | 利用不可 |
| Premium | API キー、利用可能なリキャップ、トランスクリプト、手動の World データ。メモリツールは含まれません。 |
| メモリ付きプラン | 決定論的ツールは追加費用なし。search_corpus は検索ごとに低いチャットクレジットを消費し、引用付き ask ツールは Ask クレジットを消費します。 |
| API キー | API Keysから個人用 API キーを作成します。いつでも取り消し可能。アカウントが Free に戻ると MCP アクセスは終了します。 |
フェアユースとレート制限
MCP サーバーは共有の従量制サーフェスです。持続可能な運用を保つため(そして暴走したエージェントループが数分でライセンス全体を消費するのを防ぐため)、すべての API キーは Ask の許容量に加えてレート制限されます。
MCP レート制限
| サーバーのフェアユース | MCP サーバー自体に対する API キーごとのリクエスト上限(すべてのツール呼び出しの合計)— 単一のキーがエンドポイントを溢れさせるのを防ぎます。上限を超える応答は Retry-After 付きの 429 を返します。 |
| Premium · 全プラン / Memory · 5 セッション | 15 リクエスト/分、150 リクエスト/時。 |
| Memory · 10 セッション | 30 リクエスト/分、450 リクエスト/時。 |
| Memory · 20 セッション | 60 リクエスト/分、1200 リクエスト/時。 |
| 無料ツール | API キーごとにレート制限されます。決定論的読み取りとキーワード検索(search_transcript、search_facts)はクレジットを消費しません。セマンティック search_corpus はここには含まれません。完了した検索ごとに低いチャットクレジットを消費します。 |
| チャットクレジットツール | search_corpus(低いチャットクレジット)と引用付き ask ツールは、Ask の許容量_と_キーごとのレート制限の_両方_によって制限されます。使用量ゲートは許容量が尽きたときに消費を停止し、レート制限はバーストがそれを瞬時に使い果たすのを防ぎます。別個の MCP クォータはありません — エージェントはアプリ内で使用するのと同じライセンスごとのチャットクレジットを消費します。 |
追加費用なしで含まれるもの
決定論的読み取りツール — セッション、エンティティと台帳、フック、メカニクス、エンゲージメント、トランスクリプトとビート検索、リキャップ、伝承と用語集。これらは AI 推論なしで保存されたキャンペーンデータを返すため、利用可能なツールはクレジットを消費しません。メモリツールには引き続き Searchable Memory が必要です。セマンティック search_corpus はこのリストに含まれません。低いチャットクレジットを消費します。各ツールを展開すると、入力例、出力例、フィールドリファレンスが表示されます。
list_campaigns
追加のツール料金なし
ディスカバリーツール:MCP キーで利用可能なキャンペーンを一覧表示し、他のツールが正しい campaign_id を使用できるようにします。
入力例
{}
出力例
{
"campaigns": [
{
"campaign_id": "a1b2c3d4-…",
"name": "The White Moose",
"module": "Dolmenwood"
}
]
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| campaigns | array | あなたのアカウントが所有するキャンペーン。 |
| campaigns[].campaign_id | string (uuid) | キャンペーンを対象とする MCP ツールでこの ID を使用します。 |
| campaigns[].name | string | キャンペーン名。 |
| campaigns[].module | string | null | 任意のモジュール/システムラベル。 |
list_sessions
追加のツール料金なし
ディスカバリーツール:準備完了のセッションを session_number とタイトルとともに一覧表示し、エージェントが「セッション 12」を正しい recap_id にマッピングできるようにします。
入力例
{
"campaign_id": "a1b2c3d4-…"
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| campaign_id | string (uuid) | 省略可 | 任意のキャンペーンフィルター。 |
出力例
{
"recaps": [
{
"recap_id": "r1e2c3a4-…",
"campaign_id": "a1b2c3d4-…",
"session_number": 12,
"title": "The Choosing",
"status": "ready"
}
]
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| recaps | array | あなたのアカウントに表示される準備完了のセッション。 |
| recaps[].recap_id | string (uuid) | get_recap、get_transcript_window、get_mechanics_events でこの ID を使用します。 |
| recaps[].campaign_id | string (uuid) | null | セッションを所有するキャンペーン。 |
| recaps[].session_number | integer | null | GM 自身の 1 始まりのセッション番号(DM が編集可能)。設定されている場合。 |
| recaps[].title | string | null | セッションタイトル。 |
| recaps[].status | string | 準備完了のセッションのみが一覧表示されます。 |
get_engagement
追加のツール料金なし
キャンペーンエンゲージメントダッシュボード:話者ごとの参加傾向と、キャッシュされたセッション横断の統合(要約 + 主要イベントのタイムライン)。
入力例
{
"campaign_id": "a1b2c3d4-…"
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| campaign_id | string (uuid) | 読み取るキャンペーン。あなたのアカウントが所有している必要があります。 |
出力例
{
"sessions": [
{
"recap_id": "…",
"session_ref": "S01AB",
"session_at": "2026-06-20T19:00:00Z"
}
],
"players": [
{
"speaker": "Mira",
"points": [
{
"session_ref": "S01AB",
"participation_pct": 28.4,
"turn_count": 42,
"talk_time_seconds": 612,
"word_count": 1840
}
]
}
]
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| sessions | array | キャンペーン内の準備完了セッションごとに 1 エントリ。 |
| sessions[].recap_id | string (uuid) | リキャップ/セッション ID。 |
| sessions[].session_ref | string | 短い人間向け参照。例:S01AB。 |
| sessions[].session_at | string (ISO 8601) | セッション開始日時(UTC)。 |
| players | array | 認識された話者ごとに 1 エントリ。 |
| players[].speaker | string | 話者の表示名。 |
| players[].points | array | この話者のセッションごとの指標。 |
| players[].points[].participation_pct | number | 会話の割合、0〜100。 |
| players[].points[].turn_count | integer | 発言ターン数。 |
| players[].points[].talk_time_seconds | integer | 発言の合計秒数。 |
| players[].points[].word_count | integer | 発言した合計語数。 |
get_credit_balance
追加のツール料金なし
Ask の許容量を使用率(パーセント)で示し、最近のアクティビティフィードを添えます。生の許容量カウントは MCP クライアントには公開されません。
入力例
{}
出力例
{
"usage": {
"percent_used": 29
},
"recent_activity": [
{
"type": "recap_ready",
"label": "Session S01AB recap is ready",
"date": "2026-06-21T08:02:00Z",
"recap_id": "…"
},
{
"type": "credit",
"label": "Asked your campaign",
"date": "2026-06-21T08:05:00Z"
}
]
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| usage.percent_used | integer | 0 から 100 までの整数の Ask 使用率。 |
| recent_activity | array | 新しい順のフィード(session-recorded、recap-ready、credit-ledger イベント)。 |
| recent_activity[].type | string | イベントの種類。 値:recap_ready | session_recorded | credit |
| recent_activity[].label | string | 人間が読める要約。 |
| recent_activity[].date | string (ISO 8601) | イベントの発生日時。 |
| recent_activity[].recap_id | string (uuid) | null | リキャップ/セッション関連イベントの場合に存在。 |
get_memory_overview
追加のツール料金なし
GM の状況把握として最も豊富なデータの塊:分布、エンゲージメント傾向 + 総合スコア、セッションごとの参加状況、プレイの柱。
入力例
{
"campaign_id": "a1b2c3d4-…"
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| campaign_id | string (uuid) | 読み取るキャンペーン。 |
出力例
{
"distribution": [
{
"label": "Roleplay",
"pct": 58
}
],
"engagement": {
"overall": {
"score": 74,
"label": "Playful / tense"
}
},
"pillars": [
"The green-eyed stranger",
"The old inn",
"The white moose hunt"
]
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| distribution | array | カテゴリ別のプレイ割合。 |
| distribution[].label | string | カテゴリ名。 |
| distribution[].pct | number | 割合、0〜100。 |
| engagement.overall.score | number | null | 総合エンゲージメントスコア、0〜100。 |
| engagement.overall.label | string | null | 定性的ラベル。例:「遊び心 / 緊張」。 |
| pillars | string[] | null | 繰り返し現れるテーマ / プレイの柱。 |
get_quest_log
追加のツール料金なし
プレイヤーに表示されるクエストログ。GM の追加と編集は Discord /questlog を通じてパーティーと共有されます。GM の秘密は含めないでください。
入力例
{
"campaign_id": "a1b2c3d4-…",
"page": 1
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| campaign_id | string (uuid) | 読み取るあなたのキャンペーン。 |
| page | integer | 任意、1 から開始。1 ページあたり 10 クエスト。 |
出力例
{
"quests": [
{
"id": "d4e5f6a7-…",
"title": "Find the missing courier",
"objective": "Follow the trail from the bridge.",
"status": "active",
"progress": "The party found a torn satchel."
}
],
"page": 1,
"has_more": false
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| quests | array | アクティブ/停滞が先、次に完了/放棄。内部の編集メタデータとソースリンクは除外されます。 |
| quests[].id | string (uuid) | クエスト識別子。 |
| quests[].title | string | クエストタイトル。 |
| quests[].objective | string | パーティーの目的。 |
| quests[].status | string | active、stale、completed、abandoned のいずれか。 |
| quests[].progress | string | 最後に保存された進捗。 |
| page | integer | 現在のページ。 |
| has_more | boolean | true の場合は次のページをリクエストしてください。 |
get_open_hooks
追加のツール料金なし
未解決の物語フック — 次回セッションの準備に役立つもの。
入力例
{
"campaign_id": "a1b2c3d4-…"
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| campaign_id | string (uuid) | 読み取るキャンペーン。 |
出力例
{
"hooks": [
{
"text": "Nobody bypasses the Choosing.",
"session_ref": "S01AB",
"session_date": "2026-06-20"
}
]
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| hooks | array | 現在オープンな物語フック。 |
| hooks[].text | string | フックの説明。 |
| hooks[].session_ref | string | フックが導入されたセッション。 |
| hooks[].session_date | string (YYYY-MM-DD) | そのセッションの日付。 |
get_previously_on
追加のツール料金なし
キャンペーンのこれまでのあらすじのコンテキスト。オーナー範囲のメモリから構築されます。
入力例
{
"campaign_id": "a1b2c3d4-…"
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| campaign_id | string (uuid) | 読み取るキャンペーン。 |
出力例
{
"sections": [
{
"title": "Last time",
"bullets": [
"The party followed the white moose into the mist."
]
}
]
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| sections | array | リキャップ/コンテキスト用のキャンペーンメモリセクション。 |
| sections[].title | string | セクション見出し。 |
| sections[].bullets | string[] | 簡潔なメモリの箇条書き。 |
get_next_session_prep_pack
追加のツール料金なし
GM専用の次回セッション準備アドバイザリーで、Recap Ravenの準備キャッシュから提供されます。一度だけ生成され、その後は次のリキャップが取り込まれるまでキャッシュされたままになります。credit_cost: 0 を返します。
入力例
{
"campaign_id": "a1b2c3d4-…"
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| campaign_id | string (uuid) | 準備対象のキャンペーン。あなたのアカウントが所有している必要があります。 |
出力例
{
"likely_directions": [
{
"title": "Return to the inn",
"detail": "The unresolved clue points back to the old inn."
}
],
"threads_to_watch": [
"Who opened the moonstone gate?"
],
"prep_suggestions": [
"Review the innkeeper and the gate password."
],
"credit_cost": 0,
"cache_policy": "cached_until_next_recap_ingested"
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| likely_directions | array | GM向けの、次に起こりそうな方向性。 |
| threads_to_watch | string[] | GMが心に留めておくとよいスレッド。 |
| prep_suggestions | string[] | GM向けの具体的な準備プロンプト。 |
| credit_cost | number | このMCPツールでは常に0。 |
| cache_policy | string | cached_until_next_recap_ingested。 |
get_chronicle
追加のツール課金なし
セッションごとのシーンマップ — 構造化されたキャンペーンクロニクル。
入力例
{
"campaign_id": "a1b2c3d4-…"
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| campaign_id | string (uuid) | 読み取るキャンペーン。 |
出力例
{
"sessions": [
{
"recap_id": "…",
"session_ref": "S01AB",
"scenes": [
"The market",
"The hunt",
"The banshee fight"
]
}
]
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| sessions | array | セッションごとに1エントリ。 |
| sessions[].recap_id | string (uuid) | リキャップ/セッションのID。 |
| sessions[].scenes | string[] | そのセッションの順序付きシーンラベル。 |
get_entity
追加のツール課金なし
記録されたセッションから導出された、プレイヤーに表示可能なエンティティ台帳。非公開でアップロードされた設定資料は除外されます。名前を指定しない場合は名簿を返します。名前または別名を指定した場合は、一致するカード、インタラクション履歴、トランスクリプトのターンリンク、関係、または曖昧な候補を返します。
入力例
{
"campaign_id": "a1b2c3d4-…",
"name": "Captain Vale"
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| campaign_id | string (uuid) | 読み取るキャンペーン。 |
| name | string | omitted | 単一のカードに解決するエンティティ名/別名。名簿を取得する場合は省略します。 |
出力例
{
"entity": {
"id": "…",
"canonical_name": "Captain Vale",
"kind": "npc",
"aliases": [
"Vale"
],
"search_aliases": [],
"interactions": [
{
"recap_id": "…",
"summary": "Vale warned the party.",
"turn_start": 12,
"turn_end": 16
}
],
"relations": [
{
"subject": "Captain Vale",
"predicate": "located_in",
"object": "Saltmoor Harbour",
"recap_id": "…",
"turn_start": 41,
"turn_end": 44,
"visibility": "player_known",
"session_date": "2026-05-01T00:00:00Z",
"is_current": true,
"predicate_class": "stateful"
}
]
}
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| entities | array (名簿モード) | 名前が指定されていない場合: 各エンティティの {canonical_name, kind, aliases, search_aliases}。 |
| entity | object | null (カードモード) | 名前が指定された場合: 解決されたエンティティカード、または名前に一致するものがない場合はnull。 |
| candidates | array | 別名が曖昧な場合の候補エンティティカード。解決が一意の場合は空。 |
| entity.id | string (uuid) | 安定したキャンペーンエンティティID。 |
| entity.canonical_name | string | 正規のエンティティ名。 |
| entity.kind | string | エンティティの種類。 の値: pc | npc | creature | place | item | faction | deity | other |
| entity.aliases | string[] | 表示用の別名。 |
| entity.search_aliases | string[] | 検索専用の別名。 |
| entity.interactions | array | リキャップおよびトランスクリプトのターンリンク付きの、根拠に基づく履歴エントリ。 |
| entity.interactions[].recap_id | string (uuid) | インタラクションを含むセッション。 |
| entity.interactions[].turn_start | integer | null | 根拠リンクの最初のトランスクリプトターン。 |
| entity.interactions[].turn_end | integer | null | 根拠リンクの最後のトランスクリプトターン。 |
| entity.interactions[].identity_match | string | confirmed または suggested。suggested のリンクは別名の一致候補であり、正規の同一性の主張ではありません。 の値: confirmed | suggested |
| entity.relations | array | 関係グラフ(古い → 新しい)。 |
| entity.relations[].predicate | string | 例: located_in、ally_of、owns。 |
| entity.relations[].recap_id | string (uuid) | その関係の根拠となるセッション。 |
| entity.relations[].visibility | string | エッジのGM可視性。従来の証人以前のデータには dm_only のエッジが含まれる場合があります — プレイヤーには表示しないでください。 の値: player_known | dm_only |
| entity.relations[].is_current | boolean | 状態を持つ述語の現在有効な部分。 |
get_mechanics_events
追加のツール課金なし
1つのセッションに対するターンに紐づくメカニクスイベント(攻撃、呪文、ダメージ、休息、状態)— メカニクスタブと同じデータです。
入力例
{
"recap_id": "…"
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| recap_id | string (uuid) | 読み取るセッション。IDの確認には list_sessions を使用してください。 |
出力例
{
"recap_id": "…",
"mechanics": [
{
"action": "attack",
"actor": "Mira",
"target": "Goblin",
"damage_amount": 7,
"damage_type": "slashing",
"evidence_turn_start": 41,
"evidence_turn_end": 41
}
]
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| recap_id | string (uuid) | これらのイベントが属するセッション。 |
| mechanics | array | ターンに紐づくメカニクスイベント。 |
| mechanics[].action | string | イベントの種類。 の値: attack | spell_cast | short_rest | long_rest | consumable_used | condition_applied | ability_used | form_changed |
| mechanics[].actor | string | 行動した主体。 |
| mechanics[].evidence_turn_start | integer | イベントの根拠となる最初のターン。 |
| mechanics[].evidence_turn_end | integer | イベントの根拠となる最後のターン。 |
get_lore_documents
追加のツール課金なし
キャンペーンの設定資料ドキュメントの一覧。
入力例
{
"campaign_id": "a1b2c3d4-…"
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| campaign_id | string (uuid) | 読み取るキャンペーン。 |
出力例
{
"documents": [
{
"id": "…",
"title": "The Choosing",
"updated_at": "2026-06-20"
}
]
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| documents | array | 設定資料ドキュメント。 |
| documents[].id | string (uuid) | ドキュメント識別子。 |
| documents[].title | string | ドキュメントのタイトル。 |
get_lore_document
追加のツール課金なし
本文全体を含む単一の設定資料ドキュメント。
入力例
{
"campaign_id": "a1b2c3d4-…",
"doc_id": "…"
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| campaign_id | string (uuid) | 読み取るキャンペーン。 |
| doc_id | string (uuid) | 取得する設定資料ドキュメント。 |
出力例
{
"document": {
"id": "…",
"title": "The Choosing",
"body": "…"
}
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| document.id | string (uuid) | ドキュメント識別子。 |
| document.title | string | ドキュメントのタイトル。 |
| document.body | string | ドキュメントの本文全体(markdown)。 |
get_lexicon
追加のツール課金なし
レキシコンエントリ(正規名、別名、種類、信頼度)。
入力例
{
"campaign_id": "a1b2c3d4-…"
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| campaign_id | string (uuid) | 読み取るキャンペーン。 |
出力例
{
"entries": [
{
"id": "…",
"canonical": "Sol’Thun",
"type": "npc",
"aliases": [
"the archmage"
],
"confidence": 0.92,
"enabled": true
}
]
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| entries | array | レキシコンエントリ。 |
| entries[].canonical | string | 正規名。 |
| entries[].type | string | エンティティの種類。 の値: npc | place | item | creature | other |
| entries[].aliases | string[] | 別名 / 代替名。 |
| entries[].confidence | number | 抽出の信頼度、0〜1。 |
| entries[].enabled | boolean | このエントリが有効かどうか。 |
get_transcript_window
追加のツール課金なし
セッションに保存されたターンの位置指定スライス(コンテンツ検索は行わず、from/toのターンインデックスのみ)。
入力例
{
"recap_id": "…",
"from": 0,
"to": 20
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| recap_id | string (uuid) | 読み取るリキャップ/セッション。IDの確認には list_sessions を使用してください。 |
| from | integer | 開始ターンインデックス(含む、デフォルト0)。 |
| to | integer | 終了ターンインデックス。省略した場合は開始インデックスから50ターンの範囲。 |
出力例
{
"recap_id": "…",
"total_turns": 184,
"from": 0,
"to": 20,
"turns": [
{
"index": 0,
"t": "~00:01",
"speaker": "GM",
"text": "…"
}
]
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| total_turns | integer | セッション内の総ターン数。 |
| from | integer | 返された開始インデックス。 |
| to | integer | 返された終了インデックス。 |
| turns | array | 要求された範囲内のターン。 |
| turns[].index | integer | セッション内の位置インデックス。 |
| turns[].t | string | 相対タイムスタンプ(例: ~00:01)。 |
| turns[].speaker | string | 話者の表示名。 |
| turns[].text | string | 発話テキスト。 |
get_recap
追加のツール課金なし
準備完了のリキャップに対する、プレイヤーに安全なリキャップHTML。アーティファクトの種類はサーバー側で管理され、種類の入力はありません。
入力例
{
"recap_id": "…"
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| recap_id | string (uuid) | プレイヤーに安全なリキャップを取得するリキャップ/セッション。 |
出力例
{
"recap": {
"recap_id": "…",
"content_type": "player_recap_html",
"html": "<!doctype html>…",
"truncated": false
}
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| recap.recap_id | string (uuid) | リキャップ/セッションのID。 |
| recap.content_type | string | 常に player_recap_html。 の値: player_recap_html |
| recap.html | string | プレイヤーに安全なリキャップHTML。 |
| recap.truncated | boolean | MCPレスポンスの上限によりHTMLが切り詰められた場合にtrue。 |
search_transcript
追加のツール課金なし
キャンペーンのトランスクリプトターンに対する完全一致キーワード(全文)検索。完全なフレーズを含むターンを、そのセッション、話者、タイムスタンプとともに返します — LLMなし、埋め込みなし、クレジットなし。
入力例
{
"campaign_id": "a1b2c3d4-…",
"query": "white moose",
"recap_id": "r1e2c3a4-…"
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| campaign_id | string (uuid) | 検索するキャンペーン。 |
| query | string | 一致させる完全なフレーズ(トランスクリプトテキストに対する全文検索)。 |
| recap_id | string (uuid) | omitted | 任意のセッションスコープ。リキャップIDの確認には list_sessions を使用してください。 |
出力例
{
"query": "white moose",
"matches": [
{
"recap_id": "…",
"speaker": "GM",
"t": "~01:04",
"text": "All you know is that it’s a white moose."
}
]
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| query | string | 送信されたクエリのエコー。 |
| matches | array | 完全なフレーズを含むトランスクリプトターン(最良一致が先頭)。 |
| matches[].recap_id | string (uuid) | 一致した箇所の元のリキャップ/セッション。 |
| matches[].speaker | string | 一致したターンの話者。 |
| matches[].t | string | 相対タイムスタンプ(例: ~01:04)。 |
| matches[].text | string | 一致したトランスクリプトテキスト。 |
search_facts
追加のツール課金なし
キャンペーンのシーンビートに対するキーワード全文検索 — チャットレーンが推論の根拠とする、密でビートごとの要約です。正確な用語(名前、アイテム、場所)に最適です。ビートテキストをそのシーン/セッションの文脈とターン範囲とともに返すため、エージェントはその瞬間を特定し、次に正確なトランスクリプト範囲を取得できます。LLMなし、埋め込みなし、クレジットなし。自然言語による意味ベースの検索には search_corpus を使用してください。
入力例
{
"campaign_id": "a1b2c3d4-…",
"query": "white moose hunt",
"recap_id": "r1e2c3a4-…"
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| campaign_id | string (uuid) | 検索するキャンペーン。 |
| query | string | ビートテキストに対して一致させるキーワード(全文検索)。 |
| recap_id | string (uuid) | omitted | 任意のセッションスコープ。リキャップIDの確認には list_sessions を使用してください。 |
出力例
{
"matches": [
{
"recap_id": "…",
"session_number": 12,
"session_title": "The Choosing",
"scene_title": "The hunt",
"beat_index": 3,
"turn_start": 120,
"turn_end": 168,
"text": "The party tracked the white moose north of the old inn…",
"truncated": false
}
]
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| matches | array | 一致したビート(最良一致が先頭)。 |
| matches[].recap_id | string (uuid) | ビートの元のセッション。 |
| matches[].session_number | integer | null | GMのセッション番号(設定されている場合)。 |
| matches[].session_title | string | null | セッションのタイトル(設定されている場合)。 |
| matches[].scene_title | string | null | ビートが属するシーンのタイトル。 |
| matches[].beat_index | integer | シーン内でのビートの位置。 |
| matches[].turn_start | integer | ビートの範囲の最初のターン(get_transcript_window に渡します)。 |
| matches[].turn_end | integer | ビートの範囲の最後のターン。 |
| matches[].text | string | ビートテキスト(最大1200文字)。 |
| matches[].truncated | boolean | ビートテキストが切り詰められた場合にtrue。 |
チャットクレジットを使用
3つのツールは従量制のチャットクレジットを消費します。ファインダーと回答の違いを考えてください: search_corpus(低チャットクレジット)は、あなた自身のモデルが推論するための構造化された根拠として最強の一致を渡します — 高速なファインダーであり、網羅的なインデックスではありません。ask_campaign_cited はGM向けの質問に、逐語的なトランスクリプト引用とターン引用を付けて回答します。そして ask_player_campaign_cited はプレイヤーレーンを通じて、より短いプレイヤー向けのバージョンを提供します。いずれも残高に加えてAPIキーごとのレート制限があります。
search_corpus
低チャットクレジットを使用
search_corpus は、正確な文言がわからなくても関連するキャンペーンの瞬間を見つけ出します。セマンティック検索とリランキングを使用して、要約、セッションコンテキスト、ターン範囲を含む最も有力な証拠の一致を返します。これは検索ツールであり、網羅的な索引ではありません。上位の一致のみが返されるため、結果が空または乏しい場合は「強いものが見つからなかった」と捉えるべきで、何も存在しない証拠ではありません。一致結果を使ってテーブルが実際に使用した用語や名前を発見し、search_facts / search_transcript で網羅的な無料キーワード検索を実行するか、ターン範囲をそのまま get_transcript_window に渡して逐語的なセグメントを取得してください。質問に対する決定的で検証済みの回答(逐語的な引用と出典)が必要な場合は、代わりに ask_campaign_cited を使用してください(より高コストで、構造化された行ではなく文章による返答)。player_safe: true を設定すると、検索結果からGM専用コンテンツが除外されます。検索ごとに少ないチャットクレジットを消費し、一致がなかった場合でも完了した検索には課金されます。
入力例
{
"campaign_id": "a1b2c3d4-…",
"query": "when did the party first distrust the mayor?",
"player_safe": false
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| campaign_id | string (uuid) | 検索するキャンペーン。 |
| query | string | 探しているものの自然言語による説明。 |
| player_safe | boolean (デフォルト false) | true の場合、取得は可視性でフィルタリングされます — GM専用、推測および憶測のメモリ、GMが入力した伝承は除外されます。プレイヤーが見るものすべてに使用してください。 |
出力例
{
"matches": [
{
"object_id": "…",
"type": "plot_event",
"visibility": "player_known",
"recap_id": "…",
"session_number": 8,
"session_title": "The Mayor’s Bargain",
"turn_start": 212,
"turn_end": 240,
"text": "The party noticed the mayor’s story about the missing caravan didn’t add up…",
"truncated": false
}
],
"credit_cost": "<chat credits charged for this search>"
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| matches | array | ランク付けされたメモリの一致、最良の一致が最初。 |
| matches[].object_id | string (uuid) | メモリオブジェクトのID。 |
| matches[].type | string | メモリの種類(例: plot_event、npc_fact)。 |
| matches[].visibility | string | これを知っている人。player_safe 検索では、プレイヤーに可視のもののみになります。 |
| matches[].recap_id | string (uuid) | null | メモリの出所となったセッション。 |
| matches[].session_number | integer | null | 設定されている場合、GMのセッション番号。 |
| matches[].session_title | string | null | 設定されている場合、セッションのタイトル。 |
| matches[].turn_start | integer | null | 証拠ウィンドウの最初のターン(get_transcript_window に渡してください)。 |
| matches[].turn_end | integer | null | 証拠ウィンドウの最後のターン。 |
| matches[].text | string | メモリの要約(1200文字まで)。 |
| matches[].truncated | boolean | 要約が切り詰められた場合に true。 |
| credit_cost | number | この完了した検索に対して課金されたチャットクレジット。 |
ask_campaign_cited
チャットクレジットを使用
キャンペーンにGM向けの事実に関する質問をして、AIの回答を取得します — アプリ内チャットと同じビート回答エンジンで、逐語的なトランスクリプトの引用とターンの出典が付きます。GMチャットクレジットを使用し、アプリ内チャットと同じコストです。残高に加えて、APIキーごとにレート制限があります。
入力例
{
"campaign_id": "a1b2c3d4-…",
"question": "Where did the hunter see the moose?"
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| campaign_id | string (uuid) | 質問するキャンペーン。 |
| question | string | あなたの質問。 |
| clarification | object | 省略可 | オプション: エンジンが尋ねた確認質問に回答します(GMレーンのみ)。 |
| clarification.question | string | エンジンからの確認質問。 |
| clarification.answer | string | その質問に対するあなたの回答。 |
| supersedes | string | 省略可 | 置き換える以前の回答のメッセージID(GMレーンのみ)。 |
出力例
{
"answer_markdown": "The hunter reported seeing the white moose near the old inn to the north of town [1].",
"quotes": [
{
"turn": 104,
"speaker": "Skoll",
"text": "All you know is that it’s a white moose.",
"recap_id": "…"
}
],
"confidence_label": "high",
"credit_cost": 1
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| answer_markdown | string | 出典付きの回答。インラインの [n] マーカー付き。 |
| citations | array | 各マーカーを裏付ける出典メタデータ。 |
| quotes | array | 証拠として使用された逐語的なトランスクリプトの引用。 |
| confidence_label | string | 大まかな信頼度の帯。 値: high | medium | low |
| credit_cost | number | この回答に対して課金されたクレジット。 |
| quotes[].turn | integer | 引用されたターンインデックス。 |
| quotes[].recap_id | string (uuid) | null | 引用の出所となったセッション。 |
ask_player_campaign_cited
チャットクレジットを使用
プレイヤー向けの事実に関するキャンペーンの質問をして、トランスクリプトの出典付きで短いプレイヤーセーフな回答を取得します。GM専用コンテンツはサーバー側のプレイヤーレーンによって除外されます。プレイヤーチャットクレジットを使用します。
入力例
{
"campaign_id": "a1b2c3d4-…",
"question": "What do we know about the harbour?"
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| campaign_id | string (uuid) | 質問するキャンペーン。 |
| question | string | あなたの質問。 |
出力例
{
"answer_markdown": "The party knows the harbourmaster helped them find the missing crate [1].",
"quotes": [
{
"turn": 104,
"speaker": "Skoll",
"text": "The harbourmaster pointed us to the crate.",
"recap_id": "…"
}
],
"confidence_label": "medium",
"credit_cost": 1
}
フィールドの説明
| フィールド | 型 | 説明 |
|---|---|---|
| answer_markdown | string | 出典付きの回答。インラインの [n] マーカー付き。 |
| citations | array | 各マーカーを裏付ける出典メタデータ。 |
| quotes | array | 証拠として使用された逐語的なトランスクリプトの引用。 |
| confidence_label | string | 大まかな信頼度の帯。 値: high | medium | low |
| credit_cost | number | この回答に対して課金されたクレジット。 |
プレイヤーセーフの例
プレイヤー向けのボットやオーバーレイを構築していますか?プレイヤー出典ツールを使用して、回答がプレイヤーレーンから得られるようにしてください。その可視性でフィルタリングされた台帳にはGM専用コンテンツが決して含まれません:
{
"tool": "ask_player_campaign_cited",
"arguments": {
"campaign_id": "a1b2c3d4-…",
"question": "What do we know about the harbour?"
}
}
データの送信先
MCPクライアントを接続してこれらのツールを使用すると、キャンペーンコンテンツが選択したAIクライアント(例: ChatGPT、Claude、Gemini)に送信されます。そのプロバイダーのデータ使用およびトレーニング規約が、当社のものではなく、送信した内容に適用されます。
Recap Ravenのトレーニングなし保証は、当社独自のパイプラインと当社が開示するモデルプロバイダーを対象とします。接続したクライアントをカバーすることはできません。接続することで、キャンペーンデータの新しい処理者を選択することになります。接続する前にそのクライアントの規約を確認し、プレイヤーが見るものには ask_player_campaign_cited またはプレイヤーセーフ検索フィルターを使用してください(また、伝承やクロニクルのようなGM専用の読み取りは避けてください)。
質問やフィードバックがありますか?Recap Ravenの仕組みを見る か、下のボットを招待してください。
次のセッションでRecap Ravenを実行
ボットを招待し、キャンペーンを作成して、毎月無料のリキャップを取得しましょう。
カード不要 · テーブルの同意がある場合のみ録音 · データはいつでも削除またはエクスポート可能
質問やフィードバックがありますか?Discordコミュニティに参加 →
Discord音声向けに構築。セッション全体をあなたに代わってキャプチャします — 後からログインする必要も、ファイルを送る必要も、誰が話したかを推測する必要もありません。メモリプランは、プレイ中に編集可能なワールドウィキを最新の状態に保ち、何が起こったか、誰が何を言ったか、未解決のフック、次に何を準備するかについての質問に備えます。