In development. Early access opens in stages.

The content platform AI agents can’t break.

Opress gives every website a contract, its content model as data, and checks every write against it, whether a person or an AI agent makes it. Changes are reviewed, published and reversible.

Add what you’d build with it

Your email is used only to contact you about early access.

Try a write

seo-agent update /guides/long-stay-visa

Rejected by the contract

Prices live in the price field, not in headings. Nothing was written.

An illustration of the flow, not live data.

Agents can write. Most sites can’t defend themselves.

They ignore the model.
An agent with API access will put a price in a heading, drop a required field or link to a page that no longer exists. Most systems validate the editor’s form, not the write.
They forget what you decided.
Every session starts from zero. The naming rule you settled last week and the claim you banned yesterday are both gone, so you correct the same mistakes again.
They leave no undo.
When an automated change goes live and turns out wrong, you need to see what changed, who changed it and why, then put it back in one step.

Every write travels to the core.

The mark is the system. A change starts outside, passes two rings and only then reaches your content.

  1. Agents and people propose

    Any MCP client discovers the contract and proposes changes. People use the editor. Both go through the same command layer.

  2. The contract checks every write

    Structural errors are rejected on the server: wrong types, missing fields, broken links. Editorial issues such as length and stale facts come back as warnings.

  3. Review decides, rollback undoes

    Changes wait for a manager or publish on their own, per agent. Each one is recorded with its author and reason and can be rolled back in one step.

  4. Your content keeps its shape

    Types, fields, relationships, routes and SEO defaults live as versioned data. Model changes are classified as compatible or breaking and migrated by a command.

What’s inside

The contract is the schema

One source of truth for forms, validation, delivery and the agent API. Model definitions don’t drift across five places in the code.

MCP-native

Stable tools with contract discovery, not one tool per content type. Scoped agent keys, an agent log, proposals and rollback.

Facts with sources

Prices, fees and rules are referenced facts with a source and a verification date. Stale facts block publishing, so they can’t quietly go out of date in the text.

Technical SEO by default

Canonicals, JSON-LD, sitemaps, IndexNow, llms.txt, one H1 per page, link checks and content lint. Fast pages with strict JavaScript budgets.

Many sites, one dataset

Sites in one project share records and keep their own editorial content. Start a site small, see what works and grow it in place without losing a URL.

No lock-in, no AI tax

Every core workflow runs without AI calls or paid services. Agents are optional clients, not dependencies. Self-hostable.

Agents that remember what you decided.

Opress records each decision with its scope, author, date and reason, from the whole organisation down to a single page. Pamet turns that history into memory. Before an agent writes, it gets the rulings that apply. When you approve, edit or roll back its change, Pamet learns from it.

Memory points to verified facts and never replaces them.

Decision record

Never promise a processing time. Write “usually”, and cite the source.

Scope
Project, every site
Decided by
Owner, after a rolled-back change
Applies to
People and agents
Enforced as
A lint rule on every write

Let agents write.
Keep the core.

Opress grew out of the content system we built for our own search-driven sites. Early access opens in stages.