# Changelog (https://systemhub.com/docs/changelog)

> Part of systemHUB Docs · Connect: Settings → AI Gateway in systemHUB · Auth: OAuth (scoping is workspace-level today — see Getting started) · MCP tools: 48 · Full corpus: https://systemhub.com/llms-full.txt

What changed in the systemHUB MCP and these docs, newest first. The [tool reference](/docs/tool-reference) is regenerated from the live schema snapshot on every deploy; this page records the deltas so a returning agent (or its human) can see what's new at a glance.

## 2026-08-08

- **Tool renamed: `generate_document_share_link` → `get_document_share_link`.** The rename happened on the live MCP after our last schema pull, so the docs were pointing agents at a tool that no longer exists. Caught in technical review before the public flip. Snapshot re-pulled from the live endpoint and all references updated. (Earlier changelog entries keep the old name — they're a record of what was true at the time.)
- Reminder for maintainers: **the schema snapshot goes stale.** Re-pull from the live MCP endpoint as part of any deploy that matters, not just when tools are added.

## 2026-08-07 (later)

- **[Tool reference](/docs/tool-reference) now documents response shapes.** Every one of the 48 tools gains a generated **Returns** table with field names, types and one level of nesting — so `state` vs `documentState` and `reviewDate` vs `review_date` are answerable from the page instead of by calling each tool and reverse-engineering the response. Generated from the live schemas like the rest of the page, so it can't drift.
- **Corrected the review-debt recipe** on [Organise the library](/docs/guides/organising-content) and [Audit access](/docs/guides/auditing-access). Both said to find overdue documents by scanning for `state: 2` (RED). RED doesn't set itself, so an untended library reports zero debt. Use **`reviewDate`** (on every response) — anything in the past, plus anything with no review date set.
- **[Sharing & links](/docs/concepts/sharing-and-links):** noted that opening a share link rewrites to a `/guest/` route carrying the alias, and that **the section segment isn't validated** — a system's UUID and code under `/policies/` still renders the system, so don't infer section from the URL.

## 2026-08-07

**Client compatibility documented honestly, after an independent cross-platform test.** [Getting started](/docs/getting-started) previously implied any MCP client would work, with ChatGPT as a "same pattern" aside. That overclaimed:

- **Google Gemini CLI is verified working** — 48 tools over OAuth against a production workspace, with the exact `gemini mcp add` command now documented. Retrieval behaviour was identical to Claude's, confirming the server behaves the same regardless of client.
- **Concurrent clients verified** — Claude and Gemini CLI held live sessions on the same user simultaneously. One token can serve several clients (generating a *new* token still disconnects all of your own at once).
- **But several clients can't connect at all:** ChatGPT needs a paid tier with developer mode, and the Gemini **web app** has no custom-server option whatsoever (Gemini Enterprise or the CLI only). A new compatibility table states which clients work, and a rollout warning flags that free-tier users may have no route in.

## 2026-08-05

From a second-round external audit (Jim Carlin), both on [Sharing & links](/docs/concepts/sharing-and-links):

- **The human-readable share link is not agent-fetchable.** It's a client-rendered view, so a plain HTTP request returns the JavaScript shell rather than the document — and the 404 for a wrong share code is *also* client-side, so status codes prove nothing. Stated explicitly now, along with the consequence: with the api-host form still 403ing, **there is currently no share URL an external agent can fetch without a browser**. Share links are for people; programs should use MCP.
- **Share codes are not unique per document.** Duplicating a document copies its share code, so a copy and its original share one code (reproduced across two document pairs). Index on document UUID, not share code. Two code formats are also in circulation, so don't validate by shape. Logged with the product team.

## 2026-08-04

**Corrections from a second external field audit** (all 15 pages read and cross-checked against the live schemas and a 30-call pipeline run — thank you, Jim Carlin):

- **NEW — the human-readable share link is documented.** `https://{alias}.systemhub.com/systems/{uuid}/{shareCode}` **renders the published document in a browser with no login** (verified 4 Aug in a clean session; a wrong share code 404s). [Sharing & links](/docs/concepts/sharing-and-links) previously said no human app URL existed via the API — that was wrong, and it was steering agents away from a working answer. This is also the practical workaround for the `api.systemhub.com` 403.
- **Fixed a broken example.** [Organise the library](/docs/guides/organising-content) showed `{"parent": "root"}` on the folder-create tools. `parent` is typed as a UUID there and `"root"` is rejected — omit the field for top level. (`"root"` is valid on `get_folder_tree`, which is where it was copied from.)
- **Corrected the publish model.** [Document lifecycle](/docs/concepts/document-lifecycle) implied edits need an explicit publish. They don't — `edit_*` auto-publishes, **and so do metadata writes**: `add_document_tags` and the template/media/attachment tools default to `publish: true`. Tagging a document publishes it, which defeats a `publish: false` created earlier. There is no quiet-editing mode by default.
- **[Teach your AI](/docs/teach-your-ai)** no longer writes an ambiguous state fact into permanent agent memory ("drafts are ORANGE" collided with state 0 = GREY/draft and with `publish: false`); it now names all three senses.
- **Corrected the 126KB advice.** "Write in sections" made it worse — `edit_*` replaces the whole content field, so incremental writing resends everything each time. Split across documents instead.
- Also: `get_document_activity_log` added to the audit tool list, a warning that `manage_document_members` `update` **replaces** roles rather than merging, a pagination warning, and a corrected tool count on [Audit access](/docs/guides/auditing-access).

## 2026-07-31 (later)

- **[Getting started](/docs/getting-started) now carries a field-tested team-connection procedure**, verified live by a SYSTEMologist agency connecting a second team member: each person generates their own token from their own login, then connects through the *existing* connector entry and approves as themselves. Added troubleshooting rows for *"No active agent token found"* and *"a server with this URL already exists"*.
- **Correction:** generating a token does **not** disconnect colleagues. Tokens are per-person — generating revokes only your own previous token and your own sessions. Earlier wording here implied it was account-wide; that was wrong, and it was disproven in a live test (one member generated a token while another stayed connected throughout).

## 2026-07-31

- **Correction — MCP session scoping is workspace-level, not per-user.** These docs previously stated that a connection is scoped to the connecting user's visibility. That is **not** how the current OAuth flow behaves: a session is bound to the identity on the workspace's **most recently generated AI Gateway token**, regardless of who connects. On a multi-user workspace, agents can therefore resolve to the same identity — in either direction (a restricted user inheriting broader visibility, or an admin being scoped down). The claim has been corrected on Getting started, Errors & limits, Teach your AI and llms.txt. A fix binding each connection to the person connecting is logged as a critical item with the product team; these docs will be updated when it ships.
- Practical guidance until then: treat MCP access as **workspace-level**. Connect agents only for people you're comfortable seeing everything the token generator can see, and don't rely on MCP session identity for audit attribution.

## 2026-07-29

- **Docs now live at systemhub.com/docs** (review mode — noindex until final technical sign-off). llms.txt and llms-full.txt are served at the systemhub.com root.
- **Getting started now carries the confirmed connection details from the product UI:** server URL `https://mcp.systemhub.com/mcp`, OAuth Client ID = company alias, token shown once with a **180-day lifetime** (rotation reminder at day 144), and the gotcha that generating a new token immediately revokes the old one and disconnects connected agents (also added to troubleshooting).

## 2026-07-28

**Field-tested by a beta agency** (25-call end-to-end SOP pipeline). Two issues confirmed and documented while fixes are tracked with the product team:

- **HTML-escaped `content` is stored silently** and publishes as visible tag soup — warning added to [Authoring content](/docs/concepts/authoring-content) and the [errors table](/docs/concepts/errors-and-limits): send raw HTML, read back after writing.
- **Share links currently fail external fetch** (403 "Company not found") — [Sharing & links](/docs/concepts/sharing-and-links) updated with the known issue; don't promise external access until the fix lands.
- Also noted on Sharing & links: **no human app URL exists in any API response** today (`appUrl` is a requested enhancement).

## 2026-07-27

**Docs: machine-affordance upgrades** (patterns adopted from an audit of Outstand's docs — the headless reference standard):

- **`/llms-full.txt`** — the entire docs corpus in one fetch, generated with every build. Linked from llms.txt.
- **Canonical metadata on every raw page** — each `.md` now carries its canonical URL and a connect/auth/tool-count line, so a page quoted into an agent's context keeps its address.
- **llms.txt hardened** — dated, with a "Canonical facts" block (authoritative over stale third-party write-ups) and a "What the MCP does not do" list.
- **Getting started expanded** — per-client connection steps (Claude, ChatGPT, any MCP client) and a six-symptom troubleshooting table.
- **[Document lifecycle](/docs/concepts/document-lifecycle)** gained a "How systemHUB behaves over time" table — the create/publish/edit/editor-filter sequence an agent should reason with.
- **[Teach your AI](/docs/teach-your-ai)** — new page: the first-session prompt and the standing-context briefing an agent saves (CLAUDE.md or equivalent) so every future session can drive systemHUB without re-learning.

## 2026-07-23

**MCP: 5 new tools** (snapshot 43 → 48):

- `generate_document_share_link` — public, no-login share URLs that serve the published document as machine-readable JSON. See the new [Sharing & links](/docs/concepts/sharing-and-links) page.
- `get_document_activity_log` — per-document audit trail: who created it, who last edited it, full event feed (optionally including view events).
- `manage_document_members` — **write-side document access**: assign/remove members and roles on a document.
- `list_company_members` / `list_roles` — resolve people and roles by name to UUIDs (companions to `manage_document_members`).

**Known-limits changes** these tools unlock:

- ~~"No write-side user management"~~ → narrowed: document-level member/role **assignment is now writable**. Seat provisioning (inviting people, allocating licences) remains app-UI only.
- ~~"No who-viewed-what telemetry"~~ → narrowed: **per-document activity (including views) is now readable** via the activity log. Workspace-wide usage analytics remain unavailable.

**Docs:** added [Sharing & links](/docs/concepts/sharing-and-links) and this changelog; system anatomy in [Authoring content](/docs/concepts/authoring-content) extended to Trigger → Steps → Definition of done.

## 2026-07-22

- Initial public preview: getting started (with real AI Gateway connection steps), [quick wins](/docs/quick-wins) (8 verified prompts), four concept pages, three worked guides, and the full generated tool reference (43 tools).
- Every page dual-served as raw markdown (`.md`), curated `llms.txt` published.
