Recap Raven
ทางการตัวจดบันทึก D&D บน Discord: ค้นหาและอ้างอิงบทสรุปเซสชัน TTRPG เควสต์ NPC และทรานสคริปต์ของคุณจาก AI ใดก็ได้ ต้องใช้คีย์ 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 key ที่มีอยู่ใช้ได้กับไคลเอนต์ที่รองรับ ลงชื่อเข้าจากแอป AI ที่รองรับตัวตนไคลเอนต์แบบสาธารณะ ตรวจสอบข้อกำหนดของไคลเอนต์ของคุณด้านล่างก่อนเชื่อมต่อ
MCP คืออะไร?
MCP ช่วยให้แอป AI ที่รองรับเรียกใช้เครื่องมือของ Recap Raven ได้โดยตรง แทนที่จะคัดลอกบทสรุปไปยัง AI อื่น AI ของคุณสามารถขอข้อมูลจาก Recap Raven ได้ทั้งเซสชัน ช่วงข้อความถอดเสียง ฮุก เอนทิตี คำพูด และคำตอบเกี่ยวกับแคมเปญ
เริ่มต้นใช้งาน
ปลายทาง MCP ระยะไกลของ Raven คือ https://mcp.recapraven.com/mcp เลือกไคลเอนต์เพื่อดูคำแนะนำการตั้งค่า แพ็กเกจ Premium รวมถึงการอ่านแบบกำหนดผลลัพธ์ได้ และต้องมี Searchable Memory สำหรับการค้นหาหน่วยความจำและคำตอบจาก AI
ปลายทาง MCP
https://mcp.recapraven.com/mcp
การตั้งค่า ChatGPT
- บนเว็บไซต์ของ ChatGPT เปิด Plugins เลือก + แล้วเลือก Add custom MCP server ป้อน "Recap Raven" และ URL ของเซิร์ฟเวอร์ด้านล่าง
- เมื่อเปิดใช้งานการลงชื่อเข้า Raven แล้ว ให้เลือก OAuth และตัวเลือกตัวตนไคลเอนต์ที่เผยแพร่ (CIMD) พร้อมการยืนยันตัวตนแบบไคลเอนต์สาธารณะ ไม่จำเป็นต้องใช้ client secret หรือ Raven API key Raven ไม่รองรับการลงทะเบียนไคลเอนต์อัตโนมัติ
- สร้างปลั๊กอิน ติดตั้ง แล้วลงชื่อเข้า Raven และตรวจสอบตัวตนของแอปและการเข้าถึงที่ร้องขอ อนุมัติเฉพาะการเชื่อมต่อที่คุณเริ่มเองเท่านั้น
- ในบทสนทนา เลือก Recap Raven ด้วย @ แล้วถามว่า: "Use Recap Raven to list my campaigns."
- เครื่องมืออ่านและเขียนขึ้นอยู่กับสิทธิ์และการยืนยันของคุณ หากการตั้งค่ายังไม่ครบ ให้ตรวจสอบข้อจำกัดของเวิร์กสเปซและคู่มือการตั้งค่า ChatGPT อย่างเป็นทางการสำหรับแอปของคุณ
URL เซิร์ฟเวอร์ระยะไกลของ ChatGPT
https://mcp.recapraven.com/mcp
ความยินยอมและความช่วยเหลือในการเชื่อมต่อ
การเชื่อมต่อด้วยการลงชื่อเข้า Raven จะขออนุญาตเข้าถึงแคมเปญ ข้อความถอดเสียง และข้อมูลเฉพาะ GM ของคุณ ผลลัพธ์จากเครื่องมือจะถูกส่งไปยังผู้ให้บริการ AI ที่คุณเลือก และเครื่องมือแบบชำระเงินจะใช้เครดิต Ask ที่คุณมีอยู่
หากคุณอนุมัติการเข้าถึงเบื้องหลัง แอปสามารถรีเฟรชการเชื่อมต่อได้นานสูงสุด 30 วัน แม้ในขณะที่คุณลงชื่อออกจาก Raven แล้ว หลังจากหมดอายุหรือถูกเพิกถอน ให้เชื่อมต่อใหม่และอนุมัติอีกครั้ง ในการตั้งค่าบัญชี ให้ตรวจสอบการเชื่อมต่อ AI ที่อนุมัติแล้วและยกเลิกการเชื่อมต่อทีละรายการ หรือใช้ Disconnect all AI connections API key ได้รับการจัดการแยกต่างหาก
ผลลัพธ์ว่างเปล่า? ตรวจสอบว่าคุณลงชื่อเข้าใช้บัญชี Raven ที่เป็นเจ้าของแคมเปญของคุณ การเปลี่ยนแปลงแพ็กเกจอาจทำให้การเข้าถึงเครื่องมือถูกยกเลิก คำตอบจาก AI ยังต้องมีเครดิตที่ใช้ได้ หากความยินยอมหมดอายุหรือล้มเหลว ให้เริ่มการเชื่อมต่อใหม่จากไคลเอนต์
เมนูที่หายไปหรือเวิร์กสเปซที่ไม่รองรับไม่สามารถแก้ไขได้ด้วยการเปลี่ยน Raven key ตรวจสอบข้อกำหนดของผู้ให้บริการที่ลิงก์ไว้ หรือติดต่อชุมชน Discord ของเราพร้อมระบุชื่อแอป เวอร์ชัน และข้อความแสดงข้อผิดพลาด อย่าส่งโทเค็นหรือคีย์
ใช้ได้กับ Premium และ Searchable Memory
Premium รวมถึง API key และการเข้าถึงบทสรุป ข้อความถอดเสียง และข้อมูล World ที่กรอกด้วยมือของคุณ ต้องมี Searchable Memory สำหรับเครื่องมือหน่วยความจำ การค้นหาแคมเปญ และคำตอบจาก AI การค้นหาเชิงความหมายและคำตอบจาก AI จะใช้เครดิต Ask ที่คุณมีอยู่
ความพร้อมใช้งานของ MCP ตามแพ็กเกจ
| แพ็กเกจฟรี | ไม่พร้อมใช้งาน |
| Premium | API key, บทสรุป ข้อความถอดเสียง และข้อมูล World ที่กรอกด้วยมือ ไม่รวมเครื่องมือหน่วยความจำ |
| แพ็กเกจที่มีหน่วยความจำ | เครื่องมือแบบกำหนดผลลัพธ์ได้โดยไม่มีค่าใช้จ่ายเพิ่มเติม; search_corpus ใช้เครดิตแชทต่ำต่อการค้นหา และเครื่องมือ ask ที่อ้างอิงจะใช้เครดิต Ask |
| API key | สร้าง API key ส่วนตัวหนึ่งรายการจาก API Keys เพิกถอนได้ทุกเมื่อ; การเข้าถึง MCP จะสิ้นสุดเมื่อบัญชีกลับไปเป็นแพ็กเกจฟรี |
การใช้งานอย่างเป็นธรรมและขีดจำกัดอัตรา
เซิร์ฟเวอร์ MCP เป็นพื้นที่ใช้งานร่วมกันแบบคิดตามปริมาณ เพื่อให้ใช้งานได้อย่างยั่งยืน (และหยุดลูปของเอเจนต์ที่หลุดควบคุมไม่ให้เผาไลเซนส์ทั้งใบภายในไม่กี่นาที) API key ทุกตัวจึงมีขีดจำกัดอัตรานอกเหนือจากโควตา Ask ของคุณ
ขีดจำกัดอัตราของ MCP
| การใช้งานอย่างเป็นธรรมของเซิร์ฟเวอร์ | เพดานคำขอต่อ API key บนเซิร์ฟเวอร์ MCP เอง (การเรียกเครื่องมือทั้งหมดรวมกัน) — ป้องกันไม่ให้คีย์เดียวท่วมปลายทาง คำตอบที่เกินขีดจำกัดจะคืนค่า 429 พร้อม Retry-After |
| Premium · ทุกแพ็กเกจ / Memory · 5 เซสชัน | 15 คำขอ/นาที และ 150 คำขอ/ชั่วโมง |
| Memory · 10 เซสชัน | 30 คำขอ/นาที และ 450 คำขอ/ชั่วโมง |
| Memory · 20 เซสชัน | 60 คำขอ/นาที และ 1200 คำขอ/ชั่วโมง |
| เครื่องมือฟรี | จำกัดอัตราต่อ API key การอ่านแบบกำหนดผลลัพธ์ได้และการค้นหาคำสำคัญ (search_transcript, search_facts) ไม่มีค่าใช้จ่ายเครดิต ไม่รวม search_corpus แบบเชิงความหมายไว้ที่นี่; จะใช้เครดิตแชทต่ำต่อการค้นหาที่เสร็จสมบูรณ์ |
| เครื่องมือที่ใช้เครดิตแชท | search_corpus (เครดิตแชทต่ำ) และเครื่องมือ ask ที่อ้างอิงถูกจำกัดด้วย_ทั้ง_โควตา Ask ของคุณ_และ_ขีดจำกัดอัตราต่อคีย์ ประตูการใช้งานจะหยุดการใช้จ่ายเมื่อโควตาหมด ส่วนขีดจำกัดอัตราจะหยุดการระเบิดของการใช้จ่ายไม่ให้หมดในทันที ไม่มีโควตา MCP แยกต่างหาก — เอเจนต์ของคุณใช้เครดิตแชทต่อไลเซนส์เดียวกันกับที่ใช้ในแอป |
รวมอยู่โดยไม่มีค่าใช้จ่ายเพิ่มเติม
เครื่องมืออ่านแบบกำหนดผลลัพธ์ได้ — เซสชัน เอนทิตีและบัญชีแยกประเภท ฮุก กลไก การมีส่วนร่วม การค้นหาข้อความถอดเสียงและจังหวะ บทสรุป ตำนาน และศัพท์เฉพาะ เครื่องมือเหล่านี้คืนข้อมูลแคมเปญที่จัดเก็บไว้โดยไม่มีการอนุมานจาก AI ดังนั้นเครื่องมือที่พร้อมใช้งานจึงไม่มีค่าใช้จ่ายเครดิต เครื่องมือหน่วยความจำยังต้องมี Searchable Memory ส่วน search_corpus แบบเชิงความหมายไม่รวมอยู่ในรายการนี้; จะใช้เครดิตแชทต่ำ ขยายเครื่องมือใดก็ได้เพื่อดูตัวอย่างอินพุต ตัวอย่างเอาต์พุต และเอกสารอ้างอิงฟิลด์
list_campaigns
ไม่มีค่าใช้จ่ายเครื่องมือเพิ่มเติม
เครื่องมือค้นพบ: แสดงรายการแคมเปญที่พร้อมใช้งานสำหรับ MCP key ของคุณ เพื่อให้เครื่องมืออื่นใช้ campaign_id ที่ถูกต้องได้
ตัวอย่างอินพุต
{}
ตัวอย่างเอาต์พุต
{
"campaigns": [
{
"campaign_id": "a1b2c3d4-…",
"name": "The White Moose",
"module": "Dolmenwood"
}
]
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| campaigns | array | แคมเปญที่เป็นเจ้าของโดยบัญชีของคุณ |
| campaigns[].campaign_id | string (uuid) | ใช้ id นี้กับเครื่องมือ MCP ที่ผูกกับแคมเปญ |
| campaigns[].name | string | ชื่อแคมเปญ |
| campaigns[].module | string | null | ป้ายกำกับโมดูล/ระบบ (ไม่บังคับ) |
list_sessions
ไม่มีค่าใช้จ่ายเครื่องมือเพิ่มเติม
เครื่องมือค้นพบ: แสดงรายการเซสชันที่พร้อมใช้งานพร้อม session_number และชื่อเรื่อง เพื่อให้เอเจนต์จับคู่ "เซสชัน 12" กับ recap_id ที่ถูกต้องได้
ตัวอย่างอินพุต
{
"campaign_id": "a1b2c3d4-…"
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| campaign_id | string (uuid) | ไม่ระบุ | ตัวกรองแคมเปญ (ไม่บังคับ) |
ตัวอย่างเอาต์พุต
{
"recaps": [
{
"recap_id": "r1e2c3a4-…",
"campaign_id": "a1b2c3d4-…",
"session_number": 12,
"title": "The Choosing",
"status": "ready"
}
]
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| recaps | array | เซสชันที่พร้อมใช้งานซึ่งมองเห็นได้จากบัญชีของคุณ |
| recaps[].recap_id | string (uuid) | ใช้ id นี้กับ get_recap, get_transcript_window และ get_mechanics_events |
| recaps[].campaign_id | string (uuid) | null | แคมเปญที่เป็นเจ้าของเซสชัน |
| recaps[].session_number | integer | null | หมายเลขเซสชันแบบเริ่มที่ 1 ของ GM เอง (แก้ไขได้โดย DM) เมื่อมีการตั้งค่า |
| recaps[].title | string | null | ชื่อเซสชัน |
| recaps[].status | string | แสดงเฉพาะเซสชันที่พร้อมใช้งาน |
get_engagement
ไม่มีค่าใช้จ่ายเครื่องมือเพิ่มเติม
แดชบอร์ดการมีส่วนร่วมของแคมเปญ: แนวโน้มการมีส่วนร่วมต่อผู้พูด และการสังเคราะห์ข้ามเซสชันที่แคชไว้ (สรุป + ไทม์ไลน์เหตุการณ์สำคัญ)
ตัวอย่างอินพุต
{
"campaign_id": "a1b2c3d4-…"
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| campaign_id | string (uuid) | แคมเปญที่ต้องการอ่าน ต้องเป็นเจ้าของโดยบัญชีของคุณ |
ตัวอย่างเอาต์พุต
{
"sessions": [
{
"recap_id": "…",
"session_ref": "S01AB",
"session_at": "2026-06-20T19:00:00Z"
}
],
"players": [
{
"speaker": "Mira",
"points": [
{
"session_ref": "S01AB",
"participation_pct": 28.4,
"turn_count": 42,
"talk_time_seconds": 612,
"word_count": 1840
}
]
}
]
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| sessions | array | หนึ่งรายการต่อเซสชันที่พร้อมใช้งานในแคมเปญ |
| sessions[].recap_id | string (uuid) | id ของบทสรุป/เซสชัน |
| sessions[].session_ref | string | ข้อมูลอ้างอิงสั้นที่มนุษย์อ่านได้ เช่น S01AB |
| sessions[].session_at | string (ISO 8601) | เวลาที่เซสชันเริ่ม (UTC) |
| players | array | หนึ่งรายการต่อผู้พูดที่รู้จัก |
| players[].speaker | string | ชื่อที่แสดงของผู้พูด |
| players[].points | array | เมตริกต่อเซสชันสำหรับผู้พูดรายนี้ |
| players[].points[].participation_pct | number | สัดส่วนของบทสนทนา 0–100 |
| players[].points[].turn_count | integer | จำนวนรอบการพูด |
| players[].points[].talk_time_seconds | integer | เวลาพูดรวมเป็นวินาที |
| players[].points[].word_count | integer | จำนวนคำที่พูดทั้งหมด |
get_credit_balance
ไม่มีค่าใช้จ่ายเครื่องมือเพิ่มเติม
โควตา Ask ของคุณเป็นเปอร์เซ็นต์ที่ใช้ไป พร้อมฟีดกิจกรรมล่าสุด จำนวนโควตาดิบจะไม่ถูกเปิดเผยต่อไคลเอนต์ MCP
ตัวอย่างอินพุต
{}
ตัวอย่างเอาต์พุต
{
"usage": {
"percent_used": 29
},
"recent_activity": [
{
"type": "recap_ready",
"label": "Session S01AB recap is ready",
"date": "2026-06-21T08:02:00Z",
"recap_id": "…"
},
{
"type": "credit",
"label": "Asked your campaign",
"date": "2026-06-21T08:05:00Z"
}
]
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| usage.percent_used | integer | การใช้ Ask เป็นจำนวนเต็มตั้งแต่ 0 ถึง 100 |
| recent_activity | array | ฟีดใหม่สุดก่อน (เหตุการณ์ session-recorded, recap-ready, credit-ledger) |
| recent_activity[].type | string | ประเภทเหตุการณ์ ค่าที่เป็นไปได้: recap_ready | session_recorded | credit |
| recent_activity[].label | string | สรุปที่มนุษย์อ่านได้ |
| recent_activity[].date | string (ISO 8601) | เวลาที่เหตุการณ์เกิดขึ้น |
| recent_activity[].recap_id | string (uuid) | null | มีเมื่อเป็นเหตุการณ์ที่เกี่ยวกับบทสรุป/เซสชัน |
get_memory_overview
ไม่มีค่าใช้จ่ายเครื่องมือเพิ่มเติม
ชุดข้อมูลการรับรู้สถานการณ์ของ GM ที่สมบูรณ์ที่สุด: การกระจาย แนวโน้มการมีส่วนร่วม + คะแนนโดยรวม การมีส่วนร่วมต่อเซสชัน เสาหลักของการเล่น
ตัวอย่างอินพุต
{
"campaign_id": "a1b2c3d4-…"
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| campaign_id | string (uuid) | แคมเปญที่ต้องการอ่าน |
ตัวอย่างเอาต์พุต
{
"distribution": [
{
"label": "Roleplay",
"pct": 58
}
],
"engagement": {
"overall": {
"score": 74,
"label": "Playful / tense"
}
},
"pillars": [
"The green-eyed stranger",
"The old inn",
"The white moose hunt"
]
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| distribution | array | สัดส่วนการเล่นตามหมวดหมู่ |
| distribution[].label | string | ชื่อหมวดหมู่ |
| distribution[].pct | number | สัดส่วน 0–100 |
| engagement.overall.score | number | null | คะแนนการมีส่วนร่วมแบบรวม 0–100 |
| engagement.overall.label | string | null | ป้ายกำกับเชิงคุณภาพ เช่น "ขี้เล่น / ตึงเครียด" |
| pillars | string[] | null | ธีมที่เกิดซ้ำ / เสาหลักของการเล่น |
get_quest_log
ไม่มีค่าใช้จ่ายเครื่องมือเพิ่มเติม
บันทึกเควสต์ที่ผู้เล่นมองเห็นได้ การเพิ่มและแก้ไขของ GM จะถูกแชร์ให้ปาร์ตี้ผ่าน Discord /questlog เก็บความลับของ GM ไว้ที่อื่น
ตัวอย่างอินพุต
{
"campaign_id": "a1b2c3d4-…",
"page": 1
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| campaign_id | string (uuid) | แคมเปญของคุณที่ต้องการอ่าน |
| page | integer | ไม่บังคับ เริ่มที่ 1 สิบเควสต์ต่อหน้า |
ตัวอย่างเอาต์พุต
{
"quests": [
{
"id": "d4e5f6a7-…",
"title": "Find the missing courier",
"objective": "Follow the trail from the bridge.",
"status": "active",
"progress": "The party found a torn satchel."
}
],
"page": 1,
"has_more": false
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| quests | array | ที่ยังใช้งาน/ค้างก่อน แล้วจึงเป็นที่เสร็จสิ้น/ถูกทิ้ง เมตาดาตาการแก้ไขภายในและลิงก์ต้นทางจะถูกตัดออก |
| quests[].id | string (uuid) | ตัวระบุเควสต์ |
| quests[].title | string | ชื่อเควสต์ |
| quests[].objective | string | วัตถุประสงค์ของปาร์ตี้ |
| quests[].status | string | active, stale, completed หรือ abandoned |
| quests[].progress | string | ความคืบหน้าที่บันทึกล่าสุด |
| page | integer | หน้าปัจจุบัน |
| has_more | boolean | ขอหน้าถัดไปเมื่อเป็น true |
get_open_hooks
ไม่มีค่าใช้จ่ายเครื่องมือเพิ่มเติม
ฮุกเชิงเรื่องเล่าที่ยังไม่คลี่คลาย — สิ่งที่ต้องเตรียมสำหรับเซสชันถัดไป
ตัวอย่างอินพุต
{
"campaign_id": "a1b2c3d4-…"
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| campaign_id | string (uuid) | แคมเปญที่ต้องการอ่าน |
ตัวอย่างเอาต์พุต
{
"hooks": [
{
"text": "Nobody bypasses the Choosing.",
"session_ref": "S01AB",
"session_date": "2026-06-20"
}
]
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| hooks | array | ฮุกเชิงเรื่องเล่าที่เปิดอยู่ปัจจุบัน |
| hooks[].text | string | คำอธิบายฮุก |
| hooks[].session_ref | string | เซสชันที่ฮุกถูกแนะนำ |
| hooks[].session_date | string (YYYY-MM-DD) | วันที่ของเซสชันนั้น |
get_previously_on
ไม่มีค่าใช้จ่ายเครื่องมือเพิ่มเติม
บริบท "ก่อนหน้านี้" สำหรับแคมเปญ สร้างจากหน่วยความจำที่จำกัดขอบเขตตามเจ้าของ
ตัวอย่างอินพุต
{
"campaign_id": "a1b2c3d4-…"
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| campaign_id | string (uuid) | แคมเปญที่ต้องการอ่าน |
ตัวอย่างเอาต์พุต
{
"sections": [
{
"title": "Last time",
"bullets": [
"The party followed the white moose into the mist."
]
}
]
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| sections | array | ส่วนหน่วยความจำของแคมเปญสำหรับบทสรุป/บริบท |
| sections[].title | string | หัวข้อส่วน |
| sections[].bullets | string[] | ข้อความหน่วยความจำแบบกระชับ |
get_next_session_prep_pack
ไม่มีค่าใช้จ่ายเครื่องมือเพิ่มเติม
คำแนะนำการเตรียมตัวสำหรับเซสชันถัดไปสำหรับ GM เท่านั้น จากแคชการเตรียมตัวของ Recap Raven อาจสร้างขึ้นครั้งเดียว แล้วจะถูกแคชไว้จนกว่าจะนำบทสรุปครั้งถัดไปเข้ามา คืนค่า credit_cost: 0
ตัวอย่างอินพุต
{
"campaign_id": "a1b2c3d4-…"
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| campaign_id | string (uuid) | แคมเปญที่ต้องการเตรียม ต้องเป็นแคมเปญที่บัญชีของคุณเป็นเจ้าของ |
ตัวอย่างเอาต์พุต
{
"likely_directions": [
{
"title": "Return to the inn",
"detail": "The unresolved clue points back to the old inn."
}
],
"threads_to_watch": [
"Who opened the moonstone gate?"
],
"prep_suggestions": [
"Review the innkeeper and the gate password."
],
"credit_cost": 0,
"cache_policy": "cached_until_next_recap_ingested"
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| likely_directions | array | ทิศทางที่เป็นไปได้ถัดไปซึ่งเหมาะสำหรับ GM |
| threads_to_watch | string[] | เธรดที่ GM อาจต้องการจดจำไว้ |
| prep_suggestions | string[] | คำแนะนำการเตรียมตัวที่ konkret สำหรับ GM |
| credit_cost | number | เป็น 0 เสมอสำหรับเครื่องมือ MCP นี้ |
| cache_policy | string | cached_until_next_recap_ingested |
get_chronicle
ไม่มีค่าใช้จ่ายเครื่องมือเพิ่มเติม
แผนที่ฉากต่อเซสชัน — พงศาวดารแคมเปญแบบมีโครงสร้าง
ตัวอย่างอินพุต
{
"campaign_id": "a1b2c3d4-…"
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| campaign_id | string (uuid) | แคมเปญที่ต้องการอ่าน |
ตัวอย่างเอาต์พุต
{
"sessions": [
{
"recap_id": "…",
"session_ref": "S01AB",
"scenes": [
"The market",
"The hunt",
"The banshee fight"
]
}
]
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| sessions | array | หนึ่งรายการต่อหนึ่งเซสชัน |
| sessions[].recap_id | string (uuid) | รหัสบทสรุป/เซสชัน |
| sessions[].scenes | string[] | ป้ายชื่อฉากตามลำดับสำหรับเซสชันนั้น |
get_entity
ไม่มีค่าใช้จ่ายเครื่องมือเพิ่มเติม
บัญชีรายการเอนทิตีที่ผู้เล่นมองเห็น ซึ่งได้มาจากเซสชันที่บันทึกไว้ ข้อมูล lore ที่อัปโหลดแบบส่วนตัวจะถูกตัดออก หากไม่มีชื่อจะคืนค่ารายชื่อ หากมีชื่อหรือนามแฝงจะคืนค่าการ์ดที่ตรงกัน ประวัติการโต้ตอบ ลิงก์เทิร์นในบทถอดความ ความสัมพันธ์ หรือตัวเลือกที่กำกวม
ตัวอย่างอินพุต
{
"campaign_id": "a1b2c3d4-…",
"name": "Captain Vale"
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| campaign_id | string (uuid) | แคมเปญที่ต้องการอ่าน |
| name | string | omitted | ชื่อ/นามแฝงของเอนทิตีที่จะแปลงเป็นหนึ่งการ์ด ละเว้นเพื่อดูรายชื่อ |
ตัวอย่างเอาต์พุต
{
"entity": {
"id": "…",
"canonical_name": "Captain Vale",
"kind": "npc",
"aliases": [
"Vale"
],
"search_aliases": [],
"interactions": [
{
"recap_id": "…",
"summary": "Vale warned the party.",
"turn_start": 12,
"turn_end": 16
}
],
"relations": [
{
"subject": "Captain Vale",
"predicate": "located_in",
"object": "Saltmoor Harbour",
"recap_id": "…",
"turn_start": 41,
"turn_end": 44,
"visibility": "player_known",
"session_date": "2026-05-01T00:00:00Z",
"is_current": true,
"predicate_class": "stateful"
}
]
}
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| entities | array (โหมดรายชื่อ) | เมื่อไม่ระบุชื่อ: {canonical_name, kind, aliases, search_aliases} สำหรับแต่ละเอนทิตี |
| entity | object | null (โหมดการ์ด) | เมื่อระบุชื่อ: การ์ดเอนทิตีที่แปลงแล้ว หรือ null หากชื่อไม่ตรงกับสิ่งใด |
| candidates | array | การ์ดเอนทิตีที่เป็นไปได้เมื่อนามแฝงกำกวม ว่างเปล่าเมื่อการแปลงไม่กำกวม |
| entity.id | string (uuid) | รหัสเอนทิตีแคมเปญที่คงที่ |
| entity.canonical_name | string | ชื่อเอนทิตีตามรูปแบบมาตรฐาน |
| entity.kind | string | ชนิดเอนทิตี ค่าที่เป็นไปได้: pc | npc | creature | place | item | faction | deity | other |
| entity.aliases | string[] | นามแฝงที่แสดง |
| entity.search_aliases | string[] | นามแฝงสำหรับการค้นคืนเท่านั้น |
| entity.interactions | array | รายการประวัติที่มีหลักฐานพร้อมลิงก์บทสรุปและเทิร์นในบทถอดความ |
| entity.interactions[].recap_id | string (uuid) | เซสชันที่มีการโต้ตอบนั้น |
| entity.interactions[].turn_start | integer | null | เทิร์นแรกในบทถอดความสำหรับลิงก์หลักฐาน |
| entity.interactions[].turn_end | integer | null | เทิร์นสุดท้ายในบทถอดความสำหรับลิงก์หลักฐาน |
| entity.interactions[].identity_match | string | confirmed หรือ suggested; ลิงก์ suggested เป็นการจับคู่นามแฝงที่เป็นไปได้ ไม่ใช่การยืนยันตัวตนตามรูปแบบมาตรฐาน ค่าที่เป็นไปได้: confirmed | suggested |
| entity.relations | array | กราฟความสัมพันธ์ (เก่าสุด → ใหม่สุด) |
| entity.relations[].predicate | string | เช่น located_in, ally_of, owns |
| entity.relations[].recap_id | string (uuid) | เซสชันที่เป็นหลักฐานของความสัมพันธ์ |
| entity.relations[].visibility | string | การมองเห็นของขอบในมุมมอง GM ข้อมูลก่อนมีพยานแบบเดิมอาจมีขอบ dm_only — อย่าเปิดเผยให้ผู้เล่นเห็น ค่าที่เป็นไปได้: player_known | dm_only |
| entity.relations[].is_current | boolean | ส่วนที่ยังมีผลอยู่ของเพรดิเคตที่มีสถานะ |
get_mechanics_events
ไม่มีค่าใช้จ่ายเครื่องมือเพิ่มเติม
เหตุการณ์กลไกที่ผูกกับเทิร์น (การโจมตี คาถา ความเสียหาย การพักผ่อน สภาวะ) สำหรับหนึ่งเซสชัน — ข้อมูลเดียวกับแท็บกลไก
ตัวอย่างอินพุต
{
"recap_id": "…"
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| recap_id | string (uuid) | เซสชันที่ต้องการอ่าน ใช้ list_sessions เพื่อค้นหารหัส |
ตัวอย่างเอาต์พุต
{
"recap_id": "…",
"mechanics": [
{
"action": "attack",
"actor": "Mira",
"target": "Goblin",
"damage_amount": 7,
"damage_type": "slashing",
"evidence_turn_start": 41,
"evidence_turn_end": 41
}
]
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| recap_id | string (uuid) | เซสชันที่เหตุการณ์เหล่านี้เป็นของ |
| mechanics | array | เหตุการณ์กลไกที่ผูกกับเทิร์น |
| mechanics[].action | string | ชนิดเหตุการณ์ ค่าที่เป็นไปได้: attack | spell_cast | short_rest | long_rest | consumable_used | condition_applied | ability_used | form_changed |
| mechanics[].actor | string | ผู้กระทำ |
| mechanics[].evidence_turn_start | integer | เทิร์นแรกที่เป็นหลักฐานของเหตุการณ์ |
| mechanics[].evidence_turn_end | integer | เทิร์นสุดท้ายที่เป็นหลักฐานของเหตุการณ์ |
get_lore_documents
ไม่มีค่าใช้จ่ายเครื่องมือเพิ่มเติม
รายการเอกสาร lore สำหรับแคมเปญ
ตัวอย่างอินพุต
{
"campaign_id": "a1b2c3d4-…"
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| campaign_id | string (uuid) | แคมเปญที่ต้องการอ่าน |
ตัวอย่างเอาต์พุต
{
"documents": [
{
"id": "…",
"title": "The Choosing",
"updated_at": "2026-06-20"
}
]
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| documents | array | เอกสาร lore |
| documents[].id | string (uuid) | ตัวระบุเอกสาร |
| documents[].title | string | ชื่อเอกสาร |
get_lore_document
ไม่มีค่าใช้จ่ายเครื่องมือเพิ่มเติม
เอกสาร lore เดียวพร้อมเนื้อหาทั้งหมด
ตัวอย่างอินพุต
{
"campaign_id": "a1b2c3d4-…",
"doc_id": "…"
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| campaign_id | string (uuid) | แคมเปญที่ต้องการอ่าน |
| doc_id | string (uuid) | เอกสาร lore ที่ต้องการดึง |
ตัวอย่างเอาต์พุต
{
"document": {
"id": "…",
"title": "The Choosing",
"body": "…"
}
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| document.id | string (uuid) | ตัวระบุเอกสาร |
| document.title | string | ชื่อเอกสาร |
| document.body | string | เนื้อหาเอกสารทั้งหมด (markdown) |
get_lexicon
ไม่มีค่าใช้จ่ายเครื่องมือเพิ่มเติม
รายการคำศัพท์ (ชื่อตามรูปแบบมาตรฐาน นามแฝง ชนิด ความเชื่อมั่น)
ตัวอย่างอินพุต
{
"campaign_id": "a1b2c3d4-…"
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| campaign_id | string (uuid) | แคมเปญที่ต้องการอ่าน |
ตัวอย่างเอาต์พุต
{
"entries": [
{
"id": "…",
"canonical": "Sol’Thun",
"type": "npc",
"aliases": [
"the archmage"
],
"confidence": 0.92,
"enabled": true
}
]
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| entries | array | รายการคำศัพท์ |
| entries[].canonical | string | ชื่อตามรูปแบบมาตรฐาน |
| entries[].type | string | ชนิดเอนทิตี ค่าที่เป็นไปได้: npc | place | item | creature | other |
| entries[].aliases | string[] | ชื่ออื่น / นามแฝง |
| entries[].confidence | number | ความเชื่อมั่นในการสกัด 0–1 |
| entries[].enabled | boolean | รายการนี้เปิดใช้งานหรือไม่ |
get_transcript_window
ไม่มีค่าใช้จ่ายเครื่องมือเพิ่มเติม
ช่วงตามตำแหน่งของเทิร์นที่จัดเก็บไว้ในเซสชัน (ไม่มีการค้นหาเนื้อหา — เพียงดัชนีเทิร์นจาก/ถึง)
ตัวอย่างอินพุต
{
"recap_id": "…",
"from": 0,
"to": 20
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| recap_id | string (uuid) | บทสรุป/เซสชันที่ต้องการอ่าน ใช้ list_sessions เพื่อค้นหารหัส |
| from | integer | ดัชนีเทิร์นเริ่มต้น (รวม, ค่าเริ่มต้น 0) |
| to | integer | ดัชนีเทิร์นสิ้นสุด ละเว้นเพื่อใช้หน้าต่าง 50 เทิร์นจากดัชนีเริ่มต้น |
ตัวอย่างเอาต์พุต
{
"recap_id": "…",
"total_turns": 184,
"from": 0,
"to": 20,
"turns": [
{
"index": 0,
"t": "~00:01",
"speaker": "GM",
"text": "…"
}
]
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| total_turns | integer | จำนวนเทิร์นทั้งหมดในเซสชัน |
| from | integer | ดัชนีเริ่มต้นที่คืนค่า |
| to | integer | ดัชนีสิ้นสุดที่คืนค่า |
| turns | array | เทิร์นในช่วงที่ร้องขอ |
| turns[].index | integer | ดัชนีตามตำแหน่งในเซสชัน |
| turns[].t | string | เวลาสัมพัทธ์ เช่น ~00:01 |
| turns[].speaker | string | ชื่อที่แสดงของผู้พูด |
| turns[].text | string | ข้อความที่พูด |
get_recap
ไม่มีค่าใช้จ่ายเครื่องมือเพิ่มเติม
HTML บทสรุปที่ปลอดภัยสำหรับผู้เล่นของบทสรุปที่พร้อมใช้งาน ชนิดอาร์ติแฟกต์เป็นของเซิร์ฟเวอร์ ไม่มีอินพุตชนิด
ตัวอย่างอินพุต
{
"recap_id": "…"
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| recap_id | string (uuid) | บทสรุป/เซสชันที่ต้องการดึงบทสรุปที่ปลอดภัยสำหรับผู้เล่น |
ตัวอย่างเอาต์พุต
{
"recap": {
"recap_id": "…",
"content_type": "player_recap_html",
"html": "<!doctype html>…",
"truncated": false
}
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| recap.recap_id | string (uuid) | รหัสบทสรุป/เซสชัน |
| recap.content_type | string | เป็น player_recap_html เสมอ ค่าที่เป็นไปได้: player_recap_html |
| recap.html | string | HTML บทสรุปที่ปลอดภัยสำหรับผู้เล่น |
| recap.truncated | boolean | เป็น true เมื่อขีดจำกัดการตอบกลับของ MCP ตัด HTML |
search_transcript
ไม่มีค่าใช้จ่ายเครื่องมือเพิ่มเติม
การค้นหาคำสำคัญแบบตรงตัว (full-text) ในเทิร์นบทถอดความแคมเปญของคุณ คืนค่าเทิร์นที่มีวลีตรงตัว พร้อมเซสชัน ผู้พูด และเวลา — ไม่ใช้ LLM ไม่ใช้ embedding ไม่ใช้เครดิต
ตัวอย่างอินพุต
{
"campaign_id": "a1b2c3d4-…",
"query": "white moose",
"recap_id": "r1e2c3a4-…"
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| campaign_id | string (uuid) | แคมเปญที่ต้องการค้นหา |
| query | string | วลีตรงตัวที่ต้องการจับคู่ (การค้นหา full-text กับข้อความบทถอดความ) |
| recap_id | string (uuid) | omitted | ขอบเขตเซสชันแบบเลือกได้ ใช้ list_sessions เพื่อค้นหารหัสบทสรุป |
ตัวอย่างเอาต์พุต
{
"query": "white moose",
"matches": [
{
"recap_id": "…",
"speaker": "GM",
"t": "~01:04",
"text": "All you know is that it’s a white moose."
}
]
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| query | string | สะท้อนคำค้นที่ส่งมา |
| matches | array | เทิร์นในบทถอดความที่มีวลีตรงตัว เรียงจากตรงที่สุดก่อน |
| matches[].recap_id | string (uuid) | บทสรุป/เซสชันที่ผลลัพธ์มาจาก |
| matches[].speaker | string | ผู้พูดของเทิร์นที่ตรงกัน |
| matches[].t | string | เวลาสัมพัทธ์ เช่น ~01:04 |
| matches[].text | string | ข้อความบทถอดความที่ตรงกัน |
search_facts
ไม่มีค่าใช้จ่ายเครื่องมือเพิ่มเติม
การค้นหาคำสำคัญแบบ full-text ในบีตฉากของแคมเปญของคุณ — สรุปแบบละเอียดทีละบีตที่เลนแชตใช้ในการให้เหตุผล เหมาะที่สุดสำหรับคำที่ตรงตัว (ชื่อ สิ่งของ สถานที่) คืนค่าข้อความบีตพร้อมบริบทฉาก/เซสชันและช่วงเทิร์น เพื่อให้เอเจนต์ระบุช่วงเวลาและดึงหน้าต่างบทถอดความที่ตรงกันได้ต่อไป ไม่ใช้ LLM ไม่ใช้ embedding ไม่ใช้เครดิต สำหรับการค้นหาตามความหมายด้วยภาษาธรรมชาติให้ใช้ search_corpus
ตัวอย่างอินพุต
{
"campaign_id": "a1b2c3d4-…",
"query": "white moose hunt",
"recap_id": "r1e2c3a4-…"
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| campaign_id | string (uuid) | แคมเปญที่ต้องการค้นหา |
| query | string | คำสำคัญที่ต้องการจับคู่กับข้อความบีต (การค้นหา full-text) |
| recap_id | string (uuid) | omitted | ขอบเขตเซสชันแบบเลือกได้ ใช้ list_sessions เพื่อค้นหารหัสบทสรุป |
ตัวอย่างเอาต์พุต
{
"matches": [
{
"recap_id": "…",
"session_number": 12,
"session_title": "The Choosing",
"scene_title": "The hunt",
"beat_index": 3,
"turn_start": 120,
"turn_end": 168,
"text": "The party tracked the white moose north of the old inn…",
"truncated": false
}
]
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| matches | array | บีตที่ตรงกัน เรียงจากตรงที่สุดก่อน |
| matches[].recap_id | string (uuid) | เซสชันที่บีตมาจาก |
| matches[].session_number | integer | null | หมายเลขเซสชันของ GM เมื่อมีการตั้งค่า |
| matches[].session_title | string | null | ชื่อเซสชัน เมื่อมีการตั้งค่า |
| matches[].scene_title | string | null | ชื่อฉากที่บีตนั้นเป็นของ |
| matches[].beat_index | integer | ตำแหน่งของบีตภายในฉาก |
| matches[].turn_start | integer | เทิร์นแรกของหน้าต่างบีต (ป้อนเข้า get_transcript_window) |
| matches[].turn_end | integer | เทิร์นสุดท้ายของหน้าต่างบีต |
| matches[].text | string | ข้อความบีต (จำกัดที่ 1200 ตัวอักษร) |
| matches[].truncated | boolean | เป็น true เมื่อข้อความบีตถูกตัด |
ใช้เครดิตแชต
เครื่องมือสามรายการใช้เครดิตแชตแบบมิเตอร์ คิดแบบตัวค้นหากับตัวตอบ: search_corpus (เครดิตแชตต่ำ) มอบผลลัพธ์ที่ตรงที่สุดให้เป็นหลักฐานแบบมีโครงสร้างสำหรับโมเดลของคุณเองในการให้เหตุผล — เป็นตัวค้นหาที่รวดเร็ว ไม่ใช่ดัชนีที่ครบถ้วน; ask_campaign_cited ตอบคำถามที่เหมาะสำหรับ GM ด้วยคำพูดจากบทถอดความแบบคำต่อคำและการอ้างอิงเทิร์น; และ ask_player_campaign_cited ให้เวอร์ชันที่สั้นกว่าสำหรับผู้เล่นผ่านเลนผู้เล่น ทั้งหมดมีอัตราจำกัดต่อ API key นอกเหนือจากยอดคงเหลือของคุณ
search_corpus
ใช้เครดิตแชตต่ำ
search_corpus จะค้นหาโมเมนต์สำคัญในแคมเปญที่เกี่ยวข้องได้ แม้คุณจะไม่รู้ถ้อยคำที่แน่นอนก็ตาม ระบบใช้การค้นหาเชิงความหมายและการจัดอันดับใหม่เพื่อคืนผลลัพธ์หลักฐานที่ตรงที่สุด รวมถึงบทสรุป บริบทของเซสชัน และช่วงเทิร์น นี่คือเครื่องมือค้นหา ไม่ใช่ดัชนีที่ครอบคลุมทั้งหมด: มีเพียงผลลัพธ์ที่ตรงที่สุดเท่านั้นที่ถูกส่งกลับ ดังนั้นให้ถือว่าผลลัพธ์ว่างเปล่าหรือมีน้อยหมายถึง "ไม่มีอะไรที่ชัดเจนปรากฏขึ้น" ไม่ใช่หลักฐานว่าไม่มีอยู่จริง ใช้ผลลัพธ์ที่ตรงเพื่อค้นหาคำศัพท์หรือชื่อจริงที่ตารางใช้ จากนั้นรันการค้นหาคำสำคัญแบบครอบคลุมด้วย search_facts / search_transcript หรือนำช่วงเทิร์นไปที่ get_transcript_window เพื่อรับข้อความตามจริง สำหรับคำตอบที่แน่นอนและผ่านการตรวจสอบสำหรับคำถาม — คำพูดตามจริงและการอ้างอิง — ให้ใช้ ask_campaign_cited แทน (มีค่าใช้จ่ายสูงกว่า เป็นคำตอบที่เป็นลายลักษณ์อักษรแทนแถวแบบมีโครงสร้าง) ตั้งค่า player_safe: true เพื่อยกเว้นเนื้อหาที่เฉพาะ GM จากผลการค้นหา ใช้เครดิตแชทต่ำต่อการค้นหา โดยคิดค่าบริการเมื่อการค้นหาเสร็จสิ้น ไม่ว่าจะมีผลลัพธ์หรือไม่ก็ตาม
ตัวอย่างอินพุต
{
"campaign_id": "a1b2c3d4-…",
"query": "when did the party first distrust the mayor?",
"player_safe": false
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| campaign_id | string (uuid) | แคมเปญที่จะค้นหา |
| query | string | คำอธิบายด้วยภาษาธรรมชาติของสิ่งที่คุณกำลังมองหา |
| player_safe | boolean (ค่าเริ่มต้น false) | เมื่อเป็น true การดึงข้อมูลจะถูกกรองตามการมองเห็น — หน่วยความจำที่เฉพาะ GM, ที่อนุมานและคาดเดา และตำนานที่พิมพ์โดย GM จะถูกยกเว้น ใช้สำหรับสิ่งใดก็ตามที่ผู้เล่นจะเห็น |
ตัวอย่างเอาต์พุต
{
"matches": [
{
"object_id": "…",
"type": "plot_event",
"visibility": "player_known",
"recap_id": "…",
"session_number": 8,
"session_title": "The Mayor’s Bargain",
"turn_start": 212,
"turn_end": 240,
"text": "The party noticed the mayor’s story about the missing caravan didn’t add up…",
"truncated": false
}
],
"credit_cost": "<chat credits charged for this search>"
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| matches | array | ผลลัพธ์หน่วยความจำที่จัดอันดับแล้ว โดยผลลัพธ์ที่ดีที่สุดมาก่อน |
| matches[].object_id | string (uuid) | id ของออบเจกต์หน่วยความจำ |
| matches[].type | string | ชนิดของหน่วยความจำ (เช่น plot_event, npc_fact) |
| matches[].visibility | string | ใครรู้สิ่งนี้ ในการค้นหาแบบ player_safe จะเป็นเฉพาะที่ผู้เล่นมองเห็นเท่านั้น |
| matches[].recap_id | string (uuid) | null | เซสชันที่หน่วยความจำนั้นมาจาก |
| matches[].session_number | integer | null | หมายเลขเซสชันของ GM เมื่อมีการตั้งค่า |
| matches[].session_title | string | null | ชื่อเซสชัน เมื่อมีการตั้งค่า |
| matches[].turn_start | integer | null | เทิร์นแรกของหน้าต่างหลักฐาน (ป้อนเข้าสู่ get_transcript_window) |
| matches[].turn_end | integer | null | เทิร์นสุดท้ายของหน้าต่างหลักฐาน |
| matches[].text | string | บทสรุปหน่วยความจำ (จำกัดที่ 1200 ตัวอักษร) |
| matches[].truncated | boolean | เป็น true เมื่อบทสรุปถูกตัดทอน |
| credit_cost | number | เครดิตแชทที่คิดค่าบริการสำหรับการค้นหาที่เสร็จสิ้นนี้ |
ask_campaign_cited
ใช้เครดิตแชท
ถามคำถามเชิงข้อเท็จจริงที่หันหน้าเข้าหา GM กับแคมเปญของคุณและรับคำตอบจาก AI — เอนจินตอบคำถามแบบเดียวกับในแอปแชท พร้อมคำพูดจากทรานสคริปต์ตามจริงและการอ้างอิงเทิร์น ใช้เครดิตแชทของ GM ซึ่งมีค่าใช้จ่ายเท่ากับแชทในแอป มีการจำกัดอัตราต่อ API key นอกเหนือจากยอดคงเหลือของคุณ
ตัวอย่างอินพุต
{
"campaign_id": "a1b2c3d4-…",
"question": "Where did the hunter see the moose?"
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| campaign_id | string (uuid) | แคมเปญที่จะถาม |
| question | string | คำถามของคุณ |
| clarification | object | ไม่ระบุ | ไม่บังคับ: ตอบคำถามเพื่อขอความชัดเจนที่เอนจินถาม (เฉพาะเลน GM) |
| clarification.question | string | คำถามเพื่อขอความชัดเจนจากเอนจิน |
| clarification.answer | string | คำตอบของคุณต่อคำถามนั้น |
| supersedes | string | ไม่ระบุ | id ข้อความของคำตอบก่อนหน้าที่จะแทนที่ (เฉพาะเลน GM) |
ตัวอย่างเอาต์พุต
{
"answer_markdown": "The hunter reported seeing the white moose near the old inn to the north of town [1].",
"quotes": [
{
"turn": 104,
"speaker": "Skoll",
"text": "All you know is that it’s a white moose.",
"recap_id": "…"
}
],
"confidence_label": "high",
"credit_cost": 1
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| answer_markdown | string | คำตอบที่อ้างอิง พร้อมเครื่องหมาย [n] แบบอินไลน์ |
| citations | array | เมทาดาทาการอ้างอิงที่รองรับแต่ละเครื่องหมาย |
| quotes | array | คำพูดจากทรานสคริปต์ตามจริงที่ใช้เป็นหลักฐาน |
| confidence_label | string | ระดับความเชื่อมั่นแบบคร่าว ๆ ค่า: high | medium | low |
| credit_cost | number | เครดิตที่คิดค่าบริการสำหรับคำตอบนี้ |
| quotes[].turn | integer | ดัชนีเทิร์นที่อ้างอิง |
| quotes[].recap_id | string (uuid) | null | เซสชันที่คำพูดนั้นมาจาก |
ask_player_campaign_cited
ใช้เครดิตแชท
ถามคำถามเชิงข้อเท็จจริงเกี่ยวกับแคมเปญที่หันหน้าเข้าหาผู้เล่นและรับคำตอบสั้น ๆ ที่ปลอดภัยสำหรับผู้เล่นพร้อมการอ้างอิงทรานสคริปต์ เนื้อหาที่เฉพาะ GM จะถูกยกเว้นโดยเลนผู้เล่นฝั่งเซิร์ฟเวอร์ ใช้เครดิตแชทของผู้เล่น
ตัวอย่างอินพุต
{
"campaign_id": "a1b2c3d4-…",
"question": "What do we know about the harbour?"
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| campaign_id | string (uuid) | แคมเปญที่จะถาม |
| question | string | คำถามของคุณ |
ตัวอย่างเอาต์พุต
{
"answer_markdown": "The party knows the harbourmaster helped them find the missing crate [1].",
"quotes": [
{
"turn": 104,
"speaker": "Skoll",
"text": "The harbourmaster pointed us to the crate.",
"recap_id": "…"
}
],
"confidence_label": "medium",
"credit_cost": 1
}
คำอธิบายฟิลด์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| answer_markdown | string | คำตอบที่อ้างอิง พร้อมเครื่องหมาย [n] แบบอินไลน์ |
| citations | array | เมทาดาทาการอ้างอิงที่รองรับแต่ละเครื่องหมาย |
| quotes | array | คำพูดจากทรานสคริปต์ตามจริงที่ใช้เป็นหลักฐาน |
| confidence_label | string | ระดับความเชื่อมั่นแบบคร่าว ๆ ค่า: high | medium | low |
| credit_cost | number | เครดิตที่คิดค่าบริการสำหรับคำตอบนี้ |
ตัวอย่างที่ปลอดภัยสำหรับผู้เล่น
กำลังสร้างบอทหรือโอเวอร์เลย์ที่หันหน้าเข้าหาผู้เล่นอยู่หรือไม่? ใช้เครื่องมืออ้างอิงสำหรับผู้เล่นเพื่อให้คำตอบมาจากเลนผู้เล่น ซึ่งบัญชีแยกประเภทที่กรองตามการมองเห็นจะไม่รวมเนื้อหาที่เฉพาะ GM:
{
"tool": "ask_player_campaign_cited",
"arguments": {
"campaign_id": "a1b2c3d4-…",
"question": "What do we know about the harbour?"
}
}
ข้อมูลของคุณไปที่ไหน
เมื่อคุณเชื่อมต่อไคลเอนต์ MCP และใช้เครื่องมือเหล่านี้ เนื้อหาแคมเปญของคุณจะถูกส่งไปยังไคลเอนต์ AI ที่คุณเลือก — ตัวอย่างเช่น ChatGPT, Claude หรือ Gemini ข้อกำหนดการใช้งานข้อมูลและการฝึกอบรมของผู้ให้บริการนั้นมีผลกับสิ่งที่คุณส่งไป ไม่ใช่ของเรา
การรับประกันไม่มีการฝึกอบรมของ Recap Raven ครอบคลุมไปป์ไลน์ของเราเองและผู้ให้บริการโมเดลที่เราเปิดเผย ไม่สามารถครอบคลุมไคลเอนต์ที่คุณเชื่อมต่อได้: การเชื่อมต่อไคลเอนต์หมายถึงคุณกำลังเลือกตัวประมวลผลใหม่สำหรับข้อมูลแคมเปญของคุณ โปรดตรวจสอบข้อกำหนดของไคลเอนต์นั้นก่อนเชื่อมต่อ และใช้ ask_player_campaign_cited หรือตัวกรองการค้นหาที่ปลอดภัยสำหรับผู้เล่น (และหลีกเลี่ยงการอ่านที่เฉพาะ GM เช่นตำนานและบันทึกเหตุการณ์) สำหรับสิ่งใดก็ตามที่ผู้เล่นจะเห็น
มีคำถามหรือข้อเสนอแนะ? ดูว่า Recap Raven ทำงานอย่างไร หรือเชิญบอทด้านล่าง
รัน Recap Raven ในเซสชันถัดไปของคุณ
เชิญบอท สร้างแคมเปญของคุณ และรับบทสรุปฟรีทุกเดือน
รัน Recap Raven ในเซสชันถัดไปของคุณ
ไม่ต้องใช้บัตร · บันทึกเฉพาะเมื่อได้รับความยินยอมจากโต๊ะของคุณ · ลบหรือส่งออกข้อมูลของคุณได้ทุกเมื่อ
มีคำถามหรือข้อเสนอแนะ? เข้าร่วมชุมชน Discord ของเรา →
สร้างขึ้นสำหรับเสียงใน Discord เราบันทึกเซสชันทั้งหมดให้คุณ — ไม่ต้องล็อกอินภายหลัง ไม่มีไฟล์ต้องส่งให้เรา และไม่ต้องเดาว่าใครพูด แผนหน่วยความจำช่วยให้วิกิโลกที่แก้ไขได้ของคุณเป็นปัจจุบันขณะเล่น พร้อมสำหรับคำถามเกี่ยวกับสิ่งที่เกิดขึ้น ใครพูดอะไร ฮุกที่เปิดอยู่ และสิ่งที่ต้องเตรียมต่อไป