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 金鑰存取可與相容的用戶端搭配使用。請從支援公開用戶端身分的 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 設定

  1. 在 ChatGPT 網站上開啟 外掛,選擇 +,然後選取「新增自訂 MCP 伺服器」。輸入「Recap Raven」以及下方的伺服器 URL。
  2. 啟用 Raven 登入後,選擇 OAuth 以及採用公開用戶端驗證的已發布用戶端身分 (CIMD) 選項。不需要用戶端密鑰或 Raven API 金鑰。Raven 不支援自動用戶端註冊。
  3. 建立外掛、安裝外掛,然後登入 Raven 並檢視應用程式身分與要求的存取權限。只核准由你發起的連線。
  4. 在對話中,使用 @ 選取 Recap Raven 並詢問:「Use Recap Raven to list my campaigns.」
  5. 讀取與寫入工具取決於你的權限與確認設定。若缺少設定,請檢查工作區限制,並參閱你應用程式的官方 ChatGPT 設定指南。

ChatGPT 遠端伺服器 URL

https://mcp.recapraven.com/mcp

同意與連線說明

Raven 登入連線會要求取得存取你的戰役、逐字稿與僅限 GM 資訊的權限。工具結果會傳送給你所選的 AI 供應商,而付費工具會花費你現有的 Ask 額度。

若你核准背景存取,應用程式最多可在 30 天內重新整理其連線,即使你已登出 Raven 亦然。到期或撤銷後,請重新連線並再次核准。在帳戶設定中,檢視已核准的 AI 連線,並中斷單一連線或使用「中斷所有 AI 連線」。API 金鑰則另行管理。

結果為空?請確認你登入的是擁有你戰役的 Raven 帳戶。方案變更可能會移除工具存取權;AI 解答也需要有可用的額度。若同意已到期或失敗,請從用戶端重新啟動連線。

缺少選單或不受支援的工作區無法透過變更你的 Raven 金鑰來修正。請查看連結的供應商需求,或帶著應用程式名稱、版本與錯誤訊息聯絡我們的 Discord 社群。請勿傳送權杖或金鑰。

適用於 Premium 與 Searchable Memory

Premium 包含 API 金鑰,以及存取你可用的回顧、逐字稿與手動 World 資料。記憶工具、戰役搜尋與 AI 解答則需要 Searchable Memory。語意搜尋與 AI 解答會花費你現有的 Ask 額度。

各方案的 MCP 可用性

免費方案無法使用
PremiumAPI 金鑰、可用的回顧、逐字稿與手動 World 資料。不包含記憶工具。
含記憶的方案確定性工具不額外收費;search_corpus 每次搜尋使用少量聊天額度,而附引用的 ask 工具會花費 Ask 額度。
API 金鑰從 API 金鑰建立個人 API 金鑰。可隨時撤銷;當帳戶回到免費方案時,MCP 存取即結束。

合理使用與速率限制

MCP 伺服器是共享且計量的介面。為了維持其永續性(並避免失控的代理迴圈在幾分鐘內耗盡整份授權),每個 API 金鑰除了你的 Ask 額度外,還受到速率限制。

MCP 速率限制

伺服器合理使用MCP 伺服器本身對每個 API 金鑰的請求上限(所有工具呼叫合計)——防止單一金鑰灌爆端點。超過上限的回應會傳回 429 與 Retry-After。
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"
    }
  ]
}

欄位說明

欄位類型說明
campaignsarray你的帳戶所擁有的戰役。
campaigns[].campaign_idstring (uuid)將此 id 用於以戰役為範圍的 MCP 工具。
campaigns[].namestring戰役名稱。
campaigns[].modulestring | null選用的模組/系統標籤。

list_sessions 不額外收取工具費用

探索工具:列出已就緒的工作階段及其 session_number 與標題,讓代理能將「第 12 次工作階段」對應到正確的 recap_id。

範例輸入

{
  "campaign_id": "a1b2c3d4-…"
}

欄位說明

欄位類型說明
campaign_idstring (uuid) | 省略選用的戰役篩選條件。

範例輸出

{
  "recaps": [
    {
      "recap_id": "r1e2c3a4-…",
      "campaign_id": "a1b2c3d4-…",
      "session_number": 12,
      "title": "The Choosing",
      "status": "ready"
    }
  ]
}

欄位說明

欄位類型說明
recapsarray你的帳戶可見的已就緒工作階段。
recaps[].recap_idstring (uuid)將此 id 用於 get_recap、get_transcript_window 與 get_mechanics_events。
recaps[].campaign_idstring (uuid) | null擁有該工作階段的戰役。
recaps[].session_numberinteger | nullGM 自己的、從 1 開始的工作階段編號(DM 可編輯),若有設定時。
recaps[].titlestring | null工作階段標題。
recaps[].statusstring僅列出已就緒的工作階段。

get_engagement 不額外收取工具費用

戰役參與度儀表板:各發言者的參與趨勢,以及快取的跨工作階段綜合分析(摘要 + 關鍵事件時間軸)。

範例輸入

{
  "campaign_id": "a1b2c3d4-…"
}

欄位說明

欄位類型說明
campaign_idstring (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
        }
      ]
    }
  ]
}

欄位說明

欄位類型說明
sessionsarray戰役中每個已就緒工作階段各一筆。
sessions[].recap_idstring (uuid)回顧/工作階段 id。
sessions[].session_refstring簡短的人類可讀參照,例如 S01AB。
sessions[].session_atstring (ISO 8601)工作階段開始的時間(UTC)。
playersarray每個辨識出的發言者各一筆。
players[].speakerstring發言者顯示名稱。
players[].pointsarray此發言者各工作階段的指標。
players[].points[].participation_pctnumber對話佔比,0–100。
players[].points[].turn_countinteger發言回合數。
players[].points[].talk_time_secondsinteger發言總秒數。
players[].points[].word_countinteger發言總字數。

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_usedinteger從 0 到 100 的整數 Ask 使用量。
recent_activityarray最新在前的摘要(工作階段已錄製、回顧已就緒、額度帳本事件)。
recent_activity[].typestring事件種類。
值:recap_ready | session_recorded | credit
recent_activity[].labelstring人類可讀的摘要。
recent_activity[].datestring (ISO 8601)事件發生的時間。
recent_activity[].recap_idstring (uuid) | null與回顧/工作階段相關的事件才會出現。

get_memory_overview 不額外收取工具費用

最豐富的 GM 情境感知資料集:分佈、參與趨勢 + 整體分數、各工作階段參與度、遊玩支柱。

範例輸入

{
  "campaign_id": "a1b2c3d4-…"
}

欄位說明

欄位類型說明
campaign_idstring (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"
  ]
}

欄位說明

欄位類型說明
distributionarray各類別的遊玩佔比。
distribution[].labelstring類別名稱。
distribution[].pctnumber佔比,0–100。
engagement.overall.scorenumber | null綜合參與度分數,0–100。
engagement.overall.labelstring | null質性標籤,例如「Playful / tense」。
pillarsstring[] | null反覆出現的主題/遊玩支柱。

get_quest_log 不額外收取工具費用

玩家可見的任務日誌。GM 的新增與編輯會透過 Discord /questlog 與隊伍分享。請勿放入 GM 機密。

範例輸入

{
  "campaign_id": "a1b2c3d4-…",
  "page": 1
}

欄位說明

欄位類型說明
campaign_idstring (uuid)要讀取的你的戰役。
pageinteger選用,從 1 開始。每頁十個任務。

範例輸出

{
  "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
}

欄位說明

欄位類型說明
questsarray進行中/停滯者在前,接著是已完成/已放棄。內部編輯中繼資料與來源連結會被排除。
quests[].idstring (uuid)任務識別碼。
quests[].titlestring任務標題。
quests[].objectivestring隊伍的目標。
quests[].statusstringactive、stale、completed 或 abandoned。
quests[].progressstring最新儲存的進度。
pageinteger目前頁面。
has_moreboolean為 true 時請求下一頁。

get_open_hooks 不額外收取工具費用

未解決的敘事鉤子——下次工作階段該準備什麼。

範例輸入

{
  "campaign_id": "a1b2c3d4-…"
}

欄位說明

欄位類型說明
campaign_idstring (uuid)要讀取的戰役。

範例輸出

{
  "hooks": [
    {
      "text": "Nobody bypasses the Choosing.",
      "session_ref": "S01AB",
      "session_date": "2026-06-20"
    }
  ]
}

欄位說明

欄位類型說明
hooksarray目前開啟的敘事鉤子。
hooks[].textstring鉤子說明。
hooks[].session_refstring引入該鉤子的工作階段。
hooks[].session_datestring (YYYY-MM-DD)該工作階段的日期。

get_previously_on 不額外收取工具費用

戰役的前情提要脈絡,由擁有者範圍的記憶建構而成。

範例輸入

{
  "campaign_id": "a1b2c3d4-…"
}

欄位說明

欄位類型說明
campaign_idstring (uuid)要讀取的戰役。

範例輸出

{
  "sections": [
    {
      "title": "Last time",
      "bullets": [
        "The party followed the white moose into the mist."
      ]
    }
  ]
}

欄位說明

欄位類型說明
sectionsarray用於回顧/脈絡的戰役記憶區段。
sections[].titlestring區段標題。
sections[].bulletsstring[]精簡的記憶要點。

get_next_session_prep_pack 不額外收取工具費用 僅限 GM 的下一場遊戲準備建議,來自 Recap Raven 的準備快取。它可能生成一次,之後會保持快取,直到下一次回顧被匯入。回傳 credit_cost: 0。

範例輸入

{
  "campaign_id": "a1b2c3d4-…"
}

欄位說明

欄位類型說明
campaign_idstring (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_directionsarray面向 GM 的可能下一步方向。
threads_to_watchstring[]GM 可能想留意的線索。
prep_suggestionsstring[]給 GM 的具體準備提示。
credit_costnumber此 MCP 工具一律為 0。
cache_policystringcached_until_next_recap_ingested。

get_chronicle 不額外收取工具費用

每場遊戲場景地圖 — 結構化的戰役編年史。

範例輸入

{
  "campaign_id": "a1b2c3d4-…"
}

欄位說明

欄位類型說明
campaign_idstring (uuid)要讀取的戰役。

範例輸出

{
  "sessions": [
    {
      "recap_id": "…",
      "session_ref": "S01AB",
      "scenes": [
        "The market",
        "The hunt",
        "The banshee fight"
      ]
    }
  ]
}

欄位說明

欄位類型說明
sessionsarray每場遊戲一筆項目。
sessions[].recap_idstring (uuid)回顧/場次 id。
sessions[].scenesstring[]該場次依序排列的場景標籤。

get_entity 不額外收取工具費用

由已記錄場次推導出的玩家可見實體帳冊;私人上傳的設定資料會被排除。未提供名稱時回傳名冊。提供名稱或別名時,回傳相符的卡片、互動歷史、逐字稿回合連結、關聯,或歧義候選。

範例輸入

{
  "campaign_id": "a1b2c3d4-…",
  "name": "Captain Vale"
}

欄位說明

欄位類型說明
campaign_idstring (uuid)要讀取的戰役。
namestring | 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"
      }
    ]
  }
}

欄位說明

欄位類型說明
entitiesarray(名冊模式)未提供名稱時:每個實體的 {canonical_name, kind, aliases, search_aliases}。
entityobject | null(卡片模式)提供名稱時:解析出的實體卡片;若名稱未命中任何項目則為 null。
candidatesarray別名有歧義時的可能實體卡片;解析結果唯一時為空。
entity.idstring (uuid)穩定的戰役實體 id。
entity.canonical_namestring實體正式名稱。
entity.kindstring實體種類。
值:pc | npc | creature | place | item | faction | deity | other
entity.aliasesstring[]顯示用別名。
entity.search_aliasesstring[]僅供檢索用的別名。
entity.interactionsarray有依據的歷史項目,附回顧與逐字稿回合連結。
entity.interactions[].recap_idstring (uuid)包含該互動的場次。
entity.interactions[].turn_startinteger | null證據連結的第一個逐字稿回合。
entity.interactions[].turn_endinteger | null證據連結的最後一個逐字稿回合。
entity.interactions[].identity_matchstringconfirmed 或 suggested;suggested 連結是可能的別名相符,並非正式身分主張。
值:confirmed | suggested
entity.relationsarray關聯圖(由舊到新)。
entity.relations[].predicatestring例如 located_in、ally_of、owns。
entity.relations[].recap_idstring (uuid)為該關聯提供證據的場次。
entity.relations[].visibilitystring該邊的 GM 可見性。舊版見證前資料可能帶有 dm_only 邊 — 請勿向玩家揭露。
值:player_known | dm_only
entity.relations[].is_currentboolean具狀態述詞的現行分支。

get_mechanics_events 不額外收取工具費用

單一場次中以回合為錨點的機制事件(攻擊、法術、傷害、休息、狀態)— 與機制分頁相同的資料。

範例輸入

{
  "recap_id": "…"
}

欄位說明

欄位類型說明
recap_idstring (uuid)要讀取的場次。使用 list_sessions 探索 id。

範例輸出

{
  "recap_id": "…",
  "mechanics": [
    {
      "action": "attack",
      "actor": "Mira",
      "target": "Goblin",
      "damage_amount": 7,
      "damage_type": "slashing",
      "evidence_turn_start": 41,
      "evidence_turn_end": 41
    }
  ]
}

欄位說明

欄位類型說明
recap_idstring (uuid)這些事件所屬的場次。
mechanicsarray以回合為錨點的機制事件。
mechanics[].actionstring事件種類。
值:attack | spell_cast | short_rest | long_rest | consumable_used | condition_applied | ability_used | form_changed
mechanics[].actorstring行動者。
mechanics[].evidence_turn_startinteger為該事件提供證據的第一個回合。
mechanics[].evidence_turn_endinteger為該事件提供證據的最後一個回合。

get_lore_documents 不額外收取工具費用

該戰役的設定文件清單。

範例輸入

{
  "campaign_id": "a1b2c3d4-…"
}

欄位說明

欄位類型說明
campaign_idstring (uuid)要讀取的戰役。

範例輸出

{
  "documents": [
    {
      "id": "…",
      "title": "The Choosing",
      "updated_at": "2026-06-20"
    }
  ]
}

欄位說明

欄位類型說明
documentsarray設定文件。
documents[].idstring (uuid)文件識別碼。
documents[].titlestring文件標題。

get_lore_document 不額外收取工具費用

單一設定文件及其完整內容。

範例輸入

{
  "campaign_id": "a1b2c3d4-…",
  "doc_id": "…"
}

欄位說明

欄位類型說明
campaign_idstring (uuid)要讀取的戰役。
doc_idstring (uuid)要取得的設定文件。

範例輸出

{
  "document": {
    "id": "…",
    "title": "The Choosing",
    "body": "…"
  }
}

欄位說明

欄位類型說明
document.idstring (uuid)文件識別碼。
document.titlestring文件標題。
document.bodystring完整文件內容(markdown)。

get_lexicon 不額外收取工具費用

詞彙表項目(正式名稱、別名、類型、信心度)。

範例輸入

{
  "campaign_id": "a1b2c3d4-…"
}

欄位說明

欄位類型說明
campaign_idstring (uuid)要讀取的戰役。

範例輸出

{
  "entries": [
    {
      "id": "…",
      "canonical": "Sol’Thun",
      "type": "npc",
      "aliases": [
        "the archmage"
      ],
      "confidence": 0.92,
      "enabled": true
    }
  ]
}

欄位說明

欄位類型說明
entriesarray詞彙表項目。
entries[].canonicalstring正式名稱。
entries[].typestring實體種類。
值:npc | place | item | creature | other
entries[].aliasesstring[]替代名稱/別名。
entries[].confidencenumber擷取信心度,0–1。
entries[].enabledboolean此項目是否啟用。

get_transcript_window 不額外收取工具費用

場次已儲存回合的位置切片(不進行內容搜尋 — 僅依 from/to 回合索引)。

範例輸入

{
  "recap_id": "…",
  "from": 0,
  "to": 20
}

欄位說明

欄位類型說明
recap_idstring (uuid)要讀取的回顧/場次。使用 list_sessions 探索 id。
frominteger起始回合索引(含,預設 0)。
tointeger結束回合索引。省略則從起始索引取 50 回合視窗。

範例輸出

{
  "recap_id": "…",
  "total_turns": 184,
  "from": 0,
  "to": 20,
  "turns": [
    {
      "index": 0,
      "t": "~00:01",
      "speaker": "GM",
      "text": "…"
    }
  ]
}

欄位說明

欄位類型說明
total_turnsinteger場次中的回合總數。
frominteger回傳的起始索引。
tointeger回傳的結束索引。
turnsarray所請求視窗中的回合。
turns[].indexinteger場次中的位置索引。
turns[].tstring相對時間戳,例如 ~00:01。
turns[].speakerstring發言者顯示名稱。
turns[].textstring發言文字。

get_recap 不額外收取工具費用

就緒回顧的玩家安全回顧 HTML。成品類型由伺服器決定;沒有類型輸入。

範例輸入

{
  "recap_id": "…"
}

欄位說明

欄位類型說明
recap_idstring (uuid)要取得其玩家安全回顧的回顧/場次。

範例輸出

{
  "recap": {
    "recap_id": "…",
    "content_type": "player_recap_html",
    "html": "<!doctype html>…",
    "truncated": false
  }
}

欄位說明

欄位類型說明
recap.recap_idstring (uuid)回顧/場次 id。
recap.content_typestring一律為 player_recap_html。
值:player_recap_html
recap.htmlstring玩家安全回顧 HTML。
recap.truncatedboolean當 MCP 回應上限截斷 HTML 時為 true。

search_transcript 不額外收取工具費用

對你的戰役逐字稿回合進行精確關鍵字(全文)搜尋。回傳包含該精確詞句的回合,附上其場次、發言者與時間戳 — 不使用 LLM、不使用嵌入、不消耗點數。

範例輸入

{
  "campaign_id": "a1b2c3d4-…",
  "query": "white moose",
  "recap_id": "r1e2c3a4-…"
}

欄位說明

欄位類型說明
campaign_idstring (uuid)要搜尋的戰役。
querystring要相符的精確詞句(對逐字稿文字進行全文搜尋)。
recap_idstring (uuid) | omitted選用的場次範圍。使用 list_sessions 探索回顧 id。

範例輸出

{
  "query": "white moose",
  "matches": [
    {
      "recap_id": "…",
      "speaker": "GM",
      "t": "~01:04",
      "text": "All you know is that it’s a white moose."
    }
  ]
}

欄位說明

欄位類型說明
querystring回傳所提交查詢的內容。
matchesarray包含該精確詞句的逐字稿回合,最相符者在前。
matches[].recap_idstring (uuid)相符項目來自的回顧/場次。
matches[].speakerstring相符回合的發言者。
matches[].tstring相對時間戳,例如 ~01:04。
matches[].textstring相符的逐字稿文字。

search_facts 不額外收取工具費用

對你的戰役場景節拍進行關鍵字全文搜尋 — 聊天通道用來推理的密集、逐拍摘要。最適合精確詞彙(名稱、物品、地點)。回傳節拍文字及其場景/場次脈絡與回合範圍,讓代理能定位該時刻,接著取得精確的逐字稿視窗。不使用 LLM、不使用嵌入、不消耗點數。若需自然語言、基於語意的查詢,請使用 search_corpus。

範例輸入

{
  "campaign_id": "a1b2c3d4-…",
  "query": "white moose hunt",
  "recap_id": "r1e2c3a4-…"
}

欄位說明

欄位類型說明
campaign_idstring (uuid)要搜尋的戰役。
querystring要對節拍文字進行相符的關鍵字(全文搜尋)。
recap_idstring (uuid) | omitted選用的場次範圍。使用 list_sessions 探索回顧 id。

範例輸出

{
  "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
    }
  ]
}

欄位說明

欄位類型說明
matchesarray相符的節拍,最相符者在前。
matches[].recap_idstring (uuid)節拍來自的場次。
matches[].session_numberinteger | nullGM 的場次編號(若有設定)。
matches[].session_titlestring | null場次標題(若有設定)。
matches[].scene_titlestring | null節拍所屬場景的標題。
matches[].beat_indexinteger節拍在其場景中的位置。
matches[].turn_startinteger節拍視窗的第一個回合(可傳入 get_transcript_window)。
matches[].turn_endinteger節拍視窗的最後一個回合。
matches[].textstring節拍文字(上限 1200 字元)。
matches[].truncatedboolean當節拍文字被截斷時為 true。

使用聊天點數

有三個工具會消耗計量的聊天點數。可想像成尋找器與答案: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_idstring (uuid)要搜尋的戰役。
querystring以自然語言描述你要找的內容。
player_safeboolean (預設 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>"
}

欄位說明

欄位類型說明
matchesarray依序排列的記憶匹配,最佳匹配在前。
matches[].object_idstring (uuid)記憶物件的 id。
matches[].typestring記憶的種類(例如 plot_event、npc_fact)。
matches[].visibilitystring誰知道這件事。在 player_safe 搜尋中,只會是玩家可見的內容。
matches[].recap_idstring (uuid) | null該記憶來自的場次。
matches[].session_numberinteger | nullGM 的場次編號(若有設定)。
matches[].session_titlestring | null場次標題(若有設定)。
matches[].turn_startinteger | null證據範圍的第一個回合(可傳入 get_transcript_window)。
matches[].turn_endinteger | null證據範圍的最後一個回合。
matches[].textstring記憶摘要(上限 1200 字元)。
matches[].truncatedboolean摘要被截斷時為 true。
credit_costnumber此次完成搜尋所扣的聊天額度。

ask_campaign_cited 使用聊天額度

向你的戰役提出一個面向 GM 的事實性問題,取得 AI 答案——與應用程式內聊天相同的 beats 答案引擎,附逐字轉錄引文與回合引用。使用 GM 聊天額度,費用與應用程式內聊天相同。除餘額外,另依 API 金鑰進行速率限制。

範例輸入

{
  "campaign_id": "a1b2c3d4-…",
  "question": "Where did the hunter see the moose?"
}

欄位說明

欄位類型說明
campaign_idstring (uuid)要提問的戰役。
questionstring你的問題。
clarificationobject | 省略選填:回答引擎提出的釐清問題(僅限 GM 通道)。
clarification.questionstring引擎提出的釐清問題。
clarification.answerstring你對該問題的回答。
supersedesstring | 省略要取代之先前答案的訊息 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_markdownstring附引用的答案,含行內 [n] 標記。
citationsarray支撐每個標記的引用中繼資料。
quotesarray作為證據使用的逐字轉錄引文。
confidence_labelstring粗略的信心區間。
值:high | medium | low
credit_costnumber此答案所扣的額度。
quotes[].turninteger被引用的回合索引。
quotes[].recap_idstring (uuid) | null引文來自的場次。

ask_player_campaign_cited 使用聊天額度

提出一個面向玩家的戰役事實性問題,取得附轉錄引用的簡短玩家安全答案。僅限 GM 的內容會由伺服器端的玩家通道排除。使用玩家聊天額度。

範例輸入

{
  "campaign_id": "a1b2c3d4-…",
  "question": "What do we know about the harbour?"
}

欄位說明

欄位類型說明
campaign_idstring (uuid)要提問的戰役。
questionstring你的問題。

範例輸出

{
  "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_markdownstring附引用的答案,含行內 [n] 標記。
citationsarray支撐每個標記的引用中繼資料。
quotesarray作為證據使用的逐字轉錄引文。
confidence_labelstring粗略的信心區間。
值:high | medium | low
credit_costnumber此答案所扣的額度。

玩家安全範例

正在打造面向玩家的機器人或疊層介面?使用玩家引用工具,讓答案來自玩家通道,其依可見性過濾的帳本絕不會包含僅限 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

邀請機器人、建立你的戰役,每月免費取得回顧。

在你的下一場跑團中使用 Recap Raven

無需信用卡 · 僅在取得你同桌同意後錄音 · 隨時刪除或匯出你的資料

有問題或意見回饋?加入我們的 Discord 社群 →

為 Discord 語音而打造。我們為你擷取整場跑團——事後無需登入、無需傳送檔案給我們,也無需猜測誰在說話。記憶方案會在你遊玩時持續更新你可編輯的世界維基,隨時準備回答關於發生了什麼、誰說了什麼、未解伏筆,以及下一步該準備什麼的問題。