Authoring with De Lore Is
Use De Lore Is when a writing task needs an established world to check against: continuing a novel, adding lore, revising an account, or exploring another version of a story. It records structured lore and checks the rules supplied for that world. Keep the manuscript and prose references in their existing files.
For installation and a complete first check, read First session. The skill does not install the runtime. Start with a small section of the user’s notes, not a whole-book migration. Ask which details are established and which are ideas. Propose rules instead of assuming, for example, that every character can have only one home.
Use the author.* tools to add lore. Read every returned finding. Repair
mechanical input errors; resolve continuity findings using the user’s rulings
rather than change lore just to make a check pass. Do not edit .dli as an agent
authoring a world. People can write .dli directly and import or check it;
the store is the source of truth for an authoring session.
Register deloreis mcp --project <directory> with the client, then call its
tools. If they are not available, use the first-session setup instead of
simulating a stored world in the chat. The server
also offers newline-delimited JSON through deloreis serve --project <directory>. Contract 2.0.0 is the served contract. --tools all advertises
specialist tools beyond the default profile. Use installed help and tools/list
for the exact arguments rather than guessing tool schemas.
Authoring loop
author.opena scope and retain its returned workspace ID and digest. When fencing writes, pass the current digest asexpected_digest; read the updatedworkspace_digestfrom the result orauthor.statusafter each change rather than reuse an earlier one.- Use typed operations such as
author.add_entity,author.add_fact,author.add_relation,author.add_event, andauthor.add_before. Declare single-valued predicates withauthor.declare_functionaland changing predicates withauthor.declare_inertialwhere appropriate. - Check the project’s source/decision index before choosing a new decision ID;
reuse an ID only for that same ruling. For a ruling, use
author.record_decisionand cite that decision with{"kind":"cited","decisions":["d-0001"],"state":"ratified"}. An unruled proposal can use{"kind":"proposed","origin":"session-name"}. Unknown citations are errors and cannot make a claim certain. - Inspect
author.check,author.findings,author.query, andauthor.why.author.diffshows staged consequences. Check the returned findings even if the call itself succeeded. author.materializechecks and commits staged changes. It refuses errors.author.discardrejects staged work. Keep returned root hashes and claim IDs when they are useful for review or later retcons.
author.record_decision, author.defeat, and standing operations can update
the store directly; do not assume that every mutation is only staged. Use the
user’s agreed rulings and the host’s review policy before these calls; do not
silently turn an idea into an accepted account. The
caller supplies attribution, decision state, and review policy. The server
checks references and continuity, not who is authorized to rule.
Use it during a writing task
- Continue a chapter: query the people, places, and established facts relevant to the scene. After drafting, propose the new factual claims through the tools, check them, and show the user any conflicts. Review extracted claims against the prose; a clean check covers those claims and recorded rules.
- Brainstorm: keep alternatives proposed or in a hypothetical fork. Use
author.open_questionandauthor.add_optionfor a choice between accounts;author.add_hypothesisandauthor.supposesupport hypothetical exploration. Accepting a note into the store does not by itself make it established canon. Query established claims withlayer: "certain". Uselayer: "possible"or"all"to inspect open accounts as well; those layers also include certain claims. A known claim can evaluate dead, but there is nodeadquery layer: inspect its blocked support withauthor.why. - Revise: inspect
author.diffandauthor.why, then record the user’s chosen new ruling before callingauthor.defeaton the earlier support. Retain the old claim ID. Use a named branch for a separate durable version; branch tools are advertised with--tools all. - Track change within the story: record event-anchored states and query
author.as_of. A character changing allegiance is not necessarily a retcon. Declare known event ordering; leave unknown ordering open.
New workspaces see current committed lore; an already-open workspace retains its base. Open a fresh workspace when another session has changed the accepted world. The host application owns approval, access control, and concurrent-write policy. Do not describe DLI as general-purpose agent memory or infer a character’s knowledge from world facts.
For CLI reads and wiki export, see Read and export.
Core tools
The default MCP profile keeps 29 common tools. It advertises dli.check, dli.name.check, and:
- Workspace and inspection:
author.open,author.status,author.check,author.findings,author.predicates,author.query,author.why,author.as_of,author.diff, andauthor.entity_candidates. - Lore:
author.add_entity,author.add_fact,author.add_relation,author.add_event,author.add_before,author.add_state,author.declare_functional, andauthor.declare_inertial. - Rulings and exploration:
author.record_decision,author.open_question,author.add_option,author.defeat,author.set_standing,author.add_hypothesis, andauthor.suppose. - Acceptance:
author.materializeandauthor.discard.
author.add_option can name a fact that follows if that option is chosen,
using its optional implies field. Give options distinct names and add them
before materializing their question.
Use tools/list for the exact schemas. author.query returns claim IDs when
available; author.why explains supporting and blocked paths. For a retcon,
author.defeat takes a claim ID, a new decision, and the decision it defeats.
Defeating the retcon can restore the original support. Use --tools all for
named branches, specialist authoring, corpus import/export, and other tools.
The Holmes casebook is produced from a replay that exercises the server. The concept glossary explains the terms. DLI checks structured claims, not prose, and a functional conflict is detected only for a predicate declared single-valued.
Reading rendered lore
These are supported readable .dli forms. Agents author through the tools
instead of editing these snippets into the project:
person wren "Wren" proposed session
functional home proposed session
home(wren, thornfield) ratified d-0001