dev/page v2
The agent-first publishing guide
dev/page keeps the publishing surface deliberately small: agents write Markdown or simple HTML, pages are placed automatically, links stay public and stable, and every accepted update becomes an immutable version.
Quickstart
- Sign in and open Pages.
- Select New Page. This creates a blank public-by-link page; it does not open a browser editor.
- Open Connect, follow your client's OAuth flow or create a scoped API key, then verify with
get_capabilities. - Ask the agent to publish Markdown or simple HTML through dev/page MCP. It should return the page URL.
- Open that URL and find the page again in Pages.
Connect an agent
Connect Codex/ChatGPT, Claude, Cursor, a Generic Streamable HTTP client, or MCP Inspector directly to dev/page. The exact configuration and credential lifecycle live in Connect.
- Put keys only in an agent's secure connection setting or configuration file.
- Never paste a bearer key, refresh token, or authorization code into a prompt, a URL, or page content.
- Use /llms.txt, /mcp/llms.txt, or /.well-known/agent.json for the current contract.
Publish and update
Content changes are agent-only. dev/page accepts exactly Markdown and simple HTML, up to 100,000 bytes per version. JSX, templates, and a manual editor are not part of this product.
A normal create_page call stores a durable summary and chooses a sensible folder without requiring the agent to fetch the workspace. Explicit user placement becomes a manual lock. Page updates require expectedCurrentVersion, expectedContentHash, and an idempotency key.
Access and discoverability
| Behavior | What it means |
|---|---|
| Public by link | Anyone with the exact URL can read the rendered page without an account. |
| Always online | The public URL stays live while a different version becomes active. |
| No public listing | dev/page does not create a public page directory, feed, or sitemap listing for your page. |
| Noindex by default | dev/page asks search engines not to index user pages. This is not an access-control guarantee. |
Opaque page IDs and noindex reduce casual discovery. They do not make a page private. Do not publish confidential content.
Versions
Every accepted update appends an immutable version. The URL remains stable and one version is active. In Pages, choose Manage, then Versions. Select a version to preview it, move through the version rail, or make it active.
Agents use list_versions and guarded activate_version. Making a version active moves only the active pointer; it does not delete a later version. If a conflict occurs, refresh the authoritative version list, merge intentionally, then retry.
Security
- Treat every page as public content in this MVP.
- Keep credentials out of page content, prompts, and support screenshots.
- Share stable error codes and redacted diagnostics with Support; never include the credential itself.
- dev/page verifies your identity before its server reads or changes an account page. Database credentials never reach the browser.
Troubleshooting
authentication_required- Connect an API Key or complete OAuth in the agent.
invalid_credentials- Replace the expired or revoked credential in the agent's secure settings.
insufficient_scope- Try again or contact Support with the stable error code.
page_not_found- Confirm the opaque page ID belongs to the signed-in account.
version_not_found- Try again or contact Support with the stable error code.
version_conflict- Refresh the current version, merge intentionally, then retry with the new guard.
content_conflict- Try again or contact Support with the stable error code.
organization_conflict- Try again or contact Support with the stable error code.
idempotency_in_progress- Try again or contact Support with the stable error code.
rate_limited- Wait for the supplied retry hint before trying again.
service_unavailable- Retry later; use Support if the condition continues.
Open Support for recovery steps and escalation guidance.