World Building

Entities

Entities are the named things that matter in your world: characters, places, factions, artifacts, events. They are the memory of your realm.


Every session produces a flood of names. Without a structure to catch them, continuity erodes. Entities solve this by giving every named thing in your world a permanent record: a description, a history, and a web of connections to everything else.

Persistent memory

Once an entity exists, it persists across sessions. Characters remember allegiances. Places accumulate history. The world does not reset.

Inline presence in text

Entities are linked directly inside transcripts and messages, so any mention of a name becomes a navigable reference to that entity.

A living graph

Relationships between entities form a graph that grows and changes as sessions unfold. Who rules whom, who betrayed whom, what was found where.


Every entity has a type that describes what kind of thing it is. Types are organized into seven categories.

Character

TypeDescription
characterA named person or NPC in the world.
creatureA monster, beast, or non-humanoid being.
speciesA category of life sharing common traits.
raceA humanoid people with a distinct culture or lineage.

Location

TypeDescription
city / town / villagePopulated settlements of varying size.
settlementA general inhabited place.
region / territoryA broad geographic or political area.
landmarkA notable fixed point in the world.
natural_featureA river, mountain, forest, or other natural formation.
ruinA decayed or destroyed structure with history.

Organization

TypeDescription
faction / guildA group organized around a shared purpose or trade.
political_bodyA governing council, senate, or ruling assembly.
cult / religionA group united by belief or devotion.
army / militaryA fighting force or martial institution.
clan / dynastyA family line or bloodline of significance.
merchant / businessA commercial enterprise or trading house.
sanctuary / residenceA protected haven or household.

Establishment

TypeDescription
shop / marketplaceA place of commerce.
templeA site of worship or religious practice.
archive / academyA center of knowledge or learning.
treasury / political_centerA seat of financial or governmental power.
healing_centerA place for rest, recovery, or medicine.

Item

TypeDescription
weaponAn instrument of combat.
artifact / relicAn object of ancient or magical significance.
heirloomAn item passed down through generations.
magicA spell, enchantment, or magical effect.
tool / consumable / itemPractical or mundane objects.

Event

TypeDescription
battleAn armed conflict between forces.
disaster / upheavalA catastrophic or world-changing event.
festivalA celebration or communal gathering.
meeting / treatyA negotiation, agreement, or formal encounter.
eventA general occurrence of narrative significance.

Misc

TypeDescription
vehicleA ship, carriage, or other mode of transport.
map / document / letterA written or illustrated record.
currency / resourceA form of economic value or raw material.
lawA rule, decree, or binding agreement.
technologyAn invention or system of knowledge.
unknownAn entity whose nature has not yet been determined.


A variant is an alternate name for an entity: a nickname, an alias, or a shortened form. Variants are how the platform recognizes the same entity across different spellings and phrasings in your sessions.

Matching

Variants are used to match names in transcripts and messages to entity records. Longer names take priority, so "Thornwall Keep" will match before "Thornwall" if both exist.

Corrections

If a speaker consistently mispronounces a name, the spoken form can be stored as a variant that resolves to the correct entity and displays the proper spelling.

Blocked names

Common words cannot become variants. Articles, conjunctions, and TTRPG mechanics like "roll" or "attack" are excluded to prevent false matches.


As your session is transcribed, the platform reads the text and automatically identifies named entities. New ones are created. Existing ones are recognized by their variants. Relationships between them are inferred and recorded. Mentions in the transcript are linked inline.

This happens continuously in the background. By the time a session ends, your compendium has already been updated.

Creating new entities and relationships is the work of the Entity Extraction gardener, which realm Owners and Admins can turn off per realm. Mentions of entities you already have are linked either way.


A relationship connects two entities with a typed edge: Aldric serves the Iron Throne, the Iron Throne governs the Northern Reach. Relationships are directional (they have a source and a target), but the UI shows both directions so you never need to look up the inverse manually.

Organizational

TypeDescription
member_ofThis entity belongs to a group or organization.
affiliated_withA looser association without full membership.
parent_ofThis entity is the progenitor or parent organization of another.
governsThis entity holds authority over another.
regulated_byThis entity is subject to oversight by another.

Locational

TypeDescription
resides_inThis entity lives or is based in a location.
exists_withinThis entity is contained inside another.
found_inThis entity can be encountered in a location.
operates_withinThis entity conducts activity in a location.
adjacent_to / located_nearThis entity is geographically close to another.
travels_toThis entity moves toward or visits a location.

Social

TypeDescription
ally_ofA cooperative relationship between entities.
enemy_ofA hostile or adversarial relationship.
competes_withA rivalry without open conflict.
trades_withA commercial or exchange relationship.
influencesThis entity shapes the behavior or state of another.
seeksThis entity is pursuing another entity.

Employment

TypeDescription
employsThis entity has hired or commands another.
servesThis entity works for or is loyal to another.
leadsThis entity is the head or commander of another.
commandsThis entity directs the actions of another.

Ownership

TypeDescription
ownsLegal or recognized possession.
possessesPhysical or current holding of an item.
hasA general attribute or belonging.

Commerce

TypeDescription
createsThis entity produces or crafts another.
acceptsThis entity receives a form of payment or currency.
purchasesThis entity buys from another.

associated_with is a general-purpose fallback for connections that do not fit a more specific type.


Individually, relationships describe one connection. Together, they form a graph: a web of every named thing in your world and how each relates to everything else. This graph accumulates across sessions without reset.

It evolves with play

Every session can add new relationships. An NPC who was a stranger in session one may be a sworn enemy by session five. The graph holds the current state, and each entity's History records every relationship added, changed, or removed along the way, so a relationship deleted by mistake can be restored.

Relationships have access control

Each relationship is independently visible or hidden per player. A secret alliance between two factions can exist in the graph without being exposed to everyone at the table.

No two identical edges

A given relationship type between any two entities can only exist once. This prevents duplicate edges from accumulating over repeated mentions of the same connection.


Clicking any entity link opens a panel with the full record for that entity. This is where description, notes, access, and relationships are all visible in one place.

Description and notes

The description is set by the extraction pipeline or written manually, and the Description Auto-Sync gardener can refresh it as scenes end. Every rewrite lands in History, where it can be rolled back. Notes are a personal scratchpad: every realm member gets their own private notes field on each entity, visible only to them, not even to the entity's creator or the realm's owner. These are distinct from Compendium notes, which are standalone documents that can be shared with players.

Relationships sidebar

All relationships for the entity are listed in the panel, grouped by category. Each entry shows the relationship type, the connected entity name and type, and an access indicator. Clicking a connected entity navigates directly to its panel.

Linking entities manually

From the panel, any Collaborator or above can add a relationship to any other entity in the realm by selecting the target entity and choosing a relationship type. This is how connections discovered outside of session text (through player knowledge, prep notes, or inference) get added to the graph.

Access control

Each entity and each relationship on it can be revealed or hidden per player independently. An entity visible to the whole table may still have relationships that are hidden from some players.

Mentions and History tabs

Below the description and notes, two tabs. Mentions lists where the entity comes up across your realm. History lists every change made to it, and is where you roll changes back.

Reveal notifications

When a session mentions an entity that some of the table can't see, session participants who can already see it and are allowed to reveal it get a notification. One click reveals it to everyone in that session, without opening the full panel. If that leaves every realm member able to see it, it becomes Public to Realm.


Every entity keeps a record of how it has changed. Open an entity and switch from Mentions to History to see it: a newest-first list of plain sentences, like “Mitchel Pigsley via MCP edited description and added a relationship with Wren.” History is not just a log. It is how you roll a change back.

The History tab on an entity, listing recent changes as sentences grouped by day
History lists every change to an entity, newest first.

What gets recorded

Creation, imports, merges, and changes to the name, type, description, aliases, and images, plus every relationship added, changed, or removed. A relationship change shows up on both entities it connects. Private notes and access changes are not recorded.

Who made each change

Each change names who made it: a realm member, the Gardener (entities and relationships found by Entity Extraction, and descriptions refreshed by Description Auto-Sync), a change made through the API or MCP (labelled "via API" or "via MCP"), or an Import. Changes made during a session link back to that session and scene.

Before and after

Underlined phrases open a popup showing what changed, with the old wording struck out and the new wording highlighted.

Who can see it

Anyone who can see an entity can see its History. The before-and-after wording and the Restore buttons are for Collaborator or above. Other members see who changed what and when, but not the earlier wording. If a relationship change involves an entity you cannot see, that entity's name is hidden.

Merged entities keep their past

When entities are merged, their history moves to the surviving entity, so nothing recorded about either one is lost.

In the app only

History cannot be read through the API or MCP, but changes made through them are recorded and labelled like any other.


When a description changes for the worse, or a relationship is deleted by mistake, you can put it back from History. This is the safety net for Description Auto-Sync: if the Gardener rewrites a description you liked, restore the version you had.

A History popup showing a description's wording before and after a change
Open a change to see what it replaced, then restore it from the same popup.

Restore a description

Open a description change in History and choose Restore previous version. The description goes back to the wording it had before that change.

Restore a relationship

Open a removed relationship in History and choose Restore relationship. It comes back with the same access it had before it was deleted.

Restores are recorded too

A restore is itself a change in History, so you can always see what happened and change your mind again. The Gardener will not immediately overwrite a restored description at the next scene.

Who can restore

Collaborator or above: the same roles that can edit entities and relationships.

What can be restored

Descriptions and deleted relationships. Name, type, alias, and image changes are shown in History but have to be changed back by hand, and a removed image cannot be recovered.


Over the course of a campaign, the same entity can accumulate multiple records: different spellings of the same name, an alias recognized as a separate character, a duplicate created before the original was in the system. Merging consolidates them into one.

One entity survives

You designate a surviving entity. All source entities are deleted after the merge.

Variants are transferred

Every variant from every source entity is moved to the surviving entity. Future text matching will resolve all of those names to the single record.

Relationships are migrated

All relationships from source entities are re-pointed to the surviving entity. Self-referential relationships that would result from the merge are discarded. Duplicate relationship types are deduplicated.

History carries over

Each source entity's History moves to the surviving entity, and the merge itself is recorded there.

Notes can be merged

If source entities have notes from the same user, those notes are joined with a separator under the surviving entity.

Access can be merged

The surviving entity can inherit the combined access list from all source entities, ensuring no player loses visibility they previously had.

Text references are updated

All bracket links in transcripts and messages that pointed to a source entity ID are rewritten to point to the surviving entity. The merge is reflected everywhere in the historical record, not just going forward.


Entities and relationships are fully accessible via the REST API and the MCP server.

  • Entity Graph API — list, get, create, update, merge, and delete entities and relationships with Bearer token authentication. Each entity also returns the IDs of quests linked to it; see the Quests API to read or manage those quests directly.

  • MCP tools — list_entities, get_entity, create_entity, edit_entity, edit_entity_notes, merge_entities, delete_entity, list_relationships, create_relationship, and delete_relationship are available to any connected AI assistant.

Changes made through either show up in each entity's History as “via API” or “via MCP”, and can be rolled back in the app like any other change. History itself is not available through the API or MCP.

Join us and connect for poems, content, updates, direct questions, community discussion, and more.

© 2026 Realms of Shod. All rights reserved.