Recap Raven

resmi

Pencatat catatan D&D Discord: cari dan kutip rekap sesi TTRPG, misi, NPC, dan transkrip Anda dari AI mana pun. Memerlukan kunci API Recap Raven.

Apa yang bisa Anda lakukan dengan Recap Raven MCP?

  • Daftar kampanye dan sesi — Minta AI Anda untuk mendaftar kampanye Anda dan memetakan nomor sesi ke rekap yang tepat sebelum mengambil detail.
  • Cari transkrip dan beat — Jalankan pencarian kata kunci persis pada giliran transkrip atau beat adegan untuk menemukan di mana sebuah nama, item, atau tempat muncul.
  • Baca rekap dan jendela transkrip — Ambil rekap yang aman untuk pemain atau potongan posisional dari giliran sesi yang tersimpan berdasarkan rentang indeks.
  • Tinjau persiapan dan hook terbuka — Ambil hook naratif yang belum terselesaikan, paket persiapan sesi berikutnya, dan ringkasan previously-on untuk sebuah kampanye.
  • Cari entitas dan lore — Dapatkan daftar entitas atau satu kartu entitas, plus dokumen lore dan entri leksikon.
  • Periksa keterlibatan dan quest — Baca tren partisipasi per pembicara, log quest yang terlihat oleh pemain, dan penggunaan kredit Ask Anda.

Server MCP Terhosting

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

Terpasang ke Claude Code, Codex, Cursor, dan lainnya

Dokumentasi

Untuk alur kerja AI kustom

Alat kampanye Anda, di klien AI yang kompatibel.

Baca rekap dan data kampanye Anda melalui MCP. Akses API-key yang ada berfungsi dengan klien yang kompatibel. Masuk dari aplikasi AI yang mendukung identitas klien publik; periksa persyaratan klien Anda di bawah sebelum menghubungkan.

Apa itu MCP?

MCP memungkinkan aplikasi AI yang kompatibel memanggil alat Recap Raven secara langsung. Alih-alih menyalin rekap ke AI lain, AI Anda dapat meminta Recap Raven untuk sesi, jendela transkrip, hook, entitas, kutipan, dan jawaban kampanye.

Mulai

Endpoint MCP jarak jauh Raven adalah https://mcp.recapraven.com/mcp . Pilih klien untuk instruksi penyiapan. Premium mencakup pembacaan deterministik; Searchable Memory diperlukan untuk pencarian memori dan jawaban AI.


Endpoint MCP

https://mcp.recapraven.com/mcp

Penyiapan ChatGPT

  1. Di situs web ChatGPT, buka Plugins, pilih +, lalu Add custom MCP server. Masukkan "Recap Raven" dan URL server di bawah.
  2. Saat sign-in Raven diaktifkan, pilih OAuth dan opsi identitas klien terbitan (CIMD) dengan autentikasi klien publik. Tidak diperlukan client secret atau API key Raven. Registrasi klien otomatis tidak didukung oleh Raven.
  3. Buat plugin, pasang, lalu masuk ke Raven dan tinjau identitas aplikasi serta akses yang diminta. Setujui hanya koneksi yang Anda mulai sendiri.
  4. Dalam percakapan, pilih Recap Raven dengan @ dan tanyakan: "Use Recap Raven to list my campaigns."
  5. Alat baca dan tulis bergantung pada izin dan konfirmasi Anda. Jika penyiapan belum lengkap, periksa pembatasan workspace dan panduan penyiapan ChatGPT resmi untuk aplikasi Anda.

URL server jarak jauh ChatGPT

https://mcp.recapraven.com/mcp

Bantuan persetujuan dan koneksi

Koneksi sign-in Raven akan meminta izin untuk mengakses kampanye, transkrip, dan informasi khusus GM Anda. Hasil alat dikirim ke penyedia AI pilihan Anda, dan alat berbayar menggunakan kredit Ask Anda yang ada.

Jika Anda menyetujui akses latar belakang, aplikasi dapat menyegarkan koneksinya hingga 30 hari, bahkan saat Anda keluar dari Raven. Setelah kedaluwarsa atau dicabut, hubungkan kembali dan setujui lagi. Di Pengaturan akun, tinjau koneksi AI yang disetujui dan putuskan satu koneksi atau gunakan Disconnect all AI connections. API key dikelola secara terpisah.

Hasil kosong? Periksa bahwa Anda masuk ke akun Raven yang memiliki kampanye Anda. Perubahan paket dapat menghapus akses alat; jawaban AI juga memerlukan kredit yang tersedia. Jika persetujuan kedaluwarsa atau gagal, mulai ulang koneksi dari klien.

Menu yang hilang atau workspace yang tidak didukung tidak dapat diperbaiki dengan mengubah key Raven Anda. Periksa persyaratan vendor yang ditautkan atau hubungi komunitas Discord kami dengan nama aplikasi, versi, dan pesan kesalahan. Jangan kirim token atau key.

Tersedia di Premium dan Searchable Memory

Premium mencakup API key dan akses ke rekap, transkrip, dan data World manual yang tersedia. Searchable Memory diperlukan untuk alat memori, pencarian kampanye, dan jawaban AI. Pencarian semantik dan jawaban AI menggunakan kredit Ask Anda yang ada.

Ketersediaan MCP berdasarkan paket

Tingkat gratisTidak tersedia
PremiumAPI key, rekap, transkrip, dan data World manual yang tersedia. Alat memori tidak termasuk.
Paket dengan memoriAlat deterministik tanpa biaya tambahan; search_corpus menggunakan kredit chat rendah per pencarian, dan alat ask dengan sitasi menggunakan kredit Ask.
API keyBuat satu API key pribadi dari API Keys. Cabut kapan saja; akses MCP berakhir saat akun kembali ke Free.

Penggunaan wajar & batas laju

Server MCP adalah permukaan bersama yang diukur. Agar tetap berkelanjutan (dan menghentikan loop agen yang lepas kendali membakar seluruh lisensi dalam hitungan menit), setiap API key dibatasi lajunya selain jatah Ask Anda.

Batas laju MCP

Penggunaan wajar serverBatas permintaan per-API-key pada server MCP itu sendiri (semua panggilan alat digabungkan) — mencegah satu key membanjiri endpoint. Respons di atas batas mengembalikan 429 dengan Retry-After.
Premium · semua paket / Memory · 5 sesi15 permintaan/menit dan 150 permintaan/jam.
Memory · 10 sesi30 permintaan/menit dan 450 permintaan/jam.
Memory · 20 sesi60 permintaan/menit dan 1200 permintaan/jam.
Alat gratisDibatasi lajunya per API key. Pembacaan deterministik dan pencarian kata kunci (search_transcript, search_facts) tidak memakan kredit. Pencarian semantik search_corpus tidak termasuk di sini; ia menggunakan kredit chat rendah per pencarian yang selesai.
Alat kredit chatsearch_corpus (kredit chat rendah) dan alat ask dengan sitasi dibatasi oleh keduanya: jatah Ask Anda dan batas laju per-key. Gerbang penggunaan menghentikan pengeluaran saat jatah habis; batas laju menghentikan lonjakan agar tidak mengurasnya seketika. Tidak ada kuota MCP terpisah — agen Anda menggunakan kredit chat per-lisensi yang sama seperti yang digunakan di aplikasi.

Termasuk tanpa biaya tambahan

Alat baca deterministik — sesi, entitas dan ledger, hook, mekanika, keterlibatan, pencarian transkrip dan beats, rekap, lore, dan leksikon. Alat ini mengembalikan data kampanye tersimpan tanpa inferensi AI, sehingga alat yang tersedia tidak memakan kredit. Alat memori tetap memerlukan Searchable Memory. search_corpus semantik tidak termasuk dalam daftar ini; ia menggunakan kredit chat rendah. Perluas alat mana pun untuk contoh input, contoh output, dan referensi bidang.

list_campaigns Tanpa biaya alat tambahan

Alat penemuan: daftar kampanye yang tersedia untuk key MCP Anda agar alat lain dapat menggunakan campaign_id yang tepat.

Contoh input

{}

Contoh output

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

Deskripsi bidang

BidangTipeDeskripsi
campaignsarrayKampanye yang dimiliki akun Anda.
campaigns[].campaign_idstring (uuid)Gunakan id ini dengan alat MCP yang terbatas pada kampanye.
campaigns[].namestringNama kampanye.
campaigns[].modulestring | nullLabel modul/sistem opsional.

list_sessions Tanpa biaya alat tambahan

Alat penemuan: daftar sesi siap dengan session_number dan judulnya, sehingga agen dapat memetakan "sesi 12" ke recap_id yang tepat.

Contoh input

{
  "campaign_id": "a1b2c3d4-…"
}

Deskripsi bidang

BidangTipeDeskripsi
campaign_idstring (uuid) | dihilangkanFilter kampanye opsional.

Contoh output

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

Deskripsi bidang

BidangTipeDeskripsi
recapsarraySesi siap yang terlihat oleh akun Anda.
recaps[].recap_idstring (uuid)Gunakan id ini dengan get_recap, get_transcript_window dan get_mechanics_events.
recaps[].campaign_idstring (uuid) | nullKampanye yang memiliki sesi.
recaps[].session_numberinteger | nullPenomoran sesi berbasis 1 milik GM sendiri (dapat diedit DM), jika diatur.
recaps[].titlestring | nullJudul sesi.
recaps[].statusstringHanya sesi siap yang dicantumkan.

get_engagement Tanpa biaya alat tambahan

Dasbor keterlibatan kampanye: tren partisipasi per-pembicara dan sintesis lintas-sesi yang di-cache (ringkasan + linimasa peristiwa penting).

Contoh input

{
  "campaign_id": "a1b2c3d4-…"
}

Deskripsi bidang

BidangTipeDeskripsi
campaign_idstring (uuid)Kampanye yang akan dibaca. Harus dimiliki akun Anda.

Contoh output

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

Deskripsi bidang

BidangTipeDeskripsi
sessionsarraySatu entri per sesi siap dalam kampanye.
sessions[].recap_idstring (uuid)Id rekap/sesi.
sessions[].session_refstringReferensi manusia singkat, mis. S01AB.
sessions[].session_atstring (ISO 8601)Kapan sesi dimulai (UTC).
playersarraySatu entri per pembicara yang dikenali.
players[].speakerstringNama tampilan pembicara.
players[].pointsarrayMetrik per-sesi untuk pembicara ini.
players[].points[].participation_pctnumberPorsi percakapan, 0–100.
players[].points[].turn_countintegerJumlah giliran berbicara yang diambil.
players[].points[].talk_time_secondsintegerTotal detik berbicara.
players[].points[].word_countintegerTotal kata yang diucapkan.

get_credit_balance Tanpa biaya alat tambahan

Jatah Ask Anda sebagai persentase terpakai, plus umpan aktivitas terbaru. Jumlah jatah mentah tidak diekspos ke klien MCP.

Contoh input

{}

Contoh output

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

Deskripsi bidang

BidangTipeDeskripsi
usage.percent_usedintegerPenggunaan Ask bilangan bulat dari 0 hingga 100.
recent_activityarrayUmpan terbaru-dulu (peristiwa session-recorded, recap-ready, credit-ledger).
recent_activity[].typestringJenis peristiwa.
nilai: recap_ready | session_recorded | credit
recent_activity[].labelstringRingkasan yang dapat dibaca manusia.
recent_activity[].datestring (ISO 8601)Kapan peristiwa terjadi.
recent_activity[].recap_idstring (uuid) | nullAda untuk peristiwa terkait rekap/sesi.

get_memory_overview Tanpa biaya alat tambahan

Blob kesadaran situasional GM terkaya: distribusi, tren keterlibatan + skor keseluruhan, partisipasi per-sesi, pilar permainan.

Contoh input

{
  "campaign_id": "a1b2c3d4-…"
}

Deskripsi bidang

BidangTipeDeskripsi
campaign_idstring (uuid)Kampanye yang akan dibaca.

Contoh output

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

Deskripsi bidang

BidangTipeDeskripsi
distributionarrayPorsi permainan berdasarkan kategori.
distribution[].labelstringNama kategori.
distribution[].pctnumberPorsi, 0–100.
engagement.overall.scorenumber | nullSkor keterlibatan komposit, 0–100.
engagement.overall.labelstring | nullLabel kualitatif, mis. "Playful / tense".
pillarsstring[] | nullTema berulang / pilar permainan.

get_quest_log Tanpa biaya alat tambahan

Log quest yang terlihat oleh pemain. Penambahan dan suntingan GM dibagikan ke party melalui Discord /questlog. Jauhkan rahasia GM.

Contoh input

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

Deskripsi bidang

BidangTipeDeskripsi
campaign_idstring (uuid)Kampanye Anda yang akan dibaca.
pageintegerOpsional, dimulai dari 1. Sepuluh quest per halaman.

Contoh output

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

Deskripsi bidang

BidangTipeDeskripsi
questsarrayAktif/stale lebih dulu, lalu completed/abandoned. Metadata penyuntingan internal dan tautan sumber dikecualikan.
quests[].idstring (uuid)Pengenal quest.
quests[].titlestringJudul quest.
quests[].objectivestringTujuan party.
quests[].statusstringactive, stale, completed atau abandoned.
quests[].progressstringProgres terakhir yang disimpan.
pageintegerHalaman saat ini.
has_morebooleanMinta halaman berikutnya saat true.

get_open_hooks Tanpa biaya alat tambahan

Hook naratif yang belum terselesaikan — apa yang perlu disiapkan untuk sesi berikutnya.

Contoh input

{
  "campaign_id": "a1b2c3d4-…"
}

Deskripsi bidang

BidangTipeDeskripsi
campaign_idstring (uuid)Kampanye yang akan dibaca.

Contoh output

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

Deskripsi bidang

BidangTipeDeskripsi
hooksarrayHook naratif yang saat ini terbuka.
hooks[].textstringDeskripsi hook.
hooks[].session_refstringSesi tempat hook diperkenalkan.
hooks[].session_datestring (YYYY-MM-DD)Tanggal sesi tersebut.

get_previously_on Tanpa biaya alat tambahan

Konteks previously-on untuk kampanye, dibangun dari memori yang terbatas pada pemilik.

Contoh input

{
  "campaign_id": "a1b2c3d4-…"
}

Deskripsi bidang

BidangTipeDeskripsi
campaign_idstring (uuid)Kampanye yang akan dibaca.

Contoh output

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

Deskripsi bidang

BidangTipeDeskripsi
sectionsarrayBagian memori kampanye untuk rekap/konteks.
sections[].titlestringJudul bagian.
sections[].bulletsstring[]Poin memori ringkas.

get_next_session_prep_pack Tanpa biaya alat tambahan Penasihat persiapan sesi berikutnya khusus GM dari cache persiapan Recap Raven. Ini dapat dihasilkan sekali, lalu tetap di-cache hingga rekap berikutnya di-ingest. Mengembalikan credit_cost: 0.

Contoh input

{
  "campaign_id": "a1b2c3d4-…"
}

Deskripsi field

FieldTipeDeskripsi
campaign_idstring (uuid)Kampanye yang akan dipersiapkan. Harus dimiliki oleh akun Anda.

Contoh output

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

Deskripsi field

FieldTipeDeskripsi
likely_directionsarrayKemungkinan arah berikutnya yang ditujukan untuk GM.
threads_to_watchstring[]Thread yang mungkin ingin diingat oleh GM.
prep_suggestionsstring[]Prompt persiapan konkret untuk GM.
credit_costnumberSelalu 0 untuk tool MCP ini.
cache_policystringcached_until_next_recap_ingested.

get_chronicle Tanpa biaya tool tambahan

Peta adegan-per-sesi — kronik kampanye terstruktur.

Contoh input

{
  "campaign_id": "a1b2c3d4-…"
}

Deskripsi field

FieldTipeDeskripsi
campaign_idstring (uuid)Kampanye yang akan dibaca.

Contoh output

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

Deskripsi field

FieldTipeDeskripsi
sessionsarraySatu entri per sesi.
sessions[].recap_idstring (uuid)Id rekap/sesi.
sessions[].scenesstring[]Label adegan terurut untuk sesi tersebut.

get_entity Tanpa biaya tool tambahan

Ledger entitas yang terlihat oleh pemain yang diturunkan dari sesi yang direkam; lore privat yang diunggah dikecualikan. Tanpa nama, ia mengembalikan daftar entitas. Dengan nama atau alias, ia mengembalikan kartu yang cocok, riwayat interaksi, tautan giliran transkrip, relasi, atau kandidat ambigu.

Contoh input

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

Deskripsi field

FieldTipeDeskripsi
campaign_idstring (uuid)Kampanye yang akan dibaca.
namestring | omittedNama/alias entitas untuk diresolusikan ke satu kartu. Hilangkan untuk daftar entitas.

Contoh output

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

Deskripsi field

FieldTipeDeskripsi
entitiesarray (mode daftar)Saat tidak ada nama yang diberikan: {canonical_name, kind, aliases, search_aliases} untuk setiap entitas.
entityobject | null (mode kartu)Saat nama diberikan: kartu entitas yang diresolusikan, atau null jika nama tidak cocok dengan apa pun.
candidatesarrayKartu entitas yang mungkin saat alias ambigu; kosong saat resolusi unik.
entity.idstring (uuid)Id entitas kampanye yang stabil.
entity.canonical_namestringNama kanonis entitas.
entity.kindstringJenis entitas.
nilai: pc | npc | creature | place | item | faction | deity | other
entity.aliasesstring[]Alias tampilan.
entity.search_aliasesstring[]Alias khusus untuk pengambilan.
entity.interactionsarrayEntri riwayat yang ter-ground dengan tautan rekap dan giliran transkrip.
entity.interactions[].recap_idstring (uuid)Sesi yang berisi interaksi tersebut.
entity.interactions[].turn_startinteger | nullGiliran transkrip pertama untuk tautan bukti.
entity.interactions[].turn_endinteger | nullGiliran transkrip terakhir untuk tautan bukti.
entity.interactions[].identity_matchstringconfirmed atau suggested; tautan suggested adalah kemungkinan kecocokan alias, bukan klaim identitas kanonis.
nilai: confirmed | suggested
entity.relationsarrayGraf relasi (terlama → terbaru).
entity.relations[].predicatestringmis. located_in, ally_of, owns.
entity.relations[].recap_idstring (uuid)Sesi yang membuktikan relasi tersebut.
entity.relations[].visibilitystringVisibilitas edge bagi GM. Data lama pra-witness dapat membawa edge dm_only — jangan tampilkan ke pemain.
nilai: player_known | dm_only
entity.relations[].is_currentbooleanKaki aktif dari predikat stateful.

get_mechanics_events Tanpa biaya tool tambahan

Peristiwa mekanika yang berjangkar pada giliran (serangan, mantra, damage, istirahat, kondisi) untuk satu sesi — data yang sama dengan tab mekanika.

Contoh input

{
  "recap_id": "…"
}

Deskripsi field

FieldTipeDeskripsi
recap_idstring (uuid)Sesi yang akan dibaca. Gunakan list_sessions untuk menemukan id.

Contoh output

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

Deskripsi field

FieldTipeDeskripsi
recap_idstring (uuid)Sesi tempat peristiwa ini berada.
mechanicsarrayPeristiwa mekanika yang berjangkar pada giliran.
mechanics[].actionstringJenis peristiwa.
nilai: attack | spell_cast | short_rest | long_rest | consumable_used | condition_applied | ability_used | form_changed
mechanics[].actorstringSiapa yang bertindak.
mechanics[].evidence_turn_startintegerGiliran pertama yang membuktikan peristiwa.
mechanics[].evidence_turn_endintegerGiliran terakhir yang membuktikan peristiwa.

get_lore_documents Tanpa biaya tool tambahan

Daftar dokumen lore untuk kampanye.

Contoh input

{
  "campaign_id": "a1b2c3d4-…"
}

Deskripsi field

FieldTipeDeskripsi
campaign_idstring (uuid)Kampanye yang akan dibaca.

Contoh output

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

Deskripsi field

FieldTipeDeskripsi
documentsarrayDokumen lore.
documents[].idstring (uuid)Pengenal dokumen.
documents[].titlestringJudul dokumen.

get_lore_document Tanpa biaya tool tambahan

Satu dokumen lore dengan isi lengkapnya.

Contoh input

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

Deskripsi field

FieldTipeDeskripsi
campaign_idstring (uuid)Kampanye yang akan dibaca.
doc_idstring (uuid)Dokumen lore yang akan diambil.

Contoh output

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

Deskripsi field

FieldTipeDeskripsi
document.idstring (uuid)Pengenal dokumen.
document.titlestringJudul dokumen.
document.bodystringIsi lengkap dokumen (markdown).

get_lexicon Tanpa biaya tool tambahan

Entri leksikon (nama kanonis, alias, tipe, keyakinan).

Contoh input

{
  "campaign_id": "a1b2c3d4-…"
}

Deskripsi field

FieldTipeDeskripsi
campaign_idstring (uuid)Kampanye yang akan dibaca.

Contoh output

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

Deskripsi field

FieldTipeDeskripsi
entriesarrayEntri leksikon.
entries[].canonicalstringNama kanonis.
entries[].typestringJenis entitas.
nilai: npc | place | item | creature | other
entries[].aliasesstring[]Nama alternatif / alias.
entries[].confidencenumberKeyakinan ekstraksi, 0–1.
entries[].enabledbooleanApakah entri ini aktif.

get_transcript_window Tanpa biaya tool tambahan

Potongan posisional dari giliran tersimpan suatu sesi (tanpa pencarian konten — hanya indeks giliran dari/ke).

Contoh input

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

Deskripsi field

FieldTipeDeskripsi
recap_idstring (uuid)Rekap/sesi yang akan dibaca. Gunakan list_sessions untuk menemukan id.
fromintegerIndeks giliran awal (inklusif, default 0).
tointegerIndeks giliran akhir. Hilangkan untuk jendela 50 giliran dari indeks awal.

Contoh output

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

Deskripsi field

FieldTipeDeskripsi
total_turnsintegerTotal giliran dalam sesi.
fromintegerIndeks awal yang dikembalikan.
tointegerIndeks akhir yang dikembalikan.
turnsarrayGiliran dalam jendela yang diminta.
turns[].indexintegerIndeks posisional dalam sesi.
turns[].tstringTimestamp relatif, mis. ~00:01.
turns[].speakerstringNama tampilan pembicara.
turns[].textstringTeks yang diucapkan.

get_recap Tanpa biaya tool tambahan

HTML rekap yang aman untuk pemain untuk rekap yang siap. Jenis artefak dimiliki server; tidak ada input tipe.

Contoh input

{
  "recap_id": "…"
}

Deskripsi field

FieldTipeDeskripsi
recap_idstring (uuid)Rekap/sesi yang rekap aman untuk pemainnya harus diambil.

Contoh output

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

Deskripsi field

FieldTipeDeskripsi
recap.recap_idstring (uuid)Id rekap/sesi.
recap.content_typestringSelalu player_recap_html.
nilai: player_recap_html
recap.htmlstringHTML rekap yang aman untuk pemain.
recap.truncatedbooleanTrue saat batas respons MCP memangkas HTML.

search_transcript Tanpa biaya tool tambahan

Pencarian kata kunci persis (full-text) atas giliran transkrip kampanye Anda. Mengembalikan giliran yang berisi frasa persis, beserta sesi, pembicara, dan timestamp-nya — tanpa LLM, tanpa embedding, tanpa kredit.

Contoh input

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

Deskripsi field

FieldTipeDeskripsi
campaign_idstring (uuid)Kampanye yang akan dicari.
querystringFrasa persis yang dicocokkan (pencarian full-text terhadap teks transkrip).
recap_idstring (uuid) | omittedCakupan sesi opsional. Gunakan list_sessions untuk menemukan id rekap.

Contoh output

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

Deskripsi field

FieldTipeDeskripsi
querystringGema dari query yang dikirim.
matchesarrayGiliran transkrip yang berisi frasa persis, kecocokan terbaik lebih dulu.
matches[].recap_idstring (uuid)Rekap/sesi asal kecocokan.
matches[].speakerstringPembicara dari giliran yang cocok.
matches[].tstringTimestamp relatif, mis. ~01:04.
matches[].textstringTeks transkrip yang cocok.

search_facts Tanpa biaya tool tambahan

Pencarian full-text kata kunci atas beat adegan kampanye Anda — ringkasan padat per-beat yang menjadi dasar penalaran jalur chat. Terbaik untuk istilah persis (nama, item, tempat). Mengembalikan teks beat dengan konteks adegan/sesi dan rentang gilirannya, sehingga agen dapat menemukan momen tersebut dan mengambil jendela transkrip persisnya berikutnya. Tanpa LLM, tanpa embedding, tanpa kredit. Untuk pencarian berbasis makna dengan bahasa alami, gunakan search_corpus.

Contoh input

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

Deskripsi field

FieldTipeDeskripsi
campaign_idstring (uuid)Kampanye yang akan dicari.
querystringKata kunci yang dicocokkan terhadap teks beat (pencarian full-text).
recap_idstring (uuid) | omittedCakupan sesi opsional. Gunakan list_sessions untuk menemukan id rekap.

Contoh output

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

Deskripsi field

FieldTipeDeskripsi
matchesarrayBeat yang cocok, kecocokan terbaik lebih dulu.
matches[].recap_idstring (uuid)Sesi asal beat.
matches[].session_numberinteger | nullNomor sesi milik GM, jika diatur.
matches[].session_titlestring | nullJudul sesi, jika diatur.
matches[].scene_titlestring | nullJudul adegan tempat beat berada.
matches[].beat_indexintegerPosisi beat dalam adegannya.
matches[].turn_startintegerGiliran pertama jendela beat (umpankan ke get_transcript_window).
matches[].turn_endintegerGiliran terakhir jendela beat.
matches[].textstringTeks beat (dibatasi 1200 karakter).
matches[].truncatedbooleanTrue saat teks beat dipangkas.

Menggunakan kredit chat

Tiga tool menghabiskan kredit chat terukur. Pikirkan pencari vs jawaban: search_corpus (kredit chat rendah) memberi Anda kecocokan terkuat sebagai bukti terstruktur untuk penalaran model Anda sendiri — pencari cepat, bukan indeks menyeluruh; ask_campaign_cited menjawab pertanyaan yang ditujukan untuk GM dengan kutipan transkrip verbatim dan sitasi giliran; dan ask_player_campaign_cited memberikan versi lebih singkat yang ditujukan untuk pemain melalui jalur pemain. Semuanya dibatasi lajunya per kunci API selain saldo Anda.

search_corpus Menggunakan kredit chat rendah search_corpus menemukan momen kampanye yang relevan bahkan ketika Anda tidak mengetahui kata-kata persisnya. Alat ini menggunakan pencarian semantik dan peringkat ulang untuk mengembalikan kecocokan bukti terkuat, termasuk ringkasan, konteks sesi, dan rentang giliran. Ini adalah pencari, bukan indeks menyeluruh: hanya kecocokan teratas yang dikembalikan, jadi anggap hasil kosong atau tipis sebagai "tidak ada yang kuat muncul," bukan bukti bahwa tidak ada apa-apa. Gunakan kecocokan tersebut untuk menemukan istilah atau nama sebenarnya yang digunakan tabel, lalu jalankan pencarian kata kunci gratis yang menyeluruh dengan search_facts / search_transcript, atau bawa rentang giliran langsung ke get_transcript_window untuk segmen verbatim. Untuk jawaban yang pasti dan terverifikasi atas sebuah pertanyaan — kutipan verbatim dan sitasi — gunakan ask_campaign_cited sebagai gantinya (lebih mahal, berupa balasan tertulis alih-alih baris terstruktur). Setel player_safe: true untuk mengecualikan konten khusus GM dari hasil pencarian. Ini menggunakan kredit chat rendah per pencarian, ditagih pada setiap pencarian yang selesai, bahkan yang tidak menemukan kecocokan.

Contoh input

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

Deskripsi field

FieldTipeDeskripsi
campaign_idstring (uuid)Kampanye yang akan dicari.
querystringDeskripsi bahasa alami tentang apa yang Anda cari.
player_safeboolean (default false)Ketika true, pengambilan difilter berdasarkan visibilitas — memori khusus GM, memori yang disimpulkan dan spekulasi, serta lore yang diketik GM dikecualikan. Gunakan untuk apa pun yang akan dilihat pemain.

Contoh output

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

Deskripsi field

FieldTipeDeskripsi
matchesarrayKecocokan memori yang diperingkat, kecocokan terbaik lebih dulu.
matches[].object_idstring (uuid)Id objek memori.
matches[].typestringJenis memori (mis. plot_event, npc_fact).
matches[].visibilitystringSiapa yang mengetahui ini. Pada pencarian player_safe, nilainya selalu hanya yang terlihat oleh pemain.
matches[].recap_idstring (uuid) | nullSesi asal memori tersebut.
matches[].session_numberinteger | nullNomor sesi GM, jika diatur.
matches[].session_titlestring | nullJudul sesi, jika diatur.
matches[].turn_startinteger | nullGiliran pertama dari jendela bukti (masukkan ke get_transcript_window).
matches[].turn_endinteger | nullGiliran terakhir dari jendela bukti.
matches[].textstringRingkasan memori (dibatasi 1200 karakter).
matches[].truncatedbooleanTrue ketika ringkasan dipotong.
credit_costnumberKredit chat yang ditagih untuk pencarian yang selesai ini.

ask_campaign_cited Menggunakan kredit chat

Ajukan pertanyaan faktual yang ditujukan untuk GM kepada kampanye Anda dan dapatkan jawaban AI — mesin jawaban beat yang sama seperti di chat dalam aplikasi, dengan kutipan transkrip verbatim dan sitasi giliran. Menggunakan kredit chat GM, biaya yang sama dengan chat dalam aplikasi. Dibatasi lajunya per kunci API selain saldo Anda.

Contoh input

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

Deskripsi field

FieldTipeDeskripsi
campaign_idstring (uuid)Kampanye yang akan ditanyai.
questionstringPertanyaan Anda.
clarificationobject | omittedOpsional: jawab pertanyaan klarifikasi yang diajukan mesin (hanya jalur GM).
clarification.questionstringPertanyaan klarifikasi dari mesin.
clarification.answerstringJawaban Anda untuk pertanyaan tersebut.
supersedesstring | omittedId pesan dari jawaban sebelumnya yang akan diganti (hanya jalur GM).

Contoh output

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

Deskripsi field

FieldTipeDeskripsi
answer_markdownstringJawaban yang disitasi, dengan penanda [n] inline.
citationsarrayMetadata sitasi yang mendukung setiap penanda.
quotesarrayKutipan transkrip verbatim yang digunakan sebagai bukti.
confidence_labelstringPita keyakinan kasar.
nilai: high | medium | low
credit_costnumberKredit yang ditagih untuk jawaban ini.
quotes[].turnintegerIndeks giliran yang disitasi.
quotes[].recap_idstring (uuid) | nullSesi asal kutipan tersebut.

ask_player_campaign_cited Menggunakan kredit chat

Ajukan pertanyaan kampanye faktual yang ditujukan untuk pemain dan dapatkan jawaban singkat yang aman untuk pemain dengan sitasi transkrip. Konten khusus GM dikecualikan oleh jalur pemain di sisi server. Menggunakan kredit chat pemain.

Contoh input

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

Deskripsi field

FieldTipeDeskripsi
campaign_idstring (uuid)Kampanye yang akan ditanyai.
questionstringPertanyaan Anda.

Contoh output

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

Deskripsi field

FieldTipeDeskripsi
answer_markdownstringJawaban yang disitasi, dengan penanda [n] inline.
citationsarrayMetadata sitasi yang mendukung setiap penanda.
quotesarrayKutipan transkrip verbatim yang digunakan sebagai bukti.
confidence_labelstringPita keyakinan kasar.
nilai: high | medium | low
credit_costnumberKredit yang ditagih untuk jawaban ini.

Contoh aman untuk pemain

Membangun bot atau overlay yang ditujukan untuk pemain? Gunakan alat sitasi pemain agar jawaban berasal dari jalur pemain, yang ledger terfilter visibilitasnya tidak pernah menyertakan konten khusus GM:

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

Ke mana data Anda pergi

Ketika Anda menghubungkan klien MCP dan menggunakan alat-alat ini, konten kampanye Anda dikirim ke klien AI yang Anda pilih — misalnya ChatGPT, Claude, atau Gemini. Ketentuan penggunaan data dan pelatihan penyedia tersebut berlaku untuk apa yang Anda kirimkan kepadanya, bukan ketentuan kami.

Jaminan tanpa pelatihan Recap Raven mencakup pipeline kami sendiri dan penyedia model yang kami ungkapkan. Jaminan ini tidak dapat mencakup klien yang Anda hubungkan: dengan menghubungkannya, Anda memilih prosesor baru untuk data kampanye Anda. Harap periksa ketentuan klien tersebut sebelum menghubungkannya, dan gunakan ask_player_campaign_cited atau filter pencarian aman untuk pemain (serta hindari pembacaan khusus GM seperti lore dan chronicle) untuk apa pun yang akan dilihat pemain.

Ada pertanyaan atau masukan? Lihat cara kerja Recap Raven atau undang bot di bawah ini.

Jalankan Recap Raven di sesi berikutnya

Undang bot, buat kampanye Anda, dan dapatkan rekap gratis setiap bulan.

Jalankan Recap Raven di sesi berikutnya

Tanpa kartu · Rekam hanya dengan persetujuan meja Anda · Hapus atau ekspor data Anda kapan saja

Ada pertanyaan atau masukan? Bergabunglah dengan komunitas Discord kami →

Dibuat untuk suara Discord. Kami merekam seluruh sesi untuk Anda — tanpa perlu login setelahnya, tanpa file yang harus dikirim kepada kami, dan tanpa menebak siapa yang berbicara. Paket memori menjaga wiki dunia Anda yang dapat diedit tetap mutakhir saat Anda bermain, siap untuk pertanyaan tentang apa yang terjadi, siapa mengatakan apa, hook yang terbuka, dan apa yang harus disiapkan selanjutnya.