Master manifest (/mcp-manifest.json)
The master manifest is the entry point for all agent interactions. It lists every page and every collection registered in your OlonJS site.
string
required
The manifest format version. Currently
"1.0.0".string
required
Always
"olonjs-mcp-manifest-index". Agents can use this field to confirm they are reading an OlonJS master manifest rather than a per-page manifest or some other JSON document.string
required
ISO 8601 timestamp recording when this manifest was last produced by a build. Use this value to determine whether the manifest is stale relative to a cached copy.
array
required
An ordered array of page entry objects, one for each page in the site. See Page entry fields for the shape of each object.
array
required
An array of collection entry objects, one for each registered collection (e.g.
posts, tags). Each entry contains:source— the collection name as a stringdataHref— path to the raw JSON data file for the collectioncontractHref— path to the JSON Schema that describes the collection record shape
Page entry fields
Each object insidepages[] describes a single page in your site:
string
required
The URL slug that identifies the page. Static pages use a simple string (e.g.
"about"). Dynamic collection pages use bracket notation (e.g. "posts/[slug]"), and resolved instances list their concrete slug (e.g. "posts/the-boring-stack").string
required
The page’s
<title> value as set in the page data. Agents can display this to users or use it for indexing without fetching the full page manifest.string
required
The page’s meta description. Provides a one-sentence summary of the page’s content or purpose.
string
required
Path to the per-page manifest JSON file (e.g.
"/mcp-manifests/about.json"). Fetch this URL to get the full content bundle, section instances, transport spec, and tools for this page.string
required
Path to the JSON Schema contract for this page (e.g.
"/schemas/about.schema.json"). Fetch this URL to get the typed schema that describes every field and section on the page.array
required
An ordered list of section type strings that appear on this page (e.g.
["header", "footer", "page-hero", "content-block"]). Agents can use this to understand page structure without fetching the full manifest.Per-page manifest (/mcp-manifests/[slug].json)
Each page in your site has its own manifest at /mcp-manifests/[slug].json. The per-page manifest provides the complete content and structural description needed to read, validate, or update a page programmatically.
Here is a real example from the Inkwell Journal about page:
/mcp-manifests/about.json
JSON Schema contracts (/schemas/[slug].schema.json)
Every page has a JSON Schema contract at /schemas/[slug].schema.json. The schema precisely describes the data shape of the entire page bundle — every section, every field, and every type. Agents can use these schemas to:
- Validate content before submitting an update via the
update-sectiontool - Generate page content that matches the expected structure
- Understand which fields are required, optional, or constrained
/schemas/collections/[collection].schema.json.
Collection endpoints
Raw collection data is available as static JSON files that agents can read directly:
These files contain the full record set for each collection — the same data used to render collection pages at build time. They are useful for agents that need to enumerate all posts, look up a tag by key, or build a cross-collection relation map without navigating individual page manifests.
Example: reading a page
The following sequence shows how an agent reads theabout page from scratch using only public endpoints:
Step 1 — Discover pages
pages[] array to find the entry where slug === "about". Note its manifestHref value: /mcp-manifests/about.json.
Step 2 — Fetch the per-page manifest
sectionInstances[] to understand the page structure. Each instance has an id, type, scope, and label.
Step 3 — Fetch the JSON Schema contract
update-section tool described in the per-page manifest’s tools[] array. Call save once all updates are staged..png?fit=max&auto=format&n=AyzhRn9-CO-nDNc4&q=85&s=63c78e2325701880237e6cbce1399c2a)
.png?fit=max&auto=format&n=AyzhRn9-CO-nDNc4&q=85&s=0db283df6e4d31745079d6d03fd029ed)