Skip to main content
Glama
Eurobertics

mcp-rpg-worldstate

by Eurobertics

MCP RPG Worldstate

Un servidor MCP local y neutral respecto al sistema que proporciona a una dirección de juego de IA una memoria permanente para mundos de juegos de rol. Almacena contenido narrativo principalmente como texto libre y estructura solo lo que es importante para la búsqueda y la coherencia: pertenencia al mundo, tipos de entidad, lugares, escenas, participantes y estados activos.

Idea rectora

Se almacenan hechos permanentes o narrativamente relevantes, no cualquier observación transitoria. Un control meteorológico planetario averiado puede ser importante; un peinado alterado por el viento, normalmente no.

La recuperación típica está deliberadamente escalonada:

  1. list_worlds muestra las partidas existentes.

  2. get_world_overview proporciona una vista previa compacta de la partida.

  3. get_current_context carga la escena inmediatamente jugable.

  4. search_entities obtiene más detalles solo cuando es necesario.

Los cambios se pueden agrupar con apply_world_changes en una única llamada atómica.

Las entidades recién creadas pueden referirse entre sí dentro de la misma llamada mediante referencias locales. Un archivo compacto de eventos y checkpoints explica, si es necesario, cómo se ha llegado al estado actual, sin sustituir el estado del mundo autoritativo.

Related MCP server: Librarian

Requisitos e instalación

  • Node.js 24 o superior (para el módulo SQLite integrado)

  • npm

npm install
npm run build
npm test

El servidor utiliza por defecto rpg-worldstate.sqlite en el directorio de trabajo. Para una ubicación de almacenamiento estable y explícita, se debe establecer RPG_WORLDSTATE_DB como ruta absoluta.

Configuración de MCP

Un cliente MCP local puede iniciar el servidor a través de stdio. El patrón general de configuración es:

{
  "mcpServers": {
    "rpg-worldstate": {
      "command": "node",
      "args": [
        "/home/eurobertics/projects/mcp_rpg_worldstate/dist/index.js"
      ],
      "env": {
        "RPG_WORLDSTATE_DB": "/home/eurobertics/projects/mcp_rpg_worldstate/rpg-worldstate.sqlite"
      }
    }
  }
}

La ubicación exacta de esta configuración depende del cliente MCP utilizado. El servidor escribe mensajes de registro exclusivamente en stderr, para que el protocolo MCP permanezca limpio en stdout.

Claude Desktop en Windows con servidor en WSL

Si Claude Desktop se ejecuta en Windows, pero el servidor MCP está instalado dentro de WSL, Claude puede iniciarlo mediante wsl.exe. La configuración se encuentra normalmente en:

%APPDATA%\Claude\claude_desktop_config.json

Ejemplo:

{
  "mcpServers": {
    "rpg-worldstate": {
      "command": "wsl.exe",
      "args": [
        "-d",
        "Ubuntu",
        "--exec",
        "bash",
        "-lc",
        "cd /home/eurobertics/projects/mcp_rpg_worldstate && RPG_WORLDSTATE_DB=/home/eurobertics/projects/mcp_rpg_worldstate/rpg-worldstate.sqlite exec node dist/index.js"
      ]
    }
  }
}

Ubuntu debe corresponder al nombre exacto de la distribución WSL utilizada. PowerShell muestra las distribuciones instaladas con el siguiente comando:

wsl.exe --list --quiet

bash -lc carga una shell de inicio de sesión. Esto es especialmente importante si Node.js se instaló mediante un gestor de versiones como fnm o nvm. La ruta del proyecto y de la base de datos son rutas de Linux dentro de WSL. La instrucción completa de shell debe seguir siendo un único elemento de args en la configuración JSON.

El inicio se puede comprobar directamente desde PowerShell antes de la configuración de Claude:

wsl.exe -d Ubuntu --exec bash -lc "cd /home/eurobertics/projects/mcp_rpg_worldstate && RPG_WORLDSTATE_DB=/home/eurobertics/projects/mcp_rpg_worldstate/rpg-worldstate.sqlite exec node dist/index.js"

Si el inicio es correcto, aparece en stderr, por ejemplo:

mcp-rpg-worldstate is using /home/eurobertics/projects/mcp_rpg_worldstate/rpg-worldstate.sqlite

El proceso permanece activo y espera mensajes MCP a través de stdin. Ese es el comportamiento esperado. Después de modificar el archivo de configuración, Claude Desktop debe cerrarse por completo y reiniciarse.

Nota de ChatGPT: Esta configuración utiliza el transporte local stdio de Claude Desktop. No se puede adoptar sin cambios para ChatGPT Desktop. Para ello, el servidor tendría que ofrecerse además a través de un transporte HTTP compatible con ChatGPT y una URL accesible.

Herramientas

Herramienta

Propósito

list_worlds

Lista compacta de todas las partidas

create_world

Crear un mundo/campaña nuevo y aislado

update_world

Cambiar la descripción permanente del mundo o el resumen breve

delete_world

Eliminar recursivamente el mundo con todos sus datos dependientes

apply_world_changes

Crear, modificar o eliminar entidades de forma agrupada

search_entities

Buscar personajes, lugares, tramas, notas y objetos

set_current_scene

Registrar de forma compacta la escena actual y sus participantes

get_world_overview

Cargar una vista previa de la partida con pocos tokens

get_current_context

Cargar el contexto jugable actual

create_checkpoint

Guardar un resumen seguro para jugadores y notas opcionales del GM

get_recent_events

Leer eventos relevantes paginados o desde un checkpoint

list_checkpoints

Cargar estados de sesiones y capítulos anteriores paginados

random_numbers

Números aleatorios neutrales para decisiones narrativas

Los tipos de entidad son character, location, plot, note e item. Un personaje u objeto puede recibir una ubicación actual mediante locationId. Los lugares se pueden anidar con parentId. La participación en la escena es independiente de ello: un breve cambio de escena compartido no tiene que modificar automáticamente todas las ubicaciones permanentes.

Referencias locales en un lote

Las operaciones de creación pueden definir una ref única dentro de la llamada. Otros cambios pueden usarla con locationRef o parentRef, incluso si la operación de creación referenciada aparece más tarde en el array:

{
  "worldId": 1,
  "changes": [
    {
      "action": "create",
      "ref": "mara",
      "kind": "character",
      "name": "Mara",
      "locationRef": "tavern"
    },
    {
      "action": "create",
      "ref": "cellar",
      "kind": "location",
      "name": "Weinkeller",
      "parentRef": "tavern"
    },
    {
      "action": "create",
      "ref": "tavern",
      "kind": "location",
      "name": "Zum hinkenden Drachen"
    }
  ],
  "summary": "Mara und ihr Gasthaus wurden eingeführt."
}

La respuesta contiene createdRefs con los IDs numéricos generados. Las referencias desconocidas, duplicadas o circulares, así como la indicación simultánea de, por ejemplo, locationId y locationRef, abortan toda la transacción.

Eventos, secretos y checkpoints

Un summary en apply_world_changes genera una entrada de evento histórica compacta. En cuanto el lote afecta a una entidad secreta, el resumen debe marcarse como secreto con eventSecret: true u omitirse. Así, ningún cambio secreto puede aparecer accidentalmente en el historial público de eventos.

get_recent_events devuelve eventos por defecto en el orden id DESC, admite beforeId para la paginación hacia atrás, búsqueda de texto y sinceCheckpointId. Cada checkpoint almacena internamente el estado de eventos de ese momento, de modo que «¿Qué ocurrió desde este checkpoint?» se puede responder sin ambigüedad.

list_checkpoints devuelve también los checkpoints más antiguos, primero los más recientes, y pagina mediante beforeId.

Checkpoints seguros para jugadores

Cada nuevo checkpoint separa dos canales de información:

{
  "worldId": 1,
  "title": "Die Nacht im hinkenden Drachen",
  "playerRecap": "Bernd fand im Keller eine königliche Münze. Mara behauptete, sie noch nie gesehen zu haben.",
  "gmNotes": "Mara ist die verschwundene Königin."
}
  • playerRecap es obligatorio y está destinado exclusivamente a hechos ya observados, revelados o razonablemente conocidos.

  • gmNotes es opcional y siempre está destinado exclusivamente al director de juego.

  • Las identidades ocultas, motivos, causas, planes, lugares y desarrollos futuros nunca pertenecen a playerRecap.

  • En caso de duda, una información pertenece a gmNotes, a una entidad secreta o a un evento secreto, no al resumen público.

El servidor no clasifica, depura ni reformula contenidos automáticamente. La IA que realiza la llamada es responsable de la clasificación correcta. Las entidades y los eventos siguen siendo la fuente autoritativa; los checkpoints son vistas previas narrativas compactas de la partida.

get_world_overview y list_checkpoints devuelven por defecto exclusivamente playerRecap. gmNotes solo se emite como campo separado con includeSecrets: true. Esta opción solo puede utilizarse en un contexto legítimo de director de juego. El servidor nunca fusiona ambos textos.

La entrada anterior summary para create_checkpoint ya no se acepta. Por lo tanto, cada nuevo cliente debe crear explícitamente un resumen seguro para los jugadores.

Migraciones de base de datos

El esquema se versiona mediante PRAGMA user_version de SQLite. Al iniciar el servidor, las bases de datos antiguas se migran automáticamente al estado actual dentro de transacciones. Los contenidos antiguos de summary de checkpoints se consideran potencialmente secretos por precaución: se trasladan a gmNotes y en público se sustituyen solo por un aviso neutral. Un resumen antiguo nunca se publica automáticamente como conocimiento de los jugadores. No obstante, antes de un cambio de versión se recomienda hacer una copia de seguridad del archivo SQLite.

Skill opcional de Codex

En skills/rpg-worldstate-gm se encuentra una pequeña skill complementaria con reglas para la carga moderada, cambios de estado relevantes, secretos y checkpoints. No es necesaria para el servidor MCP ni para otros clientes.

Para la instalación local, la carpeta se puede copiar al directorio personal de skills de Codex:

cp -R skills/rpg-worldstate-gm ~/.codex/skills/

Eliminación y consistencia

delete_world exige por seguridad la confirmación exacta DELETE: <Weltname>. Después, SQLite elimina mediante cascadas de claves foráneas todos los personajes, lugares, tramas, escenas, checkpoints y eventos de ese mundo.

Las vinculaciones entre mundos diferentes se rechazan. Los cambios agrupados se ejecutan en una transacción: si un cambio no es válido, no se guarda ninguno de ellos.

Desarrollo

npm run dev
npm run check
npm test

Los archivos más importantes son:

  • src/store.ts: esquema SQLite, validación y consultas

  • src/server.ts: herramientas MCP públicas y esquemas de entrada

  • src/index.ts: punto de entrada local stdio

  • src/*.test.ts: pruebas de base de datos y de protocolo MCP

Available Tools

13 tools
apply_world_changesApply relevant world-state changesA

Create, update or delete several durable entities atomically in one call. Create operations may define local refs used by locationRef or parentRef, including forward references. Store only lasting or story-relevant changes, preferably together at natural story boundaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
changesYes
summaryNoOptional concise event summary explaining this group of changes.
worldIdYesNumeric world ID from list_worlds or create_world.
eventSecretNoMark the event summary as GM-only. Required when a summarized batch affects any secret entity.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full behavioral burden. It discloses atomicity ('atomically') and durability ('durable entities'), which are critical operational traits. It also explains local refs and forward references, clarifying how changes can reference each other. Missing details like failure modes or rollback behavior are partially covered by atomicity, but not fully elaborated. Overall, it provides enough behavioral context for safe invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both dense with information. Key operational details (atomicity, refs) are front-loaded, followed by usage guidance. No wasted words; every clause earns its place. Ideal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex batch tool with three action types and nested object schemas, the description covers the essential operating contract: atomicity, refs, and appropriate usage. It does not mention the 100-item limit or the eventSecret secret-entity rule, but those are schema-encoded. Given the schema's richness and the description's focus on behavior, it is sufficiently complete for an agent to understand the tool's purpose and constraints, though a note on error handling would elevate it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 75% of parameters (summary, worldId, eventSecret have descriptions; changes does not). The description adds a nuance about local refs and forward references beyond the schema's generic ref mentions. However, it does not specify how 'changes' should be structured overall, and the schema already documents most parameter semantics. The added value is marginal but non-zero.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (create, update, delete) and resource (durable entities) performed atomically in one call. It distinguishes itself from sibling tools like update_world or create_checkpoint by emphasizing batch atomicity and multi-entity support. The verb-resource pair is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides guidance on when to use the tool: 'Store only lasting or story-relevant changes, preferably together at natural story boundaries.' This implies batching at narrative milestones and filtering for durable changes. However, it does not explicitly name alternative tools or state when NOT to use it (e.g., for single-entity updates), leaving some inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_checkpointCreate save-game checkpointA

Create a checkpoint with strictly separated player-safe recap and optional GM-only notes. The server does not classify or rewrite content; entities and events remain authoritative.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
gmNotesNoOptional GM-only checkpoint notes for concealed information relevant to continuing the campaign. Never returned unless secrets are explicitly requested.
worldIdYesNumeric world ID from list_worlds or create_world.
playerRecapYesConcise player-safe recap. Include only facts explicitly observed, learned, or reasonably known by the player characters. Never include concealed identities, motives, causes, plans, locations, future developments, or other unrevealed GM information.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It goes beyond the schema by stating that the server does not classify or rewrite content, making it clear that the tool stores what it is given. The 'strictly separated' and GM-only phrasing also signals access semantics and data-handling behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences deliver the core behavior, content separation, and the server's non-rewriting guarantee with no wasted wording. The sentence is front-loaded and free of tautology.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simple flat parameter set, no output schema, and no enums or nested structures, the description plus schema supplies what a caller needs for a correct create operation. A missing explicit usage boundary and a description of the returned checkpoint identifier prevent a perfect score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides detailed guidance for worldId, gmNotes, and playerRecap, covering 75% of parameters; title is self-explanatory. The description adds orientation about recap and GM-note separation but does not introduce new parameter-level semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states it "Create[s] a checkpoint" and characterizes its two core content types: player-safe recap and GM-only notes. This is a clear verb+resource statement and it is naturally distinguished from siblings like list_checkpoints or update_world.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to create a checkpoint versus setting current scene, listing checkpoints, or applying world changes. The intended usage must be inferred entirely from the tool name and the word 'checkpoint.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_worldCreate RPG worldB

Create an isolated RPG world/campaign. Description holds its durable tone, setting, rules and boundaries as free text.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
summaryNoShort save-preview premise, ideally a few sentences.
descriptionNo

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries full burden. It reveals that the 'description' parameter holds tone/settings, but doesn't disclose persistence, side effects, authorization, or what 'isolated' means operationally. For a create/mutation tool this is under-transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, efficient and front-loaded, but at the expense of needed context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A create tool with no annotations and no output schema needs to explain return value or side effects. None provided. Sibling context (update_world, set_current_scene) raises questions about whether creation also activates the world, which isn't addressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 33% schema coverage, the description should compensate. It only clarifies the 'description' parameter ('holds its durable tone...'). No help for 'name' (required) or 'summary' beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb 'Create' and resource 'RPG world/campaign'. Calls it 'isolated' adding scope. Distinguishes from sibling 'create_checkpoint' and update/delete siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for creating a new world but provides no explicit when-to-use or alternatives. The word 'isolated' hints at separation but no routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_worldPermanently delete RPG worldA
Destructive

Permanently delete a world and all related entities, scenes, checkpoints and events. Requires exact confirmation 'DELETE: '.

ParametersJSON Schema
NameRequiredDescriptionDefault
worldIdYesNumeric world ID from list_worlds or create_world.
confirmationYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint annotation, the description reveals that deletion cascades to all related entities, scenes, checkpoints and events, and requires an exact confirmation string. This is valuable behavioral context that prevents accidental destructive calls and explains the guardrail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences deliver the key behavior, scope, and confirmation requirement without redundancy. The destructive nature is front-loaded, making it immediately visible to an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the destructiveHint annotation, two simple parameters, and no output schema, the description is sufficiently complete. It explains what gets deleted, the confirmation safeguard, and how to identify the world, leaving no critical gap for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50% because the confirmation parameter lacks a description. The description compensates by specifying the exact required format: 'DELETE: <world name>'. It also references list_worlds and create_world indirectly through the schema description for worldId, so the essential parameter semantics are covered.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('delete') and resource ('world'), and specifies the full scope of deletion ('all related entities, scenes, checkpoints and events'). This clearly differentiates it from siblings like update_world and create_world, making the tool's purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies this is the tool for permanently removing an entire world, and the confirmation requirement is a concrete usage instruction. It does not explicitly name alternatives or state when not to use the tool, but the context is clear enough that an agent can identify the right invocation scenario.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_current_contextLoad current playable contextA
Read-only

Load world framing plus current scene, its location, characters currently assigned there and active plots. Use after the compact overview when continuing play.

ParametersJSON Schema
NameRequiredDescriptionDefault
worldIdYesNumeric world ID from list_worlds or create_world.
includeSecretsNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation readOnlyHint=true indicates the tool is read-only, and the description does not contradict this (annotation_contradiction=false). The description adds behavioral context about what data is loaded (world framing, scene details), which goes beyond the annotation, but it does not disclose potential performance implications or the exact structure of the returned context. Given the read-only annotation, the bar is lowered, but the description could add more depth about the returned data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the core purpose, followed by a usage hint. Every sentence adds value, and there is no redundancy with the schema or annotations. It is appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is a read-only context loader with a relatively simple input schema (one required param, one optional boolean), the description is fairly complete. It indicates the type of information returned (framing, scene, location, characters, plots) and the usage context. However, it does not explain the behavior of includeSecrets (e.g., whether it loads hidden plots or character secrets), which could be important for correct invocation. There is no output schema, but the description partially compensates by listing the content types. Minor gaps remain, but overall it is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers half of the parameters: worldId is described as a numeric ID from list_worlds or create_world, with exclusiveMinimum and maximum. However, includeSecrets lacks a description. The tool description does not explicitly explain the parameters, but given the 50% schema coverage, the description adds some context by implying that the loaded context might include secrets (from the parameter name). The description partially compensates for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as loading world framing, current scene, location, characters, and plots, with a specific verb and resource. It distinguishes itself from the compact overview and from siblings like get_world_overview and get_recent_events by focusing on the current playable context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a clear usage hint: 'Use after the compact overview when continuing play.' This provides context for when to call the tool, though it does not explicitly mention alternatives or exclusions. It effectively instructs on the intended sequencing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recent_eventsRead recent relevant eventsA
Read-only

Read a compact newest-first history explaining how the authoritative current state developed. Supports backward pagination and events since a checkpoint; do not use it instead of current context.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
worldIdYesNumeric world ID from list_worlds or create_world.
beforeIdNo
includeSecretsNo
sinceCheckpointIdNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true. The description adds meaningful behavioral context beyond that: newest-first ordering, compactness, backward pagination, checkpoint-based filtering, and the relationship to current context. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The core purpose is front-loaded, and the exclusion is stated immediately after the capabilities. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and low parameter documentation, the description leaves out important invocation details: return shape, what 'relevant events' means, how query filtering works, what includeSecrets does, and how pagination parameters interact. An agent would still have to guess at several behaviors.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 17%, so the description must compensate for undocumented parameters. It mentions backward pagination and checkpoint filtering, which hints at beforeId and sinceCheckpointId, but it does not explain limit, query, includeSecrets, or pagination mechanics. This is insufficient for a 6-parameter tool with mostly undocumented schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Read') and resource ('compact newest-first history') and explains the tool's purpose: showing how the authoritative current state developed. It also distinguishes itself from current context, which is a sibling tool, so an agent can tell them apart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives concrete usage context: backward pagination and events since a checkpoint. It also explicitly warns 'do not use it instead of current context,' providing a when-not. It does not name all alternative siblings or broader selection criteria, but the guidance is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_world_overviewLoad compact save previewA
Read-only

Load a token-conscious save preview. The latest checkpoint contains only playerRecap by default; GM notes and other secret records require explicitly authorized secret access.

ParametersJSON Schema
NameRequiredDescriptionDefault
worldIdYesNumeric world ID from list_worlds or create_world.
includeSecretsNoReturn separately stored GM-only information. Use only in an authorized gamemaster context.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds meaningful behavioral context: the latest checkpoint contains only playerRecap by default, and GM notes/secret records require explicitly authorized secret access. This goes beyond the annotation and clarifies what the tool actually returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The core purpose is front-loaded, and the important caveat about secret access is stated directly. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only preview tool with two well-documented parameters and no output schema, the description plus schema is sufficient for an agent to call it correctly. It could optionally describe the return shape, but that is not necessary given the compact nature of the tool and the existing annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters. The description reinforces includeSecrets' default behavior by explaining the default playerRecap-only content, but it adds no new parameter syntax, format, or additional semantic detail beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Load a token-conscious save preview.' It also clarifies the default content (playerRecap only) and the secret-access requirement, which helps distinguish it from siblings like list_checkpoints and get_current_context, though it does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for a compact, token-conscious preview and warns that secrets require authorized access, but it does not explicitly state when to use this tool versus siblings such as list_checkpoints or get_current_context. The context is present but the exclusion/alternative guidance is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_checkpointsList earlier save checkpointsA
Read-only

List player-safe checkpoint recaps newest first. GM notes remain absent unless includeSecrets is explicitly true in an authorized GM context.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
worldIdYesNumeric world ID from list_worlds or create_world.
beforeIdNo
includeSecretsNoReturn gmNotes as a separate field. Use only in an authorized gamemaster context.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as read-only (readOnlyHint=true), and the description adds meaningful behavior beyond that: results are ordered newest first, GM notes are excluded by default, and includeSecrets controls their visibility. It does not discuss rate limits or error conditions, but for a read-only list tool this is solid coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler. The core behavior ('player-safe checkpoint recaps newest first') is front-loaded, and the security-sensitive GM note caveat is placed immediately after. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list with no output schema, the description covers the essential contract: what is listed, in what order, and under what conditions secret content appears. The only minor gap is the lack of explicit guidance on pagination, but 'newest first' plus the beforeId field make it inferable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema documents worldId and includeSecrets but leaves limit and beforeId undocumented (50% coverage). The description partially compensates by clarifying includeSecrets semantics ('in an authorized GM context') and implying cursor behavior via 'newest first', but it never explains how beforeId or limit affect the response.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies the action ('List'), the resource ('player-safe checkpoint recaps'), and adds ordering ('newest first'). It clearly distinguishes the read operation from siblings like create_checkpoint and apply_world_changes, though it does not explicitly name alternative tools to differentiate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'player-safe' and the note about 'authorized GM context' imply the player vs. gamemaster use case, but the description never explicitly says when to use this tool versus alternatives like get_recent_events or get_world_overview. The usage context is clear by implication, not by directive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_worldsList RPG worldsA
Read-only

List compact save-game entries. Use this first in a new chat; it never loads full world data.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description doesn't need to repeat that. It adds the behavioral detail that it never loads full world data, which is useful. However, it doesn't describe the return format or any pagination, but for a zero-parameter list tool this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no waste. The key usage guidance is front-loaded, and the behavioral note is concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only list tool with no output schema, the description covers the essential usage and behavior. It could mention what 'compact' means or the return format, but it's adequate for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the schema is trivially complete. The description adds the semantic that it returns compact entries, which is useful context beyond the empty schema. Baseline 4 for zero params is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List') and resource ('compact save-game entries'), and distinguishes it from siblings by noting it never loads full world data. It doesn't explicitly name a sibling, but the purpose is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says to use this first in a new chat, which is a clear usage context. It doesn't mention alternatives or when not to use it, but the guidance is sufficient for a simple list tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

random_numbersGenerate neutral random integersA
Read-only

Generate random integers for unbiased narrative decisions. This is not a rules or dice system.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxYes
minYes
countNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals that this is a safe read-only operation. The description adds useful context about neutrality and narrative use, but it does not disclose behavioral details such as whether min and max are inclusive, how count affects the result, or what distribution is used.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. The primary action is front-loaded, and the boundary-setting exclusions are concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple and read-only, so the description covers the core purpose well. However, the lack of output schema and parameter semantics leaves some ambiguity about return shape and bound inclusivity, making it adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides no explanation of the min, max, or count parameters. With 0% schema description coverage, the description was expected to clarify bounds inclusivity and count behavior, but it does not; it relies entirely on the self-explanatory property names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Generate'), the resource ('random integers'), and the intended use case ('unbiased narrative decisions'). The second sentence explicitly distinguishes it from rules or dice systems, which removes ambiguity about its role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear when-to-use signal: unbiased narrative decisions. It also gives an explicit when-not-to-use signal by stating it is not a rules or dice system, though it does not name a specific alternative tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_entitiesSearch characters, locations, plots, notes and itemsB
Read-only

Targeted lookup. Supports questions such as all characters in a world, where a character is, or which characters are at a location.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNo
nameNo
limitNo
queryNo
activeNo
worldIdYesNumeric world ID from list_worlds or create_world.
locationIdNo
includeSecretsNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, and the description's words 'lookup' and 'search' are consistent with a read-only operation. However, the description does not disclose additional behavioral traits such as default pagination (limit=50), whether includeSecrets defaults to false, or how active filtering works. The annotation lowers the burden, but the description still adds limited behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise—two sentences—and front-loads the core idea ('Targeted lookup') with illustrative examples. It avoids filler, although for a tool with 8 parameters, a bit more structured parameter context would improve clarity without harming conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 parameters, only 13% schema coverage, no output schema, and minimal annotations, the description leaves major gaps: return format, pagination limits, the role of query vs. name, how active and includeSecrets affect results, and what 'where a character is' means in terms of parameters. The examples are helpful but not enough for reliable invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 13% (only worldId has a description). The description's examples hint at worldId, kind, and locationId, but it does not explain the semantics of query, name, limit, active, or includeSecrets. Since the schema is mostly silent and the description does not compensate, agents will struggle to set parameters correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('search', 'lookup') and resource ('characters, locations, plots, notes and items'), and the example questions clarify the intended function. It is clearly distinct from sibling tools like list_worlds and get_world_overview, which are not targeted searches.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through examples ('all characters in a world', 'where a character is'), but it never explicitly contrasts with sibling read tools like get_current_context or get_world_overview. There is no 'when not to use' guidance, so the agent must infer the appropriate scenario.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_current_sceneSet current story sceneA

Record the compact immediate scene in one operation. Participants describe who is narratively present; this does not move every character permanently.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
summaryYes
worldIdYesNumeric world ID from list_worlds or create_world.
locationIdNo
participantIdsNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. It discloses that the operation is 'compact' and that it does not permanently move characters, which adds context. However, it does not mention side effects, permissions, or reversibility. The disclosure is partial, hence a 3.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no redundancy; the core purpose and a key caveat are front-loaded. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 5 parameters and no output schema, the description is adequate but not complete. It clarifies the primary intent and the participant parameter, but does not specify return values, error conditions, or usage prerequisites. Given the tool's moderate complexity, a 3 is appropriate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is low (20%), so the description must compensate. The description clarifies that 'participants' means 'who is narratively present', which adds meaning beyond the bare parameter name. It does not explain all parameters, but the key one is addressed. Given low coverage, this is a strong contribution.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Record') and resource ('compact immediate scene'), and explicitly clarifies that it does not move every character permanently, which distinguishes it from potentially similar operations like apply_world_changes. However, it does not explicitly name sibling tools to differentiate further.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context that it records the 'immediate scene' and clarifies a limitation (does not move characters permanently), but it does not explicitly state when to use this tool versus alternatives like get_current_context or apply_world_changes. Usage guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_worldUpdate durable world informationB

Update a world's durable framing. Do not record transient narration here.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
summaryNo
worldIdYesNumeric world ID from list_worlds or create_world.
descriptionNo

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It conveys that updates are 'durable' and that transient narration is out of scope, but it never states whether the update overwrites or merges existing fields, whether it is destructive, what the response looks like, or any prerequisites. For a mutation tool with zero annotation coverage, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero filler. The first sentence states the action and object, the second adds a meaningful boundary instruction. Every word earns its place, and the durable/transient distinction is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a mutation tool with no annotations, no output schema, and three undocumented parameters. The description is too thin to be complete: it omits return value behavior, update semantics (merge vs. overwrite), and any guidance on the content fields. An agent could call this correctly only by opening the schema and guessing at the meaning of the undocumented fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25% (only worldId is documented), and per the rubric the description must compensate for the three undocumented parameters (name, summary, description). The phrase 'durable framing' provides only loose thematic context and never maps to individual parameters, so an agent gets little help understanding what to put in name, summary, or description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Update') and resource ('a world's durable framing'), and the 'durable' qualifier sets it apart from read-oriented siblings like list_worlds and get_world_overview. However, it does not explicitly differentiate itself from the 'apply_world_changes' sibling, whose name could plausibly describe the same operation, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives one explicit exclusion: 'Do not record transient narration here,' which implies the tool is reserved for persistent lore rather than scene-level content. But it names no alternatives (e.g., set_current_scene or apply_world_changes for transient work) and provides no positive guidance on when this tool should be selected, leaving usage mostly implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 13 tool updatesv2.2.0
    • First observedapply_world_changes
    • First observedcreate_checkpoint
    • First observedcreate_world
    • First observeddelete_world
    • First observedget_current_context
    • First observedget_recent_events
    • First observedget_world_overview
    • First observedlist_checkpoints
    • First observedlist_worlds
    • First observedrandom_numbers
    • First observedsearch_entities
    • First observedset_current_scene
    • First observedupdate_world

TDQS

A3.7/5.0

Scored across 13 tools

Disambiguation4/5

Each tool has a clear, distinct purpose with carefully worded boundaries (e.g., get_current_context vs. get_world_overview vs. get_recent_events). The descriptions are detailed enough that an agent should select correctly, though the overlapping 'get' cluster and create/update endpoints could still cause occasional confusion.

Naming Consistency4/5

The server consistently uses a snake_case verb_noun pattern (create_world, update_world, search_entities, set_current_scene) that makes behavior predictable. The one outlier, random_numbers, breaks the verb-first pattern but is still clear and descriptively named.

Tool Count5/5

13 tools is well within the ideal range for a domain of this scope. The server covers the full CRUD lifecycle for worlds, plus checkpoints, entities, scenes, and context management without accidental bloat or missing essentials.

Completeness4/5

The toolset provides comprehensive coverage of the worldstate domain, including world lifecycle, checkpoints, entity search, scene management, and history navigation. It could be even more complete with granular entity-level operations, but the atomic apply_world_changes and search_entities cover most reasonable workflows.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides persistent, local-first AI memory across sessions via MCP tools for storing, searching, and retrieving context from past interactions.
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides AI agents with persistent knowledge storage, enabling them to store, search, and retrieve text, documents, and files using semantic and keyword search via MCP tools.
    32
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    Provides persistent memory with semantic search for MCP-based AI agents, enabling them to store and recall information across sessions using vector embeddings.
    4
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to store and semantically retrieve durable memories across sessions via MCP or REST, with tools for remembering, recalling, asking, updating, and forgetting memories.
    7 npm
    MIT