Developer documentation

Integrate the envelope.
Declare the rest.

Start with narrative-neutral NCP Core, declare every profile and extension, preserve unknown payloads, and name the exact conformance layer you checked.

1. Build a Core document.

Identify the document and story. Add provenance, authorship, Storytelling Moments, contributions, and external references only when needed.

{
  "ncp_version": "0.0.0-development",
  "document": {
    "id": "ncp_document_001",
    "created_at": "2026-08-15T12:00:00Z"
  },
  "story": { "id": "story_001" },
  "profiles": [],
  "extensions": [],
  "payloads": {}
}

2. Declare profiles.

Each profile declaration identifies its namespace, version, and schema. A Core processor can preserve the matching payload without interpreting it.

"profiles": [{
  "namespace": "example-profile:",
  "profile_version": "1.0.0",
  "schema": "https://example.org/ncp/profile-schema.json"
}]

Integration rules.

Keep Core neutral

Place narrative-system and workflow-specific information in declared profiles or extensions.

Respect namespaces

Use a separately named namespace and follow the versioning rules published by its owner.

Preserve unknown data

Round-trip supplied payloads even when an application does not interpret their contents.

Name validation

Report Core schema checks separately from profile-specific checks.

3. Add extensions.

Interactive, production, archival, and tool-specific data can travel under independently governed extension namespaces.

example-interactive:

studio-production:

archive-notes:

tool-vendor:

4. Bind to workflows.

A binding describes how another standard or workflow embeds a complete NCP document or references one through a resolvable URI.

Keep the other system's native objects in that system. Use NCP for the narrative context that must remain portable across the boundary.

5. Validate structure.

Use the open schema tools for syntax and shape. A successful result covers only the schemas actually evaluated.

$ npm install
$ npm run validate:schema
$ npm run validate:file -- ./document.ncp.json

Schema-valid does not mean semantically valid.

Reference documents.