Connect to Management MCP
Management MCP is the authenticated ProductAtlas endpoint:
https://productatlas.app/mcp/manage
It is designed so an authenticated client needs only this server. The management collection contains the same three public, read-only tools as the anonymous endpoint:
search_blueprintsget_blueprintget_blueprint_markdown
It also registers these authorized Publisher Release lifecycle tools:
set_release_deprecationclear_release_deprecationwithdraw_release
No Draft, asset, submission, publication, or analytics tool is registered yet. Authentication does not expose unpublished content through public catalog tools, and Blueprint content remains untrusted third-party data.
The repository implementation and local tests are not hosted verification. Do not treat the management connection as live until ProductAtlas has verified the public edge routes, BeyondAuth token issuance and refresh, the dedicated audience/resource mapping, and revocation on the deployed environment.
Current Release lifecycle tools
All three Publisher tools mutate lifecycle state, require the selected
Publisher's live releases:deprecate permission, and use expectedRevision for
optimistic concurrency. They are non-idempotent. withdraw_release is also
destructive and permanent for a Publisher; restoration is not a Publisher
capability.
set_release_deprecation
Set or replace guidance for one exact immutable Release.
| Input | Type | Required | Behavior |
|---|---|---|---|
publisherId | string | Yes | Exact stable Publisher grant ID selected during authorization. |
namespacedId | string | Yes | Canonical @publisher/slug identity owned by that Publisher. |
version | string | Yes | Exact canonical semantic Release version. |
expectedRevision | integer | Yes | Current non-negative lifecycle revision. |
reason | string | Yes | Bounded plain-text deprecation guidance. |
replacementVersion | string or null | No | Different active version of the same Blueprint. |
replacementBlueprint | string or null | No | Different public Blueprint in canonical @publisher/slug form. |
clear_release_deprecation
Clear guidance from one exact active immutable Release.
| Input | Type | Required | Behavior |
|---|---|---|---|
publisherId | string | Yes | Exact stable Publisher grant ID selected during authorization. |
namespacedId | string | Yes | Canonical @publisher/slug identity owned by that Publisher. |
version | string | Yes | Exact canonical semantic Release version. |
expectedRevision | integer | Yes | Current non-negative lifecycle revision. |
withdraw_release
Permanently withdraw one exact immutable Release. A Publisher cannot restore it, so confirm the target and reason before invoking the tool.
| Input | Type | Required | Behavior |
|---|---|---|---|
publisherId | string | Yes | Exact stable Publisher grant ID selected during authorization. |
namespacedId | string | Yes | Canonical @publisher/slug identity owned by that Publisher. |
version | string | Yes | Exact canonical semantic Release version. |
expectedRevision | integer | Yes | Current non-negative lifecycle revision. |
reason | string | Yes | Bounded plain-text withdrawal reason. |
permanenceConfirmed | boolean | Yes | Explicit acknowledgement that the exact Release cannot be restored by the Publisher. |
Stable lifecycle errors
| Prefix | Meaning | Recovery |
|---|---|---|
[invalid_request] | A version, revision, reason, replacement, or confirmation is invalid. | Correct the exact input; do not guess a new revision. |
[not_found] | The published Release is absent, unavailable, or not identified canonically. | Re-read the Publisher Release and use its exact identity and version. |
[forbidden] | The account, client, Publisher grant, current role, or live permission does not authorize the action. | Review the connection and Publisher selection; do not retry unchanged. |
[conflict] | Lifecycle state changed, or lifecycle changes are currently restricted. | Re-read the Release, review the new state and revision, then ask the human before retrying. |
Responses contain a bounded lifecycle projection, including the canonical identity and version, availability, guidance or withdrawal fields, and the new revision. They do not return unpublished content or provider tokens.
Connect and review access
Give a compatible MCP client this setup URL:
https://productatlas.app/mcp/manage
The client discovers ProductAtlas metadata, registers itself, and opens the ProductAtlas authorization flow. Sign in, review the client name, redirect address, requested OAuth scopes, choose your individual publisher or a current organization publisher, then choose one permission preset and approve or cancel. ProductAtlas never asks you to copy a client secret, access token, refresh token, registration token, authorization code, or PKCE verifier.
After connection, use
MCP Connections (/settings/mcp) to
review connected clients, grants, timestamps, and bounded recent activity.
There you can change a permission preset, require client-initiated
reauthorization, or revoke a client.
Reauthorization removes the current ProductAtlas grants. Return to the MCP client and start a fresh connection so the client creates new PKCE, state, nonce, resource, and redirect parameters.
OAuth contract
ProductAtlas is the protected resource and permission authority for
https://productatlas.app/mcp/manage; BeyondAuth is the actual issuer and token
authority.
| Contract | Value |
|---|---|
| Protected-resource metadata | https://productatlas.app/.well-known/oauth-protected-resource/mcp/manage |
| Authorization-server compatibility metadata | https://productatlas.app/.well-known/oauth-authorization-server |
| Dynamic registration | https://productatlas.app/.well-known/oauth-register |
| Authorization proxy | https://productatlas.app/.well-known/oauth-authorize |
| Resource | https://productatlas.app/mcp/manage |
| Registration scope string | openid mcp.manage offline_access |
| ProductAtlas resource scope | mcp.manage |
| Client authentication | client_secret_basic |
| Grants | authorization code and refresh token |
| PKCE | PKCE S256 |
Only confidential client_secret_basic dynamic registration is supported.
Public token_endpoint_auth_method=none registration is unsupported and
rejected. The client_credentials grant is unsupported and rejected.
ProductAtlas currently serves authorization-server metadata that declares the BeyondAuth issuer. This temporary Toggly-compatible RFC 8414 issuer-location mismatch is not standards-complete. ProductAtlas OPS-429 will consume issuer-origin discovery after BeyondAuth OPS-430 publishes the required metadata, resource, audience, registration, and hosted proof.
Publisher permissions
The broad mcp.manage OAuth scope permits use of the protected resource; it
does not authorize publisher actions. ProductAtlas checks the enabled client,
current account, client/subject ownership, and broad scope for every protected
call. Each publisher-action tool additionally checks current publisher authority
and the exact live publisher permission. The current release lifecycle tools use
that boundary; the three public-catalog tools perform no publisher action.
| Permission | Meaning |
|---|---|
drafts:read | Read private Blueprint Draft state |
drafts:write | Create or change Blueprint Draft state |
assets:write | Create or change publisher assets |
submissions:manage | Validate and manage review submissions |
releases:publish | Publish a new immutable Blueprint Release |
releases:deprecate | Deprecate an immutable Blueprint Release |
analytics:read | Read publisher-scoped analytics |
The View preset grants drafts:read. Author adds drafts:write and
assets:write; it includes submissions:manage only when the selected
publisher role permits submission. Publisher adds releases:publish,
releases:deprecate, and analytics:read and is not offered to organization
Contributors.
Organization grants are always intersected with current membership and role. Removing or demoting a member takes effect immediately even if an older client grant still contains a permission. A granted permission never overrides target ownership or other application authorization.
Revocation boundary
Revocation immediately disables the ProductAtlas registration and its publisher grants before ProductAtlas attempts BeyondAuth cleanup. BeyondAuth currently acknowledges client deletion without proving that its persisted grants and user-session references were removed. ProductAtlas therefore treats provider cleanup as unconfirmed and records reconciliation required.
OPS-432 tracks the BeyondAuth cleanup correction and hosted revocation proof. Until it is complete, the ProductAtlas client is locally denied, but documentation must not claim that provider-side sessions were fully revoked.