Tutorial: publish safely with ArchyPress MCP permissions and verification
Oct 07, 2026 • ArchyPress

A connected assistant should be able to help with publishing without making the release decision for you. This tutorial turns that principle into a repeatable workflow with concrete tool checks.
Use it after configuring ChatGPT, Copilot, Codex or another supported MCP client. The same editorial checks apply whether the connection uses OAuth or a publisher key.

1. Identify the channel and workspace
Call archy_blog_whoami before creating anything. Confirm the publisher channel, workspace and roles. A valid credential for the wrong workspace is not a successful setup for your task.
Next call archy_blog_list_posts with limit 1. This checks the content API beyond the authentication layer. Stop if it returns an error instead of inspecting or editing unrelated content.
Verify my ArchyPress publisher and workspace, then list one post. Do not change any content until I confirm the identity.
2. Understand the two permission gates
A publisher channel owns the author identity and backend roles. An OAuth app connection references that channel and carries its granted scopes. It is a revocable access path, not a new author.

publisher:read permits hosted reads.
publisher:write is required for hosted writes.
Draft creation requires a writer/admin publisher role.
Direct publication requires the publisher's admin role.
Do not ask for admin merely to fix a read failure. Do not assume a write scope overrides a channel role. Diagnose which gate rejected the operation and adjust only the permission your workflow needs.
If a client omits scopes, the pending compatibility fix defaults to read-only. Reconnect with explicit write scope when you intentionally move from reading to creating content.
3. Create one purposeful draft
Use archy_blog_create_draft for content you compose, or an available AI-draft tool for a topic-driven starting point. Give the post a distinctive title and record the returned ID.
Create a draft titled “Getting started with our release.” Explain who it helps, one working example and the limitations. Return its ID and read it back. Do not publish.
For structured content, use archy_blog_compose_doc and the body helpers instead of inventing arbitrary document nodes. Retrieve the saved post to confirm that the intended body persisted.
If creation times out, inspect the post list before retrying. A failed acknowledgement does not prove the first create operation made no change. Subsequent revisions should target the known post ID.
4. Review the artifact the reader will see
Verify product claims and any version-sensitive commands.
Open every link; readers should not need access to a private repository.
Check the title, excerpt, author, categories and URL slug.
Add useful media with meaningful alt text.
Inspect the saved body, not only the assistant's chat summary.
A feature image sets context. An inline diagram should explain a real relationship or sequence. Do not present invented interface mockups as product screenshots, and do not let decorative media replace essential steps.
Preview before publication where available. Confirm that code examples contain placeholders, not real credentials. Check that internal workspace information has not slipped into a public tutorial.
5. Make publication an explicit decision
Publish the reviewed article with ID <post-id>. Do not publish any other post. Then read it back and return its published status and public URL.
The approval should identify the exact article, not authorize a broad batch of writes. Keep tool approval controls enabled, and inspect any proposed payload that differs from the reviewed draft.
After archy_blog_publish succeeds, call archy_blog_get_post. Confirm the status is published. Then open the public URL and inspect the title, body, images and links.
MCP HTTP 200 can contain a tool error. Read isError and the payload. The database's published state and the rendered public page are complementary checks, not interchangeable proof.
6. Diagnose errors at the correct boundary
A 401 at the MCP endpoint can mean missing, expired or revoked credentials. Reconnect or rotate the intended credential. Do not reuse an authorization callback from an earlier login attempt.
A 403 can mean that scopes or roles do not permit the action. A downstream hosting-protection response points to application routing, not an identity you should recreate.
Operators should route content requests through the configured public application origin. Turning off deployment protection is not a suitable substitute for fixing credential-bearing request routing.
7. Revoke the access path, not the publisher
In Admin → Publishers, find the relevant OAuth app connection beneath its channel and select Disconnect. Its access and refresh tokens are revoked; unrelated keys and the publisher identity remain separate.
For static-key clients, revoke or rotate the key using its own controls. A new key must be stored securely in the client; never paste it into a public article or commit it to source control.
Test revocation using a dedicated test connection. Verify its tool calls stop working and its refresh token cannot recover access. Do not disconnect a colleague's active integration as a test.
A useful definition of done
You know which publisher performed the action, the reviewed draft matches the saved body, publication was explicitly approved, the public page is correct, and the connection can be revoked independently.
That is where MCP earns its place in a publishing workflow: fewer manual handoffs without giving up the team's ownership of accuracy, voice or release timing.