Recap Raven

chính thức

Ghi chú D&D trên Discord: tìm kiếm và trích dẫn bản tóm tắt phiên TTRPG, nhiệm vụ, NPC và bản ghi của bạn từ bất kỳ AI nào. Yêu cầu khóa API Recap Raven.

Bạn có thể làm gì với Recap Raven MCP?

  • Liệt kê chiến dịch và phiên chơi — Yêu cầu AI của bạn liệt kê các chiến dịch và ánh xạ số phiên chơi với bản tóm tắt đúng trước khi lấy chi tiết.
  • Tìm kiếm bản ghi lời thoại và phân cảnh — Chạy tìm kiếm từ khóa chính xác trên các lượt lời thoại hoặc phân cảnh để tìm nơi một tên, vật phẩm hoặc địa điểm được nhắc đến.
  • Đọc bản tóm tắt và cửa sổ lời thoại — Lấy bản tóm tắt an toàn cho người chơi hoặc một lát cắt theo vị trí của các lượt lời thoại đã lưu trong một phiên chơi theo phạm vi chỉ mục.
  • Xem lại phần chuẩn bị và các móc nối mở — Lấy các móc nối cốt truyện chưa giải quyết, gói chuẩn bị cho phiên chơi tiếp theo và bản tóm tắt "trước đó đã xảy ra" cho một chiến dịch.
  • Tra cứu thực thể và cốt truyện — Lấy danh sách thực thể hoặc một thẻ thực thể, cùng với các tài liệu cốt truyện và mục từ vựng.
  • Kiểm tra mức độ tương tác và nhiệm vụ — Đọc xu hướng tham gia theo từng người nói, nhật ký nhiệm vụ hiển thị cho người chơi và mức sử dụng tín dụng Ask của bạn.

Máy chủ MCP được lưu trữ

npx add-mcp 'https://mcp.recapraven.com/mcp'

Cài vào Claude Code, Codex, Cursor và nhiều công cụ khác

Tài liệu

Cho các quy trình AI tùy chỉnh

Công cụ chiến dịch của bạn, trong một ứng dụng AI tương thích.

Đọc bản tóm tắt và dữ liệu chiến dịch của bạn qua MCP. Quyền truy cập bằng khóa API hiện có hoạt động với các ứng dụng tương thích. Đăng nhập từ một ứng dụng AI hỗ trợ danh tính ứng dụng khách công khai; hãy kiểm tra yêu cầu của ứng dụng khách bên dưới trước khi kết nối.

MCP là gì?

MCP cho phép các ứng dụng AI tương thích gọi trực tiếp các công cụ của Recap Raven. Thay vì sao chép bản tóm tắt sang một AI khác, AI của bạn có thể yêu cầu Recap Raven cung cấp phiên chơi, cửa sổ bản ghi, móc nối cốt truyện, thực thể, trích dẫn và câu trả lời về chiến dịch.

Bắt đầu

Điểm cuối MCP từ xa của Raven là https://mcp.recapraven.com/mcp . Chọn một ứng dụng khách để xem hướng dẫn thiết lập. Gói Premium bao gồm các lượt đọc tất định; Searchable Memory là bắt buộc cho tìm kiếm ký ức và câu trả lời AI.


Điểm cuối MCP

https://mcp.recapraven.com/mcp

Thiết lập ChatGPT

  1. Trên trang web của ChatGPT, mở Plugins, chọn +, rồi chọn Add custom MCP server. Nhập "Recap Raven" và URL máy chủ bên dưới.
  2. Khi đăng nhập Raven được bật, chọn OAuth và tùy chọn danh tính ứng dụng khách đã công bố (CIMD) với xác thực ứng dụng khách công khai. Không cần client secret hay khóa API Raven. Raven không hỗ trợ đăng ký ứng dụng khách tự động.
  3. Tạo plugin, cài đặt nó, sau đó đăng nhập vào Raven và xem xét danh tính ứng dụng cùng quyền truy cập được yêu cầu. Chỉ chấp thuận kết nối do chính bạn khởi tạo.
  4. Trong một cuộc trò chuyện, chọn Recap Raven bằng @ và hỏi: "Use Recap Raven to list my campaigns."
  5. Các công cụ đọc và ghi phụ thuộc vào quyền và xác nhận của bạn. Nếu thiếu thiết lập, hãy kiểm tra các hạn chế của không gian làm việc và hướng dẫn thiết lập ChatGPT chính thức cho ứng dụng của bạn.

URL máy chủ từ xa ChatGPT

https://mcp.recapraven.com/mcp

Trợ giúp về đồng ý và kết nối

Một kết nối đăng nhập Raven sẽ yêu cầu quyền truy cập vào chiến dịch, bản ghi và thông tin chỉ dành cho GM của bạn. Kết quả công cụ được gửi đến nhà cung cấp AI bạn chọn, và các công cụ trả phí sẽ tiêu tốn tín dụng Ask hiện có của bạn.

Nếu bạn chấp thuận quyền truy cập nền, ứng dụng có thể làm mới kết nối trong tối đa 30 ngày, ngay cả khi bạn đã đăng xuất khỏi Raven. Sau khi hết hạn hoặc bị thu hồi, hãy kết nối lại và chấp thuận lại. Trong Account settings, hãy xem xét các kết nối AI đã được chấp thuận và ngắt một kết nối hoặc dùng Disconnect all AI connections. Khóa API được quản lý riêng.

Kết quả trống? Hãy kiểm tra rằng bạn đã đăng nhập vào tài khoản Raven sở hữu chiến dịch của mình. Việc thay đổi gói có thể loại bỏ quyền truy cập công cụ; câu trả lời AI cũng cần có tín dụng khả dụng. Nếu sự đồng ý hết hạn hoặc thất bại, hãy khởi động lại kết nối từ ứng dụng khách.

Menu bị thiếu hoặc không gian làm việc không được hỗ trợ không thể khắc phục bằng cách thay đổi khóa Raven của bạn. Hãy kiểm tra các yêu cầu của nhà cung cấp được liên kết hoặc liên hệ cộng đồng Discord của chúng tôi với tên ứng dụng, phiên bản và thông báo lỗi. Không gửi token hay khóa.

Có sẵn trên Premium và Searchable Memory

Premium bao gồm khóa API và quyền truy cập vào bản tóm tắt, bản ghi và dữ liệu World thủ công hiện có của bạn. Searchable Memory là bắt buộc cho các công cụ ký ức, tìm kiếm chiến dịch và câu trả lời AI. Tìm kiếm ngữ nghĩa và câu trả lời AI tiêu tốn tín dụng Ask hiện có của bạn.

Tính khả dụng của MCP theo gói

Gói miễn phíKhông khả dụng
PremiumKhóa API, bản tóm tắt, bản ghi và dữ liệu World thủ công hiện có. Không bao gồm công cụ ký ức.
Gói có ký ứcCông cụ tất định không tốn thêm chi phí; search_corpus dùng ít tín dụng trò chuyện mỗi lần tìm kiếm, và các công cụ ask có trích dẫn tiêu tốn tín dụng Ask.
Khóa APITạo một khóa API cá nhân từ API Keys. Thu hồi bất cứ lúc nào; quyền truy cập MCP kết thúc khi tài khoản trở về gói Miễn phí.

Sử dụng hợp lý & giới hạn tốc độ

Máy chủ MCP là một bề mặt dùng chung, có tính phí. Để duy trì tính bền vững (và ngăn một vòng lặp tác nhân chạy loạn đốt sạch cả một giấy phép trong vài phút), mỗi khóa API đều bị giới hạn tốc độ ngoài hạn mức Ask của bạn.

Giới hạn tốc độ MCP

Sử dụng hợp lý máy chủGiới hạn yêu cầu trên mỗi khóa API đối với chính máy chủ MCP (tổng hợp tất cả lệnh gọi công cụ) — ngăn một khóa duy nhất làm ngập điểm cuối. Các phản hồi vượt giới hạn trả về 429 với Retry-After.
Premium · tất cả các gói / Memory · 5 phiên15 yêu cầu/phút và 150 yêu cầu/giờ.
Memory · 10 phiên30 yêu cầu/phút và 450 yêu cầu/giờ.
Memory · 20 phiên60 yêu cầu/phút và 1200 yêu cầu/giờ.
Công cụ miễn phíGiới hạn tốc độ theo mỗi khóa API. Các lượt đọc tất định và tìm kiếm từ khóa (search_transcript, search_facts) không tốn tín dụng. Tìm kiếm ngữ nghĩa search_corpus không được bao gồm ở đây; nó dùng ít tín dụng trò chuyện mỗi lần tìm kiếm hoàn tất.
Công cụ tín dụng trò chuyệnsearch_corpus (ít tín dụng trò chuyện) và các công cụ ask có trích dẫn bị giới hạn bởi cả hạn mức Ask của bạn và giới hạn tốc độ theo mỗi khóa. Cổng sử dụng sẽ dừng chi tiêu khi hạn mức cạn kiệt; giới hạn tốc độ ngăn một đợt bùng nổ rút cạn nó ngay lập tức. Không có hạn ngạch MCP riêng — tác nhân của bạn tiêu tốn cùng số tín dụng trò chuyện theo giấy phép mà nó dùng trong ứng dụng.

Được bao gồm miễn phí

Các công cụ đọc tất định — phiên chơi, thực thể và sổ cái, móc nối cốt truyện, cơ chế, mức độ tương tác, tìm kiếm bản ghi và nhịp truyện, bản tóm tắt, lore và từ điển. Chúng trả về dữ liệu chiến dịch đã lưu mà không có suy luận AI, vì vậy các công cụ khả dụng không tốn tín dụng. Các công cụ ký ức vẫn yêu cầu Searchable Memory. Tìm kiếm ngữ nghĩa search_corpus không được bao gồm trong danh sách này; nó dùng ít tín dụng trò chuyện. Mở rộng bất kỳ công cụ nào để xem ví dụ đầu vào, ví dụ đầu ra và tham chiếu trường.

list_campaigns Không tính thêm phí công cụ

Công cụ khám phá: liệt kê các chiến dịch khả dụng cho khóa MCP của bạn để các công cụ khác có thể dùng đúng campaign_id.

Ví dụ đầu vào

{}

Ví dụ đầu ra

{
  "campaigns": [
    {
      "campaign_id": "a1b2c3d4-…",
      "name": "The White Moose",
      "module": "Dolmenwood"
    }
  ]
}

Mô tả trường

TrườngKiểuMô tả
campaignsarrayCác chiến dịch thuộc sở hữu của tài khoản bạn.
campaigns[].campaign_idstring (uuid)Dùng id này với các công cụ MCP theo phạm vi chiến dịch.
campaigns[].namestringTên chiến dịch.
campaigns[].modulestring | nullNhãn mô-đun/hệ thống tùy chọn.

list_sessions Không tính thêm phí công cụ

Công cụ khám phá: liệt kê các phiên chơi đã sẵn sàng cùng session_number và tiêu đề của chúng, để tác nhân có thể ánh xạ "phiên 12" sang đúng recap_id.

Ví dụ đầu vào

{
  "campaign_id": "a1b2c3d4-…"
}

Mô tả trường

TrườngKiểuMô tả
campaign_idstring (uuid) | bỏ trốngBộ lọc chiến dịch tùy chọn.

Ví dụ đầu ra

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

Mô tả trường

TrườngKiểuMô tả
recapsarrayCác phiên chơi đã sẵn sàng hiển thị với tài khoản bạn.
recaps[].recap_idstring (uuid)Dùng id này với get_recap, get_transcript_window và get_mechanics_events.
recaps[].campaign_idstring (uuid) | nullChiến dịch sở hữu phiên chơi.
recaps[].session_numberinteger | nullSố thứ tự phiên chơi bắt đầu từ 1 của chính GM (DM có thể chỉnh sửa), khi được đặt.
recaps[].titlestring | nullTiêu đề phiên chơi.
recaps[].statusstringChỉ các phiên chơi đã sẵn sàng được liệt kê.

get_engagement Không tính thêm phí công cụ

Bảng điều khiển mức độ tương tác của chiến dịch: xu hướng tham gia theo từng người nói và bản tổng hợp chéo phiên đã lưu trong bộ nhớ đệm (tóm tắt + dòng thời gian sự kiện chính).

Ví dụ đầu vào

{
  "campaign_id": "a1b2c3d4-…"
}

Mô tả trường

TrườngKiểuMô tả
campaign_idstring (uuid)Chiến dịch cần đọc. Phải thuộc sở hữu của tài khoản bạn.

Ví dụ đầu ra

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

Mô tả trường

TrườngKiểuMô tả
sessionsarrayMột mục cho mỗi phiên chơi đã sẵn sàng trong chiến dịch.
sessions[].recap_idstring (uuid)Id bản tóm tắt/phiên chơi.
sessions[].session_refstringTham chiếu ngắn gọn cho người đọc, ví dụ S01AB.
sessions[].session_atstring (ISO 8601)Thời điểm phiên chơi bắt đầu (UTC).
playersarrayMột mục cho mỗi người nói được nhận diện.
players[].speakerstringTên hiển thị của người nói.
players[].pointsarraySố liệu theo từng phiên cho người nói này.
players[].points[].participation_pctnumberTỷ lệ tham gia cuộc trò chuyện, 0–100.
players[].points[].turn_countintegerSố lượt nói đã thực hiện.
players[].points[].talk_time_secondsintegerTổng số giây đã nói.
players[].points[].word_countintegerTổng số từ đã nói.

get_credit_balance Không tính thêm phí công cụ

Hạn mức Ask của bạn dưới dạng phần trăm đã dùng, cùng với nguồn cấp hoạt động gần đây. Số lượng hạn mức thô không được hiển thị cho ứng dụng khách MCP.

Ví dụ đầu vào

{}

Ví dụ đầu ra

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

Mô tả trường

TrườngKiểuMô tả
usage.percent_usedintegerMức sử dụng Ask dạng số nguyên từ 0 đến 100.
recent_activityarrayNguồn cấp mới nhất trước (sự kiện ghi phiên, bản tóm tắt sẵn sàng, sổ cái tín dụng).
recent_activity[].typestringLoại sự kiện.
giá trị: recap_ready | session_recorded | credit
recent_activity[].labelstringTóm tắt dễ đọc cho người.
recent_activity[].datestring (ISO 8601)Thời điểm sự kiện xảy ra.
recent_activity[].recap_idstring (uuid) | nullCó mặt cho các sự kiện liên quan đến bản tóm tắt/phiên chơi.

get_memory_overview Không tính thêm phí công cụ

Khối nhận thức tình huống phong phú nhất cho GM: phân bố, xu hướng tương tác + điểm tổng thể, mức tham gia theo từng phiên, các trụ cột của lối chơi.

Ví dụ đầu vào

{
  "campaign_id": "a1b2c3d4-…"
}

Mô tả trường

TrườngKiểuMô tả
campaign_idstring (uuid)Chiến dịch cần đọc.

Ví dụ đầu ra

{
  "distribution": [
    {
      "label": "Roleplay",
      "pct": 58
    }
  ],
  "engagement": {
    "overall": {
      "score": 74,
      "label": "Playful / tense"
    }
  },
  "pillars": [
    "The green-eyed stranger",
    "The old inn",
    "The white moose hunt"
  ]
}

Mô tả trường

TrườngKiểuMô tả
distributionarrayTỷ lệ lối chơi theo danh mục.
distribution[].labelstringTên danh mục.
distribution[].pctnumberTỷ lệ, 0–100.
engagement.overall.scorenumber | nullĐiểm tương tác tổng hợp, 0–100.
engagement.overall.labelstring | nullNhãn định tính, ví dụ "Playful / tense".
pillarsstring[] | nullChủ đề lặp lại / trụ cột của lối chơi.

get_quest_log Không tính thêm phí công cụ

Nhật ký nhiệm vụ hiển thị cho người chơi. Các bổ sung và chỉnh sửa của GM được chia sẻ với cả nhóm qua Discord /questlog. Hãy giữ bí mật của GM ở ngoài.

Ví dụ đầu vào

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

Mô tả trường

TrườngKiểuMô tả
campaign_idstring (uuid)Chiến dịch của bạn cần đọc.
pageintegerTùy chọn, bắt đầu từ 1. Mười nhiệm vụ mỗi trang.

Ví dụ đầu ra

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

Mô tả trường

TrườngKiểuMô tả
questsarrayĐang hoạt động/trì trệ trước, sau đó là đã hoàn thành/đã bỏ. Siêu dữ liệu chỉnh sửa nội bộ và liên kết nguồn bị loại trừ.
quests[].idstring (uuid)Mã định danh nhiệm vụ.
quests[].titlestringTiêu đề nhiệm vụ.
quests[].objectivestringMục tiêu của cả nhóm.
quests[].statusstringactive, stale, completed hoặc abandoned.
quests[].progressstringTiến độ đã lưu gần nhất.
pageintegerTrang hiện tại.
has_morebooleanYêu cầu trang tiếp theo khi là true.

get_open_hooks Không tính thêm phí công cụ

Các móc nối cốt truyện chưa được giải quyết — những gì cần chuẩn bị cho phiên tiếp theo.

Ví dụ đầu vào

{
  "campaign_id": "a1b2c3d4-…"
}

Mô tả trường

TrườngKiểuMô tả
campaign_idstring (uuid)Chiến dịch cần đọc.

Ví dụ đầu ra

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

Mô tả trường

TrườngKiểuMô tả
hooksarrayCác móc nối cốt truyện hiện đang mở.
hooks[].textstringMô tả móc nối.
hooks[].session_refstringPhiên chơi nơi móc nối được giới thiệu.
hooks[].session_datestring (YYYY-MM-DD)Ngày của phiên chơi đó.

get_previously_on Không tính thêm phí công cụ

Bối cảnh "trước đó" cho chiến dịch, được xây dựng từ ký ức theo phạm vi chủ sở hữu.

Ví dụ đầu vào

{
  "campaign_id": "a1b2c3d4-…"
}

Mô tả trường

TrườngKiểuMô tả
campaign_idstring (uuid)Chiến dịch cần đọc.

Ví dụ đầu ra

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

Mô tả trường

TrườngKiểuMô tả
sectionsarrayCác phần ký ức chiến dịch cho bản tóm tắt/bối cảnh.
sections[].titlestringTiêu đề phần.
sections[].bulletsstring[]Các gạch đầu dòng ký ức ngắn gọn.

get_next_session_prep_pack Không tính thêm phí công cụ Tư vấn chuẩn bị phiên tiếp theo dành riêng cho GM từ bộ nhớ đệm chuẩn bị của Recap Raven. Nó có thể tạo một lần, sau đó được giữ trong bộ nhớ đệm cho đến khi bản tóm tắt tiếp theo được nạp vào. Trả về credit_cost: 0.

Ví dụ đầu vào

{
  "campaign_id": "a1b2c3d4-…"
}

Mô tả trường

TrườngKiểuMô tả
campaign_idstring (uuid)Chiến dịch cần chuẩn bị. Phải thuộc sở hữu của tài khoản bạn.

Ví dụ đầu ra

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

Mô tả trường

TrườngKiểuMô tả
likely_directionsarrayCác hướng đi tiếp theo có khả năng xảy ra, dành cho GM.
threads_to_watchstring[]Những tuyến truyện GM có thể muốn lưu tâm.
prep_suggestionsstring[]Các gợi ý chuẩn bị cụ thể cho GM.
credit_costnumberLuôn là 0 đối với công cụ MCP này.
cache_policystringcached_until_next_recap_ingested.

get_chronicle Không tính thêm phí công cụ

Bản đồ số cảnh mỗi phiên — biên niên sử chiến dịch có cấu trúc.

Ví dụ đầu vào

{
  "campaign_id": "a1b2c3d4-…"
}

Mô tả trường

TrườngKiểuMô tả
campaign_idstring (uuid)Chiến dịch cần đọc.

Ví dụ đầu ra

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

Mô tả trường

TrườngKiểuMô tả
sessionsarrayMột mục cho mỗi phiên.
sessions[].recap_idstring (uuid)Id của bản tóm tắt/phiên.
sessions[].scenesstring[]Nhãn cảnh theo thứ tự cho phiên đó.

get_entity Không tính thêm phí công cụ

Sổ cái thực thể hiển thị cho người chơi được dẫn xuất từ các phiên đã ghi lại; lore riêng tư đã tải lên sẽ bị loại trừ. Khi không có tên, nó trả về danh sách. Khi có tên hoặc bí danh, nó trả về thẻ khớp, lịch sử tương tác, liên kết lượt hội thoại, quan hệ, hoặc các ứng viên mơ hồ.

Ví dụ đầu vào

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

Mô tả trường

TrườngKiểuMô tả
campaign_idstring (uuid)Chiến dịch cần đọc.
namestring | omittedTên/bí danh thực thể để phân giải thành một thẻ duy nhất. Bỏ trống để lấy danh sách.

Ví dụ đầu ra

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

Mô tả trường

TrườngKiểuMô tả
entitiesarray (chế độ danh sách)Khi không có tên: {canonical_name, kind, aliases, search_aliases} cho mỗi thực thể.
entityobject | null (chế độ thẻ)Khi có tên: thẻ thực thể đã phân giải, hoặc null nếu tên không khớp gì.
candidatesarrayCác thẻ thực thể khả dĩ khi một bí danh bị mơ hồ; rỗng khi phân giải là duy nhất.
entity.idstring (uuid)Id thực thể ổn định của chiến dịch.
entity.canonical_namestringTên chuẩn của thực thể.
entity.kindstringLoại thực thể.
giá trị: pc | npc | creature | place | item | faction | deity | other
entity.aliasesstring[]Bí danh hiển thị.
entity.search_aliasesstring[]Bí danh chỉ dùng để truy xuất.
entity.interactionsarrayCác mục lịch sử có căn cứ kèm liên kết tới bản tóm tắt và lượt hội thoại.
entity.interactions[].recap_idstring (uuid)Phiên chứa tương tác.
entity.interactions[].turn_startinteger | nullLượt hội thoại đầu tiên cho liên kết bằng chứng.
entity.interactions[].turn_endinteger | nullLượt hội thoại cuối cùng cho liên kết bằng chứng.
entity.interactions[].identity_matchstringconfirmed hoặc suggested; các liên kết suggested là khả năng khớp bí danh, không phải khẳng định danh tính chuẩn.
giá trị: confirmed | suggested
entity.relationsarrayĐồ thị quan hệ (cũ nhất → mới nhất).
entity.relations[].predicatestringví dụ: located_in, ally_of, owns.
entity.relations[].recap_idstring (uuid)Phiên làm bằng chứng cho quan hệ.
entity.relations[].visibilitystringMức hiển thị của cạnh đối với GM. Dữ liệu cũ trước witness có thể mang cạnh dm_only — không được hiển thị cho người chơi.
giá trị: player_known | dm_only
entity.relations[].is_currentbooleanNhánh đang hiện hành của một vị từ có trạng thái.

get_mechanics_events Không tính thêm phí công cụ

Các sự kiện cơ chế gắn với lượt (đòn tấn công, phép thuật, sát thương, nghỉ ngơi, trạng thái) cho một phiên — cùng dữ liệu như tab cơ chế.

Ví dụ đầu vào

{
  "recap_id": "…"
}

Mô tả trường

TrườngKiểuMô tả
recap_idstring (uuid)Phiên cần đọc. Dùng list_sessions để tìm các id.

Ví dụ đầu ra

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

Mô tả trường

TrườngKiểuMô tả
recap_idstring (uuid)Phiên mà các sự kiện này thuộc về.
mechanicsarrayCác sự kiện cơ chế gắn với lượt.
mechanics[].actionstringLoại sự kiện.
giá trị: attack | spell_cast | short_rest | long_rest | consumable_used | condition_applied | ability_used | form_changed
mechanics[].actorstringAi đã hành động.
mechanics[].evidence_turn_startintegerLượt đầu tiên làm bằng chứng cho sự kiện.
mechanics[].evidence_turn_endintegerLượt cuối cùng làm bằng chứng cho sự kiện.

get_lore_documents Không tính thêm phí công cụ

Danh sách các tài liệu lore của chiến dịch.

Ví dụ đầu vào

{
  "campaign_id": "a1b2c3d4-…"
}

Mô tả trường

TrườngKiểuMô tả
campaign_idstring (uuid)Chiến dịch cần đọc.

Ví dụ đầu ra

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

Mô tả trường

TrườngKiểuMô tả
documentsarrayCác tài liệu lore.
documents[].idstring (uuid)Định danh tài liệu.
documents[].titlestringTiêu đề tài liệu.

get_lore_document Không tính thêm phí công cụ

Một tài liệu lore duy nhất với toàn bộ nội dung của nó.

Ví dụ đầu vào

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

Mô tả trường

TrườngKiểuMô tả
campaign_idstring (uuid)Chiến dịch cần đọc.
doc_idstring (uuid)Tài liệu lore cần lấy.

Ví dụ đầu ra

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

Mô tả trường

TrườngKiểuMô tả
document.idstring (uuid)Định danh tài liệu.
document.titlestringTiêu đề tài liệu.
document.bodystringToàn bộ nội dung tài liệu (markdown).

get_lexicon Không tính thêm phí công cụ

Các mục từ điển (tên chuẩn, bí danh, loại, độ tin cậy).

Ví dụ đầu vào

{
  "campaign_id": "a1b2c3d4-…"
}

Mô tả trường

TrườngKiểuMô tả
campaign_idstring (uuid)Chiến dịch cần đọc.

Ví dụ đầu ra

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

Mô tả trường

TrườngKiểuMô tả
entriesarrayCác mục từ điển.
entries[].canonicalstringTên chuẩn.
entries[].typestringLoại thực thể.
giá trị: npc | place | item | creature | other
entries[].aliasesstring[]Tên thay thế / bí danh.
entries[].confidencenumberĐộ tin cậy trích xuất, 0–1.
entries[].enabledbooleanMục này có đang hoạt động hay không.

get_transcript_window Không tính thêm phí công cụ

Một lát cắt theo vị trí của các lượt đã lưu trong một phiên (không tìm kiếm nội dung — chỉ dựa trên chỉ số lượt từ/đến).

Ví dụ đầu vào

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

Mô tả trường

TrườngKiểuMô tả
recap_idstring (uuid)Bản tóm tắt/phiên cần đọc. Dùng list_sessions để tìm các id.
fromintegerChỉ số lượt bắt đầu (bao gồm, mặc định 0).
tointegerChỉ số lượt kết thúc. Bỏ trống để lấy cửa sổ 50 lượt từ chỉ số bắt đầu.

Ví dụ đầu ra

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

Mô tả trường

TrườngKiểuMô tả
total_turnsintegerTổng số lượt trong phiên.
fromintegerChỉ số bắt đầu được trả về.
tointegerChỉ số kết thúc được trả về.
turnsarrayCác lượt trong cửa sổ được yêu cầu.
turns[].indexintegerChỉ số vị trí trong phiên.
turns[].tstringDấu thời gian tương đối, ví dụ ~00:01.
turns[].speakerstringTên hiển thị của người nói.
turns[].textstringVăn bản được nói.

get_recap Không tính thêm phí công cụ

HTML bản tóm tắt an toàn cho người chơi của một bản tóm tắt đã sẵn sàng. Loại artifact do máy chủ quy định; không có đầu vào loại.

Ví dụ đầu vào

{
  "recap_id": "…"
}

Mô tả trường

TrườngKiểuMô tả
recap_idstring (uuid)Bản tóm tắt/phiên cần lấy bản tóm tắt an toàn cho người chơi.

Ví dụ đầu ra

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

Mô tả trường

TrườngKiểuMô tả
recap.recap_idstring (uuid)Id của bản tóm tắt/phiên.
recap.content_typestringLuôn là player_recap_html.
giá trị: player_recap_html
recap.htmlstringHTML bản tóm tắt an toàn cho người chơi.
recap.truncatedbooleanTrue khi giới hạn phản hồi MCP đã cắt bớt HTML.

search_transcript Không tính thêm phí công cụ

Tìm kiếm từ khóa chính xác (toàn văn) trên các lượt hội thoại của chiến dịch bạn. Trả về các lượt chứa cụm từ chính xác, kèm phiên, người nói và dấu thời gian — không LLM, không embedding, không tín dụng.

Ví dụ đầu vào

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

Mô tả trường

TrườngKiểuMô tả
campaign_idstring (uuid)Chiến dịch cần tìm kiếm.
querystringCụm từ chính xác cần khớp (tìm kiếm toàn văn trên văn bản hội thoại).
recap_idstring (uuid) | omittedPhạm vi phiên tùy chọn. Dùng list_sessions để tìm các recap id.

Ví dụ đầu ra

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

Mô tả trường

TrườngKiểuMô tả
querystringLặp lại truy vấn đã gửi.
matchesarrayCác lượt hội thoại chứa cụm từ chính xác, khớp tốt nhất trước.
matches[].recap_idstring (uuid)Bản tóm tắt/phiên mà kết quả khớp đến từ đó.
matches[].speakerstringNgười nói của lượt khớp.
matches[].tstringDấu thời gian tương đối, ví dụ ~01:04.
matches[].textstringVăn bản hội thoại khớp.

search_facts Không tính thêm phí công cụ

Tìm kiếm toàn văn theo từ khóa trên các beat cảnh của chiến dịch bạn — những bản tóm tắt dày đặc, từng beat một mà làn chat suy luận dựa trên. Phù hợp nhất cho các thuật ngữ chính xác (một tên, một vật phẩm, một địa điểm). Trả về văn bản beat kèm ngữ cảnh cảnh/phiên và khoảng lượt, để agent có thể định vị thời điểm và lấy đúng cửa sổ hội thoại tiếp theo. Không LLM, không embedding, không tín dụng. Để tra cứu theo ngôn ngữ tự nhiên, dựa trên ý nghĩa, hãy dùng search_corpus.

Ví dụ đầu vào

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

Mô tả trường

TrườngKiểuMô tả
campaign_idstring (uuid)Chiến dịch cần tìm kiếm.
querystringTừ khóa cần khớp với văn bản beat (tìm kiếm toàn văn).
recap_idstring (uuid) | omittedPhạm vi phiên tùy chọn. Dùng list_sessions để tìm các recap id.

Ví dụ đầu ra

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

Mô tả trường

TrườngKiểuMô tả
matchesarrayCác beat khớp, khớp tốt nhất trước.
matches[].recap_idstring (uuid)Phiên mà beat đến từ đó.
matches[].session_numberinteger | nullSố phiên của GM, khi được đặt.
matches[].session_titlestring | nullTiêu đề của phiên, khi được đặt.
matches[].scene_titlestring | nullTiêu đề của cảnh mà beat thuộc về.
matches[].beat_indexintegerVị trí của beat trong cảnh của nó.
matches[].turn_startintegerLượt đầu tiên của cửa sổ beat (đưa vào get_transcript_window).
matches[].turn_endintegerLượt cuối cùng của cửa sổ beat.
matches[].textstringVăn bản beat (giới hạn 1200 ký tự).
matches[].truncatedbooleanTrue khi văn bản beat đã bị cắt bớt.

Sử dụng tín dụng chat

Ba công cụ tiêu tốn tín dụng chat có tính phí. Hãy nghĩ theo hướng công cụ tìm kiếm so với câu trả lời: search_corpus (tín dụng chat thấp) trao cho bạn những kết quả khớp mạnh nhất dưới dạng bằng chứng có cấu trúc để mô hình của bạn tự suy luận — một công cụ tìm kiếm nhanh, không phải chỉ mục toàn diện; ask_campaign_cited trả lời một câu hỏi dành cho GM bằng các trích dẫn nguyên văn từ hội thoại và trích dẫn lượt; và ask_player_campaign_cited đưa ra phiên bản ngắn hơn dành cho người chơi thông qua làn người chơi. Tất cả đều bị giới hạn tốc độ theo từng API key ngoài số dư của bạn.

search_corpus Sử dụng tín dụng chat thấp search_corpus tìm các khoảnh khắc liên quan trong chiến dịch ngay cả khi bạn không biết chính xác từ ngữ. Công cụ này dùng tìm kiếm ngữ nghĩa và xếp hạng lại để trả về những bằng chứng khớp mạnh nhất, bao gồm tóm tắt, ngữ cảnh phiên và phạm vi lượt. Đây là công cụ tìm kiếm, không phải chỉ mục toàn diện: chỉ những kết quả khớp hàng đầu được trả về, nên hãy coi kết quả rỗng hoặc mỏng là "không có gì mạnh nổi lên", chứ không phải bằng chứng rằng không có gì tồn tại. Dùng các kết quả khớp để khám phá các thuật ngữ hoặc tên thực tế mà bảng đã dùng, rồi chạy tìm kiếm từ khóa miễn phí toàn diện với search_facts / search_transcript, hoặc lấy thẳng phạm vi lượt để gọi get_transcript_window cho đoạn nguyên văn. Để có câu trả lời dứt khoát, đã xác minh cho một câu hỏi — trích dẫn nguyên văn và chú thích — hãy dùng ask_campaign_cited thay thế (đắt hơn, trả về câu trả lời dạng văn bản thay vì các hàng có cấu trúc). Đặt player_safe: true để loại nội dung chỉ dành cho GM khỏi kết quả tìm kiếm. Công cụ này dùng ít tín dụng chat mỗi lần tìm kiếm, tính phí cho mọi lần tìm kiếm hoàn tất, kể cả khi không có kết quả khớp.

Ví dụ đầu vào

{
  "campaign_id": "a1b2c3d4-…",
  "query": "when did the party first distrust the mayor?",
  "player_safe": false
}

Mô tả các trường

TrườngKiểuMô tả
campaign_idstring (uuid)Chiến dịch cần tìm kiếm.
querystringMô tả bằng ngôn ngữ tự nhiên về điều bạn đang tìm.
player_safeboolean (mặc định false)Khi true, việc truy xuất được lọc theo khả năng hiển thị — bộ nhớ chỉ dành cho GM, bộ nhớ suy luận và phỏng đoán, và truyền thuyết do GM nhập đều bị loại trừ. Dùng cho bất cứ thứ gì người chơi sẽ thấy.

Ví dụ đầu ra

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

Mô tả các trường

TrườngKiểuMô tả
matchesarrayCác kết quả khớp bộ nhớ đã xếp hạng, khớp tốt nhất trước.
matches[].object_idstring (uuid)Id của đối tượng bộ nhớ.
matches[].typestringLoại bộ nhớ (ví dụ: plot_event, npc_fact).
matches[].visibilitystringAi biết điều này. Trong tìm kiếm player_safe, nó chỉ luôn là nội dung người chơi thấy được.
matches[].recap_idstring (uuid) | nullPhiên mà bộ nhớ đến từ đó.
matches[].session_numberinteger | nullSố phiên của GM, khi được đặt.
matches[].session_titlestring | nullTiêu đề của phiên, khi được đặt.
matches[].turn_startinteger | nullLượt đầu tiên của phạm vi bằng chứng (đưa vào get_transcript_window).
matches[].turn_endinteger | nullLượt cuối cùng của phạm vi bằng chứng.
matches[].textstringTóm tắt bộ nhớ (giới hạn 1200 ký tự).
matches[].truncatedbooleanTrue khi tóm tắt đã bị cắt bớt.
credit_costnumberTín dụng chat được tính cho lần tìm kiếm hoàn tất này.

ask_campaign_cited Dùng tín dụng chat

Đặt cho chiến dịch của bạn một câu hỏi thực tế hướng tới GM và nhận câu trả lời từ AI — cùng công cụ trả lời nhịp truyện như chat trong ứng dụng, với trích dẫn nguyên văn từ bản ghi và chú thích lượt. Dùng tín dụng chat GM, cùng chi phí như chat trong ứng dụng. Bị giới hạn tốc độ theo từng khóa API ngoài số dư của bạn.

Ví dụ đầu vào

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

Mô tả các trường

TrườngKiểuMô tả
campaign_idstring (uuid)Chiến dịch cần hỏi.
questionstringCâu hỏi của bạn.
clarificationobject | bỏ quaTùy chọn: trả lời một câu hỏi làm rõ mà công cụ đã đặt (chỉ làn GM).
clarification.questionstringCâu hỏi làm rõ từ công cụ.
clarification.answerstringCâu trả lời của bạn cho câu hỏi đó.
supersedesstring | bỏ quaId tin nhắn của một câu trả lời trước cần thay thế (chỉ làn GM).

Ví dụ đầu ra

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

Mô tả các trường

TrườngKiểuMô tả
answer_markdownstringCâu trả lời có chú thích, với các dấu [n] nội tuyến.
citationsarraySiêu dữ liệu chú thích làm nền cho mỗi dấu.
quotesarrayTrích dẫn nguyên văn từ bản ghi được dùng làm bằng chứng.
confidence_labelstringDải độ tin cậy thô.
giá trị: high | medium | low
credit_costnumberTín dụng được tính cho câu trả lời này.
quotes[].turnintegerChỉ số lượt được chú thích.
quotes[].recap_idstring (uuid) | nullPhiên mà trích dẫn đến từ đó.

ask_player_campaign_cited Dùng tín dụng chat

Đặt một câu hỏi thực tế về chiến dịch hướng tới người chơi và nhận câu trả lời ngắn an toàn cho người chơi kèm chú thích từ bản ghi. Nội dung chỉ dành cho GM bị loại trừ bởi làn người chơi phía máy chủ. Dùng tín dụng chat của người chơi.

Ví dụ đầu vào

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

Mô tả các trường

TrườngKiểuMô tả
campaign_idstring (uuid)Chiến dịch cần hỏi.
questionstringCâu hỏi của bạn.

Ví dụ đầu ra

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

Mô tả các trường

TrườngKiểuMô tả
answer_markdownstringCâu trả lời có chú thích, với các dấu [n] nội tuyến.
citationsarraySiêu dữ liệu chú thích làm nền cho mỗi dấu.
quotesarrayTrích dẫn nguyên văn từ bản ghi được dùng làm bằng chứng.
confidence_labelstringDải độ tin cậy thô.
giá trị: high | medium | low
credit_costnumberTín dụng được tính cho câu trả lời này.

Ví dụ an toàn cho người chơi

Đang xây dựng bot hoặc lớp phủ hướng tới người chơi? Hãy dùng công cụ chú thích dành cho người chơi để câu trả lời đến từ làn người chơi, nơi sổ cái đã lọc theo khả năng hiển thị không bao giờ chứa nội dung chỉ dành cho GM:

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

Dữ liệu của bạn đi đâu

Khi bạn kết nối một ứng dụng khách MCP và dùng các công cụ này, nội dung chiến dịch của bạn được gửi đến ứng dụng khách AI mà bạn đã chọn — ví dụ ChatGPT, Claude hoặc Gemini. Các điều khoản sử dụng dữ liệu và huấn luyện của nhà cung cấp đó áp dụng cho những gì bạn gửi đến họ, không phải của chúng tôi.

Cam kết không huấn luyện của Recap Raven bao gồm quy trình của chính chúng tôi và các nhà cung cấp mô hình mà chúng tôi công bố. Nó không thể bao gồm một ứng dụng khách mà bạn kết nối: bằng cách kết nối một ứng dụng, bạn đang chọn một bên xử lý mới cho dữ liệu chiến dịch của mình. Vui lòng kiểm tra điều khoản của ứng dụng khách đó trước khi kết nối, và dùng ask_player_campaign_cited hoặc bộ lọc tìm kiếm an toàn cho người chơi (và tránh các thao tác đọc chỉ dành cho GM như truyền thuyết và biên niên sử) cho bất cứ thứ gì người chơi sẽ thấy.

Có câu hỏi hoặc phản hồi? Xem cách Recap Raven hoạt động hoặc mời bot bên dưới.

Chạy Recap Raven tại phiên tiếp theo của bạn

Mời bot, tạo chiến dịch của bạn và nhận tóm tắt miễn phí mỗi tháng.

Chạy Recap Raven tại phiên tiếp theo của bạn

Không cần thẻ · Chỉ ghi khi có sự đồng ý của bàn chơi · Xóa hoặc xuất dữ liệu của bạn bất cứ lúc nào

Có câu hỏi hoặc phản hồi? Tham gia cộng đồng Discord của chúng tôi →

Được xây dựng cho thoại trên Discord. Chúng tôi ghi lại toàn bộ phiên cho bạn — không cần đăng nhập sau đó, không có tệp nào phải gửi cho chúng tôi, và không phải đoán ai đã nói. Các gói bộ nhớ giữ wiki thế giới có thể chỉnh sửa của bạn luôn cập nhật khi bạn chơi, sẵn sàng cho các câu hỏi về điều đã xảy ra, ai đã nói gì, các móc nối còn mở và những gì cần chuẩn bị tiếp theo.