This is the MCP / AI reference for systemHUB — written for AI agents and developers. If you are a person looking for how-to help, use help.systemhub.com instead.

Document lifecycle: states, Save vs Publish

Every systemHUB document — whether a System, Policy, or Training — moves through a defined lifecycle. An AI agent must understand this before authoring, or it will create content nobody can see, or overwrite an approved document.

Document states

A document’s state is an integer with a fixed meaning and colour:

stateColourMeaning
0GREYDraft — being written, not yet reviewed
1ORANGENeeds review — drafted, awaiting approval
2REDOverdue — past its review date
3GREENApproved — current, reviewed, live
4PURPLEArchived — retired, kept for reference

These values are returned on every tree node, search result, and get_*_details call, and are accepted by the state parameter on create/edit tools.

Save vs Publish (the distinction that matters most)

Save records your changes. Publish is what your team sees — until you publish, assigned members keep viewing the last published version.

For agents, the practical rules are:

⚠️ The practical consequence: there is no “work quietly then release” mode by default. Any write to a live document — including one that only touches metadata — is visible to the whole team immediately. Before editing an approved document, be sure the user wants the change live now.

Undocumented: whether an MCP publish fires the same member notifications a publish from the app does. Assume it might. An agent doing routine maintenance across many documents could either notify the whole company repeatedly, or change things silently — and we can’t yet tell you which. Batch related edits rather than publishing repeatedly, and check with the account owner before a bulk pass.

Canonical wording: the summary line above is the current agreed phrasing; the app empty-state copy is being finalised from the internal content audit and will be reconciled here so the docs and the product never disagree.

View vs Edit

Access to a document is not all-or-nothing:

What a given person can do is a function of their role and any direct assignment on the document. See Roles & seats. An agent connected with a user’s token inherits exactly that user’s view/edit scope.

How systemHUB behaves over time (the model to reason with)

The sequence an agent should hold in its head:

You doWhat happensWhen
create_system with contentDocument saved AND published — assigned members can see itImmediately
create_system with publish: falseDocument saved as a hidden draftVisible to no one until published
edit_systemContent updated at the API layer, stored verbatimImmediately; a new published version only when you cut one
publish_systemA named version released to assigned membersImmediately
A human opens the doc in the editor and savesThe editor filters the stored HTML to its supported feature setFirst human save — this is when out-of-contract formatting silently changes

That last row is the one that surprises agents: the API stores whatever HTML you send, but the editor is the filter, applied on the next human save — which may be days later. Author within the supported set and the document is stable forever; author outside it and the document changes under the owner’s feet the first time they touch it.

Versions, and what you can’t get back

Each publish creates a version, and that history is now readable and reversible from the MCP. list_document_versions returns the published snapshots newest first (versionId, title, createdAt, no bodies) and restore_document_version rolls one back onto the live document by versionId. Restore by id, never by date or title. get_*_details also exposes updatedAt, versionId, versionTitle and versionCreatedAt, so an agent can see when a document last changed and which snapshot is current.

✅ What a restore actually brings back (tested, 25 Oct 2026). publish_* describes a version as capturing content, description, notes, tags, videos, templates and attachments. Tested on production 25 Oct 2026 on a throwaway document: body, Overview, note and tags all came back, including removing a tag that had been added after the snapshot. reviewDate did not come back and kept its current value, which matches the tool’s own list (it never claims to restore a review date). Videos, templates and attachments were not part of that test.

This corrects what this page said until today. An independent test of the older UI restore path on 9 Aug 2026 reverted only the body, and we published that caveat for two and a half months without re-testing it after restore_document_version shipped. Cutting a named version before a rewrite is a genuine safety net for content, Overview, notes and tags. Set the review date again by hand afterwards.

Two practical consequences:

Sign-off does not reset when content changes. If people have agreed to a document (see Roles & seats) and its content is then rewritten, those agreements remain recorded against the document, not against the text they actually read. Resetting the agreement register is a separate, deliberate admin action in the app. For a policy anyone has signed, treat a content change as something that needs a human decision about re-acknowledgement — not just a publish.

Master templates

Some content is a master template — read-only reference content supplied from the master workspace (isMasterTemplate: true). It appears in trees and search so it can be browsed and copied, but it cannot be edited, moved, published, or deleted, and get_*_details returns 404 for it. Treat master templates as immutable.

Next: Roles & seats →