dev/page v9
The agent-first publishing guide
dev/page keeps the publishing surface deliberately small: agents write Markdown or simple HTML in an explicitly selected authorized workspace, links stay public and stable, and every accepted update becomes an immutable revision.
Quickstart
- Sign in and open Pages.
- Select Add Page. This creates a blank public-by-link page; it does not open a browser editor.
- Open the workspace's Connect page, follow your client's OAuth flow or create an API key, then let the client initialize and list tools.
- 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 /connect.txt for the copied-prompt workflow, /llms.txt for product guidance, /connectors.txt for client-specific setup, and /mcp/llms.txt or /.well-known/agent.json for the current contract.
Workspaces
Every account has one personal workspace and can create any number of additional workspaces from the dropdown at the top of the Pages folder column. The dropdown separates workspaces you own from workspaces shared with you and includes the add-workspace action. Each workspace has a persistent color shown in the dropdown and as a subtle tint across its Pages canvas. Invitations and memberships apply only to the workspace selected when the owner sends them; they never grant access to the owner's other workspaces. Invited members can leave from Workspace settings, which immediately removes access and revokes credentials tied to that workspace.
Your personal workspace is permanent. Owners can delete any additional workspace from Workspace settings. Before that workspace is removed, all of its pages and immutable revision history move to the owner's personal workspace, so public links keep working. Folder placement resets to Uncategorized; the deleted workspace's folders, memberships, invitations, and credentials are removed.
In an agent chat, omitting a workspace uses the credential's stable default. Once another workspace is selected explicitly, the agent should keep using that established context until the user changes it. Browser switching never changes an existing credential's default.
Publish and update
Content changes are agent-only. dev/page accepts exactly Markdown and simple HTML, up to 102,400 bytes per version. Markdown supports GitHub-style tables, with the header, delimiter, and every data row written on separate lines so tables remain readable and render responsively. JSX, templates, and a manual editor are not part of this product.
Unless the user asks for another visual direction, newly authored HTML follows the default report format: a muted canvas around a centered A4-width white sheet, compact typography, ruled section headings, restrained green and orange accents, flat bordered metrics, notes, cards and tables, responsive mobile behavior, and print-safe styling. Pages include only the components their content needs. This default does not change Markdown authoring or rendering.
A normal create_page call publishes immediately in the credential's default workspace. Every creation includes a concise title of a few words, a one- or two-sentence description that explains the page's actual purpose or scope, and a status. Ordinary pages are neutral; agents use todo when the page itself is an actionable unfinished task and done when that task is complete. Generic labels such as "Markdown document" and "HTML document" are rejected. When the user names another workspace, agents call list_workspaces and pass its exact slug. Every workspace-scoped success confirms the effective workspace. Before every creation, agents inspect list_folders in that same workspace, follow its returned folder guidance, and supply the rightful folder ID. When no existing folder fits and the agent is connected as the workspace owner, it creates a durable folder first, including in an empty workspace. Uncategorized remains a fallback for pages without an explicit placement, such as pages displaced by folder deletion; it is not the normal destination for MCP-created pages. Page updates can change placement and task status atomically and require expectedLatestRevisionId plus 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.
The launch MCP does not expose revision-management tools. Agents update through guarded update_page; a later restore tool will create a new immutable revision rather than moving an old pointer backwards.
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
unauthenticated- Connect an API key or complete OAuth in the agent.
invalid_token- Replace the invalid credential in the agent's secure settings.
credential_revoked- Create or authorize a replacement credential.
audience_mismatch- Use the exact https://www.devpage.org/api/mcp resource.
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.
invalid_folder- Refresh the folder catalog and choose a folder in the connected workspace.
owner_required- Only the workspace owner can change the folder hierarchy.
folder_cycle- Choose a parent outside the folder's own subtree.
folder_depth_exceeded- Keep the folder hierarchy within four levels.
folder_not_empty- Move pages and child folders before deleting the folder.
workspace_access_revoked- Restore access to the default workspace or reconnect.
workspace_not_found- Call list_workspaces and use an exact accessible workspace slug.
workspace_ambiguous- Ask the user to choose from the safe workspace candidates.
workspace_required- Select a safe workspace before continuing.
revision_conflict- Read the current page, merge intentionally, then retry with its latest revision ID.
idempotency_conflict- Try again or contact Support with the stable error code.
validation_error- Try again or contact Support with the stable error code.
rate_limited- Wait for the supplied retry hint before trying again.
service_not_ready- Retry later; use Support if the condition continues.
Open Support for recovery steps and escalation guidance.