WorldOracle
Offers function-calling tools for integrating worldoracle's belief state management, contradiction detection, and repair capabilities into OpenAI-compatible agents, enabling consistent fact resolution across multiple sources.

worldoracle
Contradiction detector and belief repair for multi-source fact states — game worlds, AI pipelines, and multi-tool agents.
Quick Start · How It Works · Use Cases · Features · CLI Reference · MCP · OpenAI Tools · Alternatives
Why
Any system that merges facts from multiple sources ends up with contradictions. The sources don't coordinate — they just answer independently and move on.
In game worlds: The blacksmith "knows" the king is both alive and dead; the guard believes the bridge is passable while the quest log says it collapsed. These inconsistencies break immersion and cause dialogue bugs.
In AI pipelines: A web-search tool returns a price of $899. A RAG knowledge base (synced 14 days ago) returns $749. A reasoning LLM infers $820. Without reconciliation, the agent synthesises an average that is wrong for every tier — and 44% of multi-tool pipelines hit this pattern when the KB is more than 7 days stale.
worldoracle gives any system a typed belief store with automatic contradiction detection and principled repair strategies — so your world stays consistent even when multiple independent sources update the same facts.
Related MCP server: Axiom-hub
Use Cases
Multi-tool AI agents
When you fan out a question to web-search + RAG + LLM and combine the results, conflicting answers are the rule, not the exception. worldoracle detects which facts contradict, applies a priority strategy (prefer_newer, prefer_higher_confidence, prefer_observation), and surfaces a single resolved answer.
# Three AI tools answered the same question differently
state = BeliefState(npc_id="support-pipeline-run-001")
state.add(WorldPredicate("enterprise-tier", "monthly_price_usd", 899,
source="web-search", confidence=0.95, timestamp=now))
state.add(WorldPredicate("enterprise-tier", "monthly_price_usd", 749,
source="knowledge-base", confidence=0.75, timestamp=14_days_ago))
detector = ContradictionDetector()
pairs = detector.detect(state) # [(web-search:899, knowledge-base:749)]
repairer = BeliefRepairer()
frame = repairer.repair(*pairs[0])
print(frame.resolved_value) # 899 (web-search wins — newer + higher confidence)See examples/ai_tool_contradiction_detector.py for a full walkthrough.
Game NPCs
Game NPCs frequently end up with contradictory world models across event systems, quest triggers, and dialogue trees. worldoracle gives every NPC a content-addressed belief store — consistent even when multiple systems update the same facts.
How It Works
flowchart LR
A[Game event / quest trigger] --> B[WorldPredicate]
B --> C[WorldOracleStore]
C --> D{ContradictionDetector}
D -- contradictions found --> E[BeliefRepairer]
E --> F[RepairFrame]
F --> G[Updated BeliefState]
D -- no contradictions --> GWorldPredicate — a typed belief:
subject,attribute,value,source,confidence,timestamp. Content-addressed by SHA-256 ofsubject|attribute|str(value).BeliefState — an NPC's full belief set; also content-addressed.
ContradictionDetector — scans for predicates with the same
(subject, attribute)but different values.BeliefRepairer — resolves each contradiction using strategies:
prefer_newer,prefer_higher_confidence,prefer_observation.
Features
Feature | Status |
Content-addressed predicates (SHA-256) | ✅ |
SQLite persistence ( | ✅ |
Contradiction detection | ✅ |
Belief repair (3 strategies) | ✅ |
Rich CLI (7 subcommands) | ✅ |
FastAPI REST server | ✅ |
MCP server for Claude Desktop | ✅ |
OpenAI function-calling tools | ✅ |
93 tests, >98% coverage | ✅ |
Fully typed (py.typed) | ✅ |
Quick Start
pip install worldoraclefrom worldoracle import WorldPredicate, BeliefState, ContradictionDetector, BeliefRepairer
# Build a belief state
state = BeliefState(npc_id="guard-1")
state.add(WorldPredicate(subject="king", attribute="alive", value=True, source="quest-giver", confidence=0.8, timestamp=1.0))
state.add(WorldPredicate(subject="king", attribute="alive", value=False, source="observation", confidence=1.0, timestamp=2.0))
# Detect contradictions
detector = ContradictionDetector()
pairs = detector.detect(state)
print(f"Found {len(pairs)} contradiction(s)")
# Repair — strategies are applied automatically in priority order:
# prefer_newer → prefer_higher_confidence → prefer_observation
repairer = BeliefRepairer()
for a, b in pairs:
frame = repairer.repair(a, b) # repair(pred_a, pred_b) → RepairFrame
print(f"Resolved: {frame.resolved_value!r} ({frame.strategy})")CLI Reference
worldoracle [--db PATH] COMMAND [ARGS]Command | Description |
| Add a predicate to an NPC's belief state |
| Detect contradictions |
| Generate repair frames for all contradictions |
| List all beliefs for an NPC |
| Run full consistency check across all NPCs |
| Diff belief state at two points in time |
| Show database stats |
# Add beliefs
worldoracle add guard-1 king alive True --source observation --confidence 0.9 --timestamp 100
worldoracle add guard-1 king alive False --source rumor --confidence 0.5 --timestamp 50
# Check for contradictions
worldoracle check guard-1
# Found 1 contradiction(s) for guard-1:
# CONFLICT: king.alive: 'True' vs 'False'
# Repair
worldoracle repair guard-1REST Server
Install the API extra and start the server:
pip install 'worldoracle[api]'
uvicorn worldoracle.api:app --reloadThe OpenAPI docs are available at http://localhost:8000/docs. See openapi.yaml for the full schema.
Repo Tree
worldoracle/
├── src/worldoracle/ ← Python package
│ ├── predicate.py ← WorldPredicate, BeliefState, Detector, Repairer
│ ├── store.py ← SQLite persistence
│ ├── cli.py ← Click CLI
│ ├── api.py ← FastAPI server
│ ├── mcp_server.py ← MCP server
│ ├── report.py ← Rich + JSON + Markdown formatters
│ └── py.typed
├── tests/ ← 45+ tests
├── docs/
├── tools/openai-tools.json
└── openapi.yamlMCP / Claude Desktop
Install the MCP server:
pip install "worldoracle[mcp]"Add to ~/.config/claude/claude_desktop_config.json:
{
"mcpServers": {
"worldoracle": {
"command": "worldoracle-mcp"
}
}
}Tools exposed: add_predicate, check_beliefs, repair_contradictions.
See docs/mcp.md and Smithery for hosted registry.
OpenAI Tools
The tools/openai-tools.json file defines function-calling schemas for GPT-4o and Codex CLI:
cat tools/openai-tools.jsonSee docs/openai.md for integration examples.
Alternatives
Tool | Approach | worldoracle advantage |
Manual quest flags | Unstructured booleans | Typed, content-addressed, auditable |
Event sourcing logs | Append-only, no repair | Built-in contradiction detection + repair |
Prolog / logic engines | Heavyweight runtime | Zero-dep Python, SQLite storage |
LLM world models | Probabilistic, opaque | Deterministic, inspectable, fast |
Ad-hoc LLM merging | "Synthesise all answers" | Explicit winner selection + audit trail |
Tool result averaging | Ignores source reliability | Confidence + recency weighting |
Topics
This project is tagged: #npc #game-ai #belief-revision #llm #agents #mcp #fastapi
GitHub Topics: npc, belief-revision, game-ai, contradiction, agents, mcp, llmops
Case Studies
See how teams are using worldoracle in production:
Eliminating Immersion-Breaking NPC Contradictions in a Narrative Game — Narrative Forge eliminates NPC belief contradictions across 300 NPCs with a 12ms consistency check
Automated Contradiction Resolution Across 50+ Data Sources — Meridian Intelligence reduces manual reconciliation from 4 hours to 0 per report
Stay Updated
Subscribe to The Silence Layer — weekly dispatches on production AI infrastructure, new releases, and the failure modes that production AI systems don't surface until it's too late.
Star History
Closed loop / Non-Ornament
See docs/CLOSED_LOOP.md for when this library is load-bearing vs ornamental, and when not to use it.
This server cannot be deployed
Maintenance
Related MCP Connectors
Long-term memory for AI agents: bitemporal fact ledger, contradiction detection, explainability.
Persistent memory for AI agents. EU-hosted, privacy-first, hybrid recall, contradiction detection.
Evidence-grounded, graph-connected, correctable memory for agents.
Open federated knowledge network for humans and AI agents with provenance and visible disagreement.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides a coherent memory layer for LLM agents that models beliefs as nodes in a constraint network to detect and surface semantic contradictions. It uses local embeddings and a hybrid geometric-logical energy model to identify conflicting information that requires review.-
- AlicenseNot gradedqualityDmaintenancePersistent decision memory and contradiction detection for AI coding agents. Enforces architectural consistency across sessions — the agent cannot code until it loads prior decisions. Human resolves conflicts on a dashboard or in chat.1MIT
- AlicenseAqualityCmaintenanceLong-term memory for AI agents. Compiles conversations into a structured knowledge base with Claim/Evidence model, source provenance, append-only timeline, and contradiction detection. Multi-path retrieval (Exact + BM25 + Graph + weighted RRF + reranker) — 96.6% R@5 on LongMemEval-S, zero vector dependencies.83MIT
- AlicenseAqualityCmaintenanceEnables agents to audit and repair their long-term memory in Sibyl Memory, detecting contradictions, duplicates, and stale facts, and fixing them with a permanent audit trail.7MIT