Get your first verified Discord outcome
This optional final unit goes beyond proving that one tool call works. It turns one natural-language request into a reviewed guild blueprint, applies it through your caller-owned bot, and reads Discord back again to produce Activity Evidence.
What success looks like
Section titled “What success looks like”The complete lifecycle is:
request → dry-run plan → human approval → resumable apply → Discord readback → Activity EvidenceYou are finished only when apply returns evidence.activity.evidence_id and a separate
guild_blueprint_evidence call returns status: verified. That result proves the current guild
still conforms to the approved blueprint; it is not a hosted certification or a replacement for
Discord’s audit log.
Before you begin
- Complete the connection quickstart with the recommended
progressivetool surface. If you have not connected a bot yet, begin with the setup tutorial and return here afterward. - Use a dedicated test profile for this journey. Do not reuse its write-enabled settings for a production guild.
- Keep the bot and every mutation inside one empty private test guild in
ALLOWED_GUILDS. - Enable Community manually in Discord before planning. If Discord asks for rules and update
channels, give those temporary channels names that do not collide with
rules,announcements,general, orwelcome. - Rename any default channel whose name would collide with the requested design. The planner preserves unrelated channels but fails closed on a same-name conflict.
- Put the bot’s dedicated role above every role it may manage. Do not grant Administrator; the read-only plan reports the exact narrower permissions still missing.
-
Allow only an explicitly confirmed blueprint apply.
guild_blueprint_applyrequires bothMCP_DRY_RUN=falsein the MCP server environment and__confirm:truein the approved call. For local stdio, merge these keys into the existingdiscord-mcpentry in your MCP client config; do not replace its command, arguments, token forwarding, or other environment keys.Codex config.toml [mcp_servers.discord-mcp.env]MCP_DRY_RUN = "false"MCP_WRITE_MODE = "allow"JSON-based MCP clients {"mcpServers": {"discord-mcp": {"env": {"MCP_DRY_RUN": "false","MCP_WRITE_MODE": "allow"}}}}The JSON block shows only the keys to merge into your already generated server entry. For Streamable HTTP, set the same variables on the discord-mcp server deployment instead. Follow the client setup locations, then restart the MCP client or HTTP deployment once.
The setting alone does not authorize a build: the exact bot, guild, plan reference, approval ID, and confirmation must still agree. Ordinary write tools are a separate boundary and may execute immediately, so keep this profile restricted to the test guild.
-
Ask for a read-only plan.
Send this request to your AI client, replacing the community type if you want:
In my allowlisted private test guild, build a professional gaming community. First call
build_discord_serverwith this request. Show me the exact bot and guild, selected source evidence, operation summary, missing permissions, blockers, warnings, risks, andapproval_id. Do not apply or call any unrelated Discord tool until I approve this exact plan.build_discord_serveris the progressive alias ofguild_blueprint_plan. It reads the live guild and returns a target-bound dry run without changing Discord. -
Resolve only reported blockers.
A ready plan has
status: ready, no blockers, an exact target,plan_id,approval_id, and normally a short caller-localplan_ref. If it reportsMISSING_PERMISSIONS, grant only the names inbot_permissions.missingto the bot role, keep that role above generated roles, and ask for a fresh plan. If it reports a resource conflict, rename the conflicting unbound resource rather than asking the agent to overwrite it. -
Review before approving.
Check that the displayed bot ID and guild ID are yours, the source is live-verified,
source.permission_policyisdiscard_source_and_regenerate, and the blueprint reportsblueprint.safety.source_permissions_discarded: true,blueprint.safety.source_overwrites_discarded: true,blueprint.safety.severe_generated_role_permissions: 0, andblueprint.bot_boundary.auto_grant_permissions: false. Confirm that the operation summary matches the community you requested. Do not approve a blocked or surprising plan. -
Approve and apply that exact plan.
Prefer the returned
plan_ref. If it isnullbecause local reference persistence was unavailable, use the returned legacyplan_tokeninstead; pass exactly one of those fields, never both.I approve the exact displayed
approval_id. Callguild_blueprint_applywith the returnedguild_id,expected_bot_id, andapproval_id, plus the unchangedplan_ref(or only the legacyplan_tokenwhenplan_refis null) and__confirm:true. If it returnspartialorbusy, resume the same plan without changing any argument until it is complete. Do not call unrelated tools.Apply checkpoints every successful operation and reconciles Discord before each resume. A
staleorblockedresult withnext_action: replanrequires a new preview and approval; never fabricate a replacement reference. -
Independently verify the outcome.
After apply returns
completeoralready_current, keep itsplan_idandevidence.activity.evidence_id, then ask:Call
guild_blueprint_evidencewith the completed plan’s exactguild_id,expected_bot_id, andplan_id. Do not change Discord. Report the status, evidence ID, current resource counts, snapshot result, remaining operations, blockers, and warnings.The expected result is
status: verified,readback: match, zero remaining operations, and no blockers. You can repeat this read-only call later to detect drift after the MCP process restarts.
Verified-outcome checklist
Section titled “Verified-outcome checklist”- The plan named the exact caller-owned bot and allowlisted private guild.
- I reviewed a ready dry run and approved its exact
approval_id. - Apply completed, including any checkpointed resumes, without unrelated tool calls.
- The terminal result contained
evidence.activity.evidence_id. - A separate
guild_blueprint_evidencecall returnedstatus: verifiedwith no remaining operations or blockers.
Next, watch the live gaming-server demo or read the full safe blueprint contract. If you completed or were blocked by this journey, share a credential-safe outcome report.