
We build the protocol.You build worlds.
AI-native engine for generating world states and events — where outcomes are produced within explicit constraints and recorded as persistent world states.
Why this exists
AI can generate infinite possibilities.
Narrative Protocol turns possibility into progression.

It understands the current world

Determines what can happen next

Constrains outcomes with rules

And advances the world forward
How it works
A clear flow from game logic to AI generation to persistent history.
Game Runtime
The game runs on its own engine — on-chain or off-chain.
Your SystemContext Observation
Observes world state, events, and signals.
AI Event Generation
Generates structured, verifiable events.
Verification
All data is verified and anchored for audit.
Game Consumes
Your game decides how to use the events.
Your SystemUse events however you need
Narrative Protocol outputs structured events. How you integrate them is entirely up to you.
Structured Output
{
"execution": {
"input": {
"date": "2026-02-16T13:16:42.495Z"
},
"stateChanges": {
"atmosphere:main": {
"solar_flux": 0.25,
"debris_index": 0.47,
"atmospheric_density": 0.74,
"ionization_potential": 0.5,
"magnetic_instability": 0.73,
"fog_persistence_probability": 0.68
},
"latest_weather:main": {
"date": "2026-02-16T13:16:42.495Z",
"weather": "magnetic_surge"
}
},
"result": {
"date": "2026-02-16T13:16:42.495Z",
"weather": "magnetic_surge",
"atm_analysis": "["Magnetic undulations intensify, rippling through the ionized veil and tugging at stray particles.","The waning solar influx casts cooler shadows, while lingering debris settles into a thin, shimmering haze.","A subtle electric tension builds, hinting at a forthcoming surge as the planet's field realigns."]",
"cur_analysis": "["The sky flickers with erratic arcs of light, a silent storm of magnetic energy.","Atmospheric currents quiver as charged particles cascade, distorting the horizon.","Sounds crackle faintly, and instruments register spikes in field strength, marking a brief but potent magnetic surge."]"
},
"executedAt": "2026-02-16T13:17:01.312Z",
"executedBy": 746628
},
"event": {
"id": 18,
"name": "resolve_weather",
"description": "Resolve the official weather for the given date. Use only the provided world state."
},
"deployment": {
"id": 17,
"address": "0x451d8dc0c5a15745e1d3ed38aafeb38b9fe9c602",
"name": "Season 1",
"targetChain": "near",
"world": {
"id": 28,
"address": "0x1f5476299243720e897348fbed84c50fcdebc403",
"name": "Planet X"
}
},
"id": 7749,
"eventVersion": {
"id": 42,
"version": 17,
"inputSchema": {
"date": "string"
},
"resultSchema": {
"date": "string",
"weather": "string",
"atm_analysis": "string",
"cur_analysis": "string"
},
"stateChangeSchema": {
"atmosphere": "partial",
"latest_weather": "full"
},
"publishedAt": "2026-02-12T14:24:39.339Z"
},
"llm": {
"model": "openai/gpt-oss-120b",
"request": "You are a world-state simulation engine.
Your task is to compute the next world state update caused by an event.
# World definition
Title: Planet X
Description: A newly discovered planet with unstable atmospheric systems.
Tags: sci-fi, simulation, weather
Seed prompt: This world obeys internal physical logic. Outcomes must be explainable using existing world state.
# Entity schemas
atmosphere:
- magnetic_instability: float (min: 0, max: 1)
- solar_flux: float (min: 0, max: 1)
- atmospheric_density: float (min: 0, max: 1)
- debris_index: float (min: 0, max: 1)
- ionization_potential: float (min: 0, max: 1)
- fog_persistence_probability: float (min: 0, max: 1)
latest_weather:
- date: string
- weather: string (enum: [storm, clear, fog, ash_rain, aurora, dust_veil, ice_crystal, magnetic_surge])
# Current state
[
{
"schema": "atmosphere",
"id": "main",
"solar_flux": 0.32,
"atm_analysis": "[\"The mist thickens as magnetic ripples stir the dense fog, coaxing it into a velvety shroud that cloaks the horizon.\",\"Ionized particles wane under reduced solar flux, while lingering debris settles, adding a gritty texture to the lingering cloud.\",\"A subtle cooling settles, allowing the fog's persistence to dominate, muting colors and muffling distant sounds.\"]",
"debris_index": 0.53,
"atmospheric_density": 0.62,
"ionization_potential": 0.65,
"magnetic_instability": 0.63,
"fog_persistence_probability": 0.76
},
{
"schema": "latest_weather",
"id": "main",
"date": "2026-02-16T13:15:18.310Z",
"weather": "fog",
"cur_analysis": "[\"A blanket of fog rolls across the plains, reducing visibility and swallowing the landscape in muted gray.\",\"Gentle breezes carry the damp air, whispering through the haze and dampening any residual auroral glow.\",\"Ambient temperature slips lower, and sounds become muffled as the dense fog holds the planet in a quiet, opaque veil.\"]"
}
]
# Event
name: resolve_weather
description: Resolve the official weather for the given date. Use only the provided world state.
behavior: Resolve the official weather for the given date. Use only the provided world state.
behavior: 50/50 coin toss: DETERMINISTIC (resolve from current values) or DISRUPTION (apply 1-3 sudden anomalies shifting values ±0.2-0.4 first). Drift all fields ±0.05-0.25 randomly. Decay to lower values if value is too high. Determine weather from the dominant atmospheric combination—no single attribute should always win. Avoid repeating previous weather unless atmosphere strongly demands it.atm_analysis is a stringified array with 3 strings, each ana
lyzes the atmosphere after state change in a non-detailed scifi way. cur_analysis is a stringified array with 3 strings, each analyzes the weather result.
# Input
{
"date": "2026-02-16T13:16:42.495Z"
}
# Expected output format
State change include:
- atmosphere
- latest_weather
Result schema: {"date":"string","weather":"string","atm_analysis":"string","cur_analysis":"string"}
Respond with a JSON object containing:
1. "stateChanges": an object where keys are "<schemaName>:<instanceId>" and values are the state updates. Values MUST conform to the entity schema attribute definitions and constraints.
2. "result": the result of this event. If values defined in entity schema attribute, it MUST conform to the constraints.
Output ONLY valid JSON, nothing else.",
"response": "{
"stateChanges": {
"atmosphere:main": {
"solar_flux": 0.25,
"debris_index": 0.47,
"atmospheric_density": 0.74,
"ionization_potential": 0.5,
"magnetic_instability": 0.73,
"fog_persistence_probability": 0.68,
"atm_analysis": "[\"Magnetic undulations intensify, rippling through the ionized veil and tugging at stray particles.\",\"The waning solar influx casts cooler shadows, while lingering debris settles into a thin, shimmering haze.\",\"A subtle electric tension builds, hinting at a forthcoming surge as the planet's field realigns.\"]"
},
"latest_weather:main": {
"date": "2026-02-16T13:16:42.495Z",
"weather": "magnetic_surge",
"cur_analysis": "[\"The sky flickers with erratic arcs of light, a silent storm of magnetic energy.\",\"Atmospheric currents quiver as charged particles cascade, distorting the horizon.\",\"Sounds crackle faintly, and instruments register spikes in field strength, marking a brief but potent magnetic surge.\"]"
}
},
"result": {
"date": "2026-02-16T13:16:42.495Z",
"weather": "magnetic_surge",
"atm_analysis": "[\"Magnetic undulations intensify, rippling through the ionized veil and tugging at stray particles.\",\"The waning solar influx casts cooler shadows, while lingering debris settles into a thin, shimmering haze.\",\"A subtle electric tension builds, hinting at a forthcoming surge as the planet's field realigns.\"]",
"cur_analysis": "[\"The sky flickers with erratic arcs of light, a silent storm of magnetic energy.\",\"Atmospheric currents quiver as charged particles cascade, distorting the horizon.\",\"Sounds crackle faintly, and instruments register spikes in field strength, marking a brief but potent magnetic surge.\"]"
}
}"
},
"attestation": {
"signature": "0x0e5428e4193b80e825aaf1b06fe8779a8998527c44a461c4652f560bb3de56aa5c703e66d105bf346769759d0d21250122d7982dd0b2b8958babccff0ff92f371c",
"signingAddress": "0xbBC409e6b529817D257aD61D5738D8e3a39b5791",
"signingAlgo": "ecdsa",
"text": "4467e31242895b65a5988f45111d155a4bf06ff35e69184b545d33e3e22fa871:7a57ab24e5df72bd0fe2b736faacd8d54e78e31b3639f330746827dd44f5f143"
},
"onChain": {
"solana": null,
"near": {
"txHash": "Hi6RX6HYighawmo3fD4q6bnTpQ51yDtigDaJDGaUfFAy",
"receiptId": "7xESJX8VrVR1YGE4PUGKzhPsNjoVLVtkRdjG2dNoLWea",
"explorerUrl": "https://explorer.near.org/transactions/Hi6RX6HYighawmo3fD4q6bnTpQ51yDtigDaJDGaUfFAy"
}
}
}Integration Options
As Modifiers
Alter stats, probabilities, or entity behaviors based on event data.
As Conditions
Use events as gates or triggers for your game logic.
As Simulations
Run scenarios or predict outcomes before committing actions.
As Direct Outcomes
Execute event results directly as final game actions.
What this enables
Build experiences that weren't possible before.






