Recap Raven
chính thứcGhi 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
- 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.
- 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.
- 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.
- Trong một cuộc trò chuyện, chọn Recap Raven bằng @ và hỏi: "Use Recap Raven to list my campaigns."
- 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 |
| Premium | Khó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ý ức | Cô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 API | Tạ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ên | 15 yêu cầu/phút và 150 yêu cầu/giờ. |
| Memory · 10 phiên | 30 yêu cầu/phút và 450 yêu cầu/giờ. |
| Memory · 20 phiên | 60 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ện | search_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ường | Kiểu | Mô tả |
|---|---|---|
| campaigns | array | Các chiến dịch thuộc sở hữu của tài khoản bạn. |
| campaigns[].campaign_id | string (uuid) | Dùng id này với các công cụ MCP theo phạm vi chiến dịch. |
| campaigns[].name | string | Tên chiến dịch. |
| campaigns[].module | string | null | Nhã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ường | Kiểu | Mô tả |
|---|---|---|
| campaign_id | string (uuid) | bỏ trống | Bộ 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ường | Kiểu | Mô tả |
|---|---|---|
| recaps | array | Các phiên chơi đã sẵn sàng hiển thị với tài khoản bạn. |
| recaps[].recap_id | string (uuid) | Dùng id này với get_recap, get_transcript_window và get_mechanics_events. |
| recaps[].campaign_id | string (uuid) | null | Chiến dịch sở hữu phiên chơi. |
| recaps[].session_number | integer | null | Số 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[].title | string | null | Tiêu đề phiên chơi. |
| recaps[].status | string | Chỉ 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ường | Kiểu | Mô tả |
|---|---|---|
| campaign_id | string (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ường | Kiểu | Mô tả |
|---|---|---|
| sessions | array | Một mục cho mỗi phiên chơi đã sẵn sàng trong chiến dịch. |
| sessions[].recap_id | string (uuid) | Id bản tóm tắt/phiên chơi. |
| sessions[].session_ref | string | Tham chiếu ngắn gọn cho người đọc, ví dụ S01AB. |
| sessions[].session_at | string (ISO 8601) | Thời điểm phiên chơi bắt đầu (UTC). |
| players | array | Một mục cho mỗi người nói được nhận diện. |
| players[].speaker | string | Tên hiển thị của người nói. |
| players[].points | array | Số liệu theo từng phiên cho người nói này. |
| players[].points[].participation_pct | number | Tỷ lệ tham gia cuộc trò chuyện, 0–100. |
| players[].points[].turn_count | integer | Số lượt nói đã thực hiện. |
| players[].points[].talk_time_seconds | integer | Tổng số giây đã nói. |
| players[].points[].word_count | integer | Tổ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ường | Kiểu | Mô tả |
|---|---|---|
| usage.percent_used | integer | Mức sử dụng Ask dạng số nguyên từ 0 đến 100. |
| recent_activity | array | Nguồ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[].type | string | Loại sự kiện. giá trị: recap_ready | session_recorded | credit |
| recent_activity[].label | string | Tóm tắt dễ đọc cho người. |
| recent_activity[].date | string (ISO 8601) | Thời điểm sự kiện xảy ra. |
| recent_activity[].recap_id | string (uuid) | null | Có 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ường | Kiểu | Mô tả |
|---|---|---|
| campaign_id | string (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ường | Kiểu | Mô tả |
|---|---|---|
| distribution | array | Tỷ lệ lối chơi theo danh mục. |
| distribution[].label | string | Tên danh mục. |
| distribution[].pct | number | Tỷ lệ, 0–100. |
| engagement.overall.score | number | null | Điểm tương tác tổng hợp, 0–100. |
| engagement.overall.label | string | null | Nhãn định tính, ví dụ "Playful / tense". |
| pillars | string[] | null | Chủ đề 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ường | Kiểu | Mô tả |
|---|---|---|
| campaign_id | string (uuid) | Chiến dịch của bạn cần đọc. |
| page | integer | Tù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ường | Kiểu | Mô tả |
|---|---|---|
| quests | array | Đ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[].id | string (uuid) | Mã định danh nhiệm vụ. |
| quests[].title | string | Tiêu đề nhiệm vụ. |
| quests[].objective | string | Mục tiêu của cả nhóm. |
| quests[].status | string | active, stale, completed hoặc abandoned. |
| quests[].progress | string | Tiến độ đã lưu gần nhất. |
| page | integer | Trang hiện tại. |
| has_more | boolean | Yê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ường | Kiểu | Mô tả |
|---|---|---|
| campaign_id | string (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ường | Kiểu | Mô tả |
|---|---|---|
| hooks | array | Các móc nối cốt truyện hiện đang mở. |
| hooks[].text | string | Mô tả móc nối. |
| hooks[].session_ref | string | Phiên chơi nơi móc nối được giới thiệu. |
| hooks[].session_date | string (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ường | Kiểu | Mô tả |
|---|---|---|
| campaign_id | string (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ường | Kiểu | Mô tả |
|---|---|---|
| sections | array | Các phần ký ức chiến dịch cho bản tóm tắt/bối cảnh. |
| sections[].title | string | Tiêu đề phần. |
| sections[].bullets | string[] | 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ường | Kiểu | Mô tả |
|---|---|---|
| campaign_id | string (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ường | Kiểu | Mô tả |
|---|---|---|
| likely_directions | array | Các hướng đi tiếp theo có khả năng xảy ra, dành cho GM. |
| threads_to_watch | string[] | Những tuyến truyện GM có thể muốn lưu tâm. |
| prep_suggestions | string[] | Các gợi ý chuẩn bị cụ thể cho GM. |
| credit_cost | number | Luôn là 0 đối với công cụ MCP này. |
| cache_policy | string | cached_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ường | Kiểu | Mô tả |
|---|---|---|
| campaign_id | string (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ường | Kiểu | Mô tả |
|---|---|---|
| sessions | array | Một mục cho mỗi phiên. |
| sessions[].recap_id | string (uuid) | Id của bản tóm tắt/phiên. |
| sessions[].scenes | string[] | 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ường | Kiểu | Mô tả |
|---|---|---|
| campaign_id | string (uuid) | Chiến dịch cần đọc. |
| name | string | omitted | Tê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ường | Kiểu | Mô tả |
|---|---|---|
| entities | array (chế độ danh sách) | Khi không có tên: {canonical_name, kind, aliases, search_aliases} cho mỗi thực thể. |
| entity | object | 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ì. |
| candidates | array | Cá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.id | string (uuid) | Id thực thể ổn định của chiến dịch. |
| entity.canonical_name | string | Tên chuẩn của thực thể. |
| entity.kind | string | Loại thực thể. giá trị: pc | npc | creature | place | item | faction | deity | other |
| entity.aliases | string[] | Bí danh hiển thị. |
| entity.search_aliases | string[] | Bí danh chỉ dùng để truy xuất. |
| entity.interactions | array | Cá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_id | string (uuid) | Phiên chứa tương tác. |
| entity.interactions[].turn_start | integer | null | Lượt hội thoại đầu tiên cho liên kết bằng chứng. |
| entity.interactions[].turn_end | integer | null | Lượt hội thoại cuối cùng cho liên kết bằng chứng. |
| entity.interactions[].identity_match | string | confirmed 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.relations | array | Đồ thị quan hệ (cũ nhất → mới nhất). |
| entity.relations[].predicate | string | ví dụ: located_in, ally_of, owns. |
| entity.relations[].recap_id | string (uuid) | Phiên làm bằng chứng cho quan hệ. |
| entity.relations[].visibility | string | Mứ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_current | boolean | Nhá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ường | Kiểu | Mô tả |
|---|---|---|
| recap_id | string (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ường | Kiểu | Mô tả |
|---|---|---|
| recap_id | string (uuid) | Phiên mà các sự kiện này thuộc về. |
| mechanics | array | Các sự kiện cơ chế gắn với lượt. |
| mechanics[].action | string | Loại sự kiện. giá trị: attack | spell_cast | short_rest | long_rest | consumable_used | condition_applied | ability_used | form_changed |
| mechanics[].actor | string | Ai đã hành động. |
| mechanics[].evidence_turn_start | integer | Lượt đầu tiên làm bằng chứng cho sự kiện. |
| mechanics[].evidence_turn_end | integer | Lượ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ường | Kiểu | Mô tả |
|---|---|---|
| campaign_id | string (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ường | Kiểu | Mô tả |
|---|---|---|
| documents | array | Các tài liệu lore. |
| documents[].id | string (uuid) | Định danh tài liệu. |
| documents[].title | string | Tiê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ường | Kiểu | Mô tả |
|---|---|---|
| campaign_id | string (uuid) | Chiến dịch cần đọc. |
| doc_id | string (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ường | Kiểu | Mô tả |
|---|---|---|
| document.id | string (uuid) | Định danh tài liệu. |
| document.title | string | Tiêu đề tài liệu. |
| document.body | string | Toà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ường | Kiểu | Mô tả |
|---|---|---|
| campaign_id | string (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ường | Kiểu | Mô tả |
|---|---|---|
| entries | array | Các mục từ điển. |
| entries[].canonical | string | Tên chuẩn. |
| entries[].type | string | Loại thực thể. giá trị: npc | place | item | creature | other |
| entries[].aliases | string[] | Tên thay thế / bí danh. |
| entries[].confidence | number | Độ tin cậy trích xuất, 0–1. |
| entries[].enabled | boolean | Mụ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ường | Kiểu | Mô tả |
|---|---|---|
| recap_id | string (uuid) | Bản tóm tắt/phiên cần đọc. Dùng list_sessions để tìm các id. |
| from | integer | Chỉ số lượt bắt đầu (bao gồm, mặc định 0). |
| to | integer | Chỉ 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ường | Kiểu | Mô tả |
|---|---|---|
| total_turns | integer | Tổng số lượt trong phiên. |
| from | integer | Chỉ số bắt đầu được trả về. |
| to | integer | Chỉ số kết thúc được trả về. |
| turns | array | Các lượt trong cửa sổ được yêu cầu. |
| turns[].index | integer | Chỉ số vị trí trong phiên. |
| turns[].t | string | Dấu thời gian tương đối, ví dụ ~00:01. |
| turns[].speaker | string | Tên hiển thị của người nói. |
| turns[].text | string | Vă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ường | Kiểu | Mô tả |
|---|---|---|
| recap_id | string (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ường | Kiểu | Mô tả |
|---|---|---|
| recap.recap_id | string (uuid) | Id của bản tóm tắt/phiên. |
| recap.content_type | string | Luôn là player_recap_html. giá trị: player_recap_html |
| recap.html | string | HTML bản tóm tắt an toàn cho người chơi. |
| recap.truncated | boolean | True 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ường | Kiểu | Mô tả |
|---|---|---|
| campaign_id | string (uuid) | Chiến dịch cần tìm kiếm. |
| query | string | Cụ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_id | string (uuid) | omitted | Phạ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ường | Kiểu | Mô tả |
|---|---|---|
| query | string | Lặp lại truy vấn đã gửi. |
| matches | array | Cá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_id | string (uuid) | Bản tóm tắt/phiên mà kết quả khớp đến từ đó. |
| matches[].speaker | string | Người nói của lượt khớp. |
| matches[].t | string | Dấu thời gian tương đối, ví dụ ~01:04. |
| matches[].text | string | Vă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ường | Kiểu | Mô tả |
|---|---|---|
| campaign_id | string (uuid) | Chiến dịch cần tìm kiếm. |
| query | string | Từ khóa cần khớp với văn bản beat (tìm kiếm toàn văn). |
| recap_id | string (uuid) | omitted | Phạ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ường | Kiểu | Mô tả |
|---|---|---|
| matches | array | Các beat khớp, khớp tốt nhất trước. |
| matches[].recap_id | string (uuid) | Phiên mà beat đến từ đó. |
| matches[].session_number | integer | null | Số phiên của GM, khi được đặt. |
| matches[].session_title | string | null | Tiêu đề của phiên, khi được đặt. |
| matches[].scene_title | string | null | Tiêu đề của cảnh mà beat thuộc về. |
| matches[].beat_index | integer | Vị trí của beat trong cảnh của nó. |
| matches[].turn_start | integer | Lượt đầu tiên của cửa sổ beat (đưa vào get_transcript_window). |
| matches[].turn_end | integer | Lượt cuối cùng của cửa sổ beat. |
| matches[].text | string | Văn bản beat (giới hạn 1200 ký tự). |
| matches[].truncated | boolean | True 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ường | Kiểu | Mô tả |
|---|---|---|
| campaign_id | string (uuid) | Chiến dịch cần tìm kiếm. |
| query | string | Mô tả bằng ngôn ngữ tự nhiên về điều bạn đang tìm. |
| player_safe | boolean (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ường | Kiểu | Mô tả |
|---|---|---|
| matches | array | Các kết quả khớp bộ nhớ đã xếp hạng, khớp tốt nhất trước. |
| matches[].object_id | string (uuid) | Id của đối tượng bộ nhớ. |
| matches[].type | string | Loại bộ nhớ (ví dụ: plot_event, npc_fact). |
| matches[].visibility | string | Ai 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_id | string (uuid) | null | Phiên mà bộ nhớ đến từ đó. |
| matches[].session_number | integer | null | Số phiên của GM, khi được đặt. |
| matches[].session_title | string | null | Tiêu đề của phiên, khi được đặt. |
| matches[].turn_start | integer | null | Lượt đầu tiên của phạm vi bằng chứng (đưa vào get_transcript_window). |
| matches[].turn_end | integer | null | Lượt cuối cùng của phạm vi bằng chứng. |
| matches[].text | string | Tóm tắt bộ nhớ (giới hạn 1200 ký tự). |
| matches[].truncated | boolean | True khi tóm tắt đã bị cắt bớt. |
| credit_cost | number | Tí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ường | Kiểu | Mô tả |
|---|---|---|
| campaign_id | string (uuid) | Chiến dịch cần hỏi. |
| question | string | Câu hỏi của bạn. |
| clarification | object | bỏ qua | Tù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.question | string | Câu hỏi làm rõ từ công cụ. |
| clarification.answer | string | Câu trả lời của bạn cho câu hỏi đó. |
| supersedes | string | bỏ qua | Id 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ường | Kiểu | Mô tả |
|---|---|---|
| answer_markdown | string | Câu trả lời có chú thích, với các dấu [n] nội tuyến. |
| citations | array | Siêu dữ liệu chú thích làm nền cho mỗi dấu. |
| quotes | array | Trích dẫn nguyên văn từ bản ghi được dùng làm bằng chứng. |
| confidence_label | string | Dải độ tin cậy thô. giá trị: high | medium | low |
| credit_cost | number | Tín dụng được tính cho câu trả lời này. |
| quotes[].turn | integer | Chỉ số lượt được chú thích. |
| quotes[].recap_id | string (uuid) | null | Phiê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ường | Kiểu | Mô tả |
|---|---|---|
| campaign_id | string (uuid) | Chiến dịch cần hỏi. |
| question | string | Câ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ường | Kiểu | Mô tả |
|---|---|---|
| answer_markdown | string | Câu trả lời có chú thích, với các dấu [n] nội tuyến. |
| citations | array | Siêu dữ liệu chú thích làm nền cho mỗi dấu. |
| quotes | array | Trích dẫn nguyên văn từ bản ghi được dùng làm bằng chứng. |
| confidence_label | string | Dải độ tin cậy thô. giá trị: high | medium | low |
| credit_cost | number | Tí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.