Review and distribute a Shadow MCP
Use this workflow only through an authenticated Speakeasy AI Control Plane (AICP) Platform MCP connected as an external administrator. It follows the guarded AICP dashboard outcome: review one observed target, make an explicit audience decision, optionally onboard an approved remote target, and distribute the ready MCP to one exact plugin. It is not available to managed project assistants or the member-safe catalogue. Installing this package grants no organization access or authority.
Safety rules
- Keep the project, opaque Shadow MCP target, approval audience, rationale, registered MCP, and plugin explicit. Never infer or silently substitute them.
- Treat server-returned evidence as bounded. Report every gap and incomplete result. Do not recover raw target values, people, principals, evidence, or research traces.
- Never widen an audience to Everyone to make approval or distribution succeed. Everyone is valid only when the user deliberately selects and confirms the server-returned Everyone reference.
- Secrets never enter chat. Present only setup, provider, and authorization URLs returned by AICP, and wait for the user to complete secure setup in the browser.
- Registration is private and separate from approval and distribution. Do not claim an atomic promotion from observed target to distributed MCP.
- A review decision or receipt does not prove current distribution admission. Registration re-inspects the target, and distribution rechecks the current approval and complete plugin audience.
- A denial, unavailable admission result, or version conflict returns to fresh reads and user review. Never approve again, change the audience, or retry a mutation automatically.
Workflow
- Call
list_projects. If itstruncatedresult is true, report that project discovery is incomplete and hand off to the AICP dashboard; otherwise present the eligible projects and ask the user to select one exact project. Retain both its returned ID for Shadow and plugin inventory tools and its slug for readiness and distribution tools. - Call
list_shadow_mcp_inventorywith that exact project ID. Present only its bounded summaries and ask the user to select one exact opaque target reference. Callget_shadow_mcp_reviewwith the same project ID and target reference. - Establish the intended approval audience. Call
list_plugin_assignmentsfor the exact project. If the user intends to match an existing plugin, ask them to name it and callget_plugin; use only a complete, untruncated assignment set. Ask the user to select exact server-returned audience references and provide a bounded rationale. Stop and use the AICP dashboard if the required assignments are truncated or incomplete. - Refresh
get_shadow_mcp_reviewand any audience references before presenting the bounded review evidence, every gap, the proposed allow or deny decision, the complete selected audience, and the rationale. Ask for explicit confirmation of that exact fresh project, target, decision, audience, and rationale, then immediately calldecide_shadow_mcp_accesswith the immediately precedingexpected_version, a fresh idempotency key, andconfirmed: true. If it conflicts or a reference expires, re-read and re-present the changed state, then obtain confirmation again. An allow requires one or more selected audience references; a deny has none. - Call
get_shadow_mcp_reviewagain and report the committed live review. The review result does not expose a raw remote URL or an onboarding action, so never reconstruct either. To onboard an approved target, hand off to the AICP dashboard and stop until the user confirms dashboard setup is complete. - After dashboard onboarding, call
find_mcpwith an explicit user-provided query, present the bounded configured MCP matches, and ask the user to select one exact result. Callget_mcpfor that exact MCP and continue only when it returns a Platform-managed registration ID. Callget_mcp_readinesswith the exact project slug and registration ID andforce: true; continue only when fresh evidence says the MCP is ready. - Call
list_plugins, present the exact project plugins, and ask the user to choose one. Callget_pluginfor that exact plugin and require its complete, untruncated assignment set. Compare the whole set with the approved audience and currentdistribution_admission; keep publication state separate. If assignments must change, refreshlist_plugin_assignments, present the complete replacement and state that it changes who receives every MCP server in that plugin, not only this target. Ask for explicit confirmation, then callset_plugin_assignmentswith the immediately precedingassignment_versionasexpected_assignment_version, a fresh idempotency key, andconfirmed: true. Re-readget_pluginafter the mutation. - Present the exact plugin, its complete audience, the ready MCP, and the current admission and publication states. Confirm this exact distribution with the user before calling
distribute_mcp_to_plugin. If it returns a denial or conflict, re-readget_shadow_mcp_reviewandget_pluginand return to user review without automatically changing or renewing the approval. - After distribution, call
get_pluginandget_shadow_mcp_reviewagain. Report the live attachment, distribution admission, and publication evidence separately. Do not claim that users have the MCP unless the returned live state supports that conclusion.
The approval, registration, assignment, and distribution confirmations are separate decisions. Browser setup and authorization are separate secure handoffs. Preserve each boundary even when the user wants to complete the whole workflow.

