1. Discord grant
The bot receives only the application scopes, guild permissions, channel visibility, role position, and privileged intents required by the selected capability.
GuildControl MCP treats every layer as a narrowing boundary. Discord permissions, local policy, negotiated tool discovery, exact identifiers, interactive approval, and operation evidence serve different purposes. One gate never substitutes for another.
1. Discord grant
The bot receives only the application scopes, guild permissions, channel visibility, role position, and privileged intents required by the selected capability.
2. Local policy
One strict versioned file binds the verified application and bot identities to explicit read modes, typed exact-ID groups, notification and thread policy, selected toolsets, and feature gates.
3. MCP discovery
The server advertises only configured tools. Progressive discovery can narrow a large contract further without granting new Discord or local authority.
4. Request evidence
Exact IDs, complete permission evidence, bounded inputs, fresh state, and action-specific prerequisites must agree before a change can proceed.
Names are display text and can collide, change, or contain untrusted content. Destructive and administrative workflows target exact Discord snowflakes. Canonical Discord links and typed mentions may be parsed locally into those IDs, but the parser does not perform name lookup or gain downstream authority.
Canonical plan tools remain available for detached review and display, but manual digest transfer is not an extra security gate. The execute path prepares the same evidence, binds it into signed request state, and performs the same final fresh-plan comparison before a write.
allowlist or all-visible modes instead of an empty-list conventionMessages, attachment URLs, embeds, components, audit-log reasons, usernames, profile names, role names, channel names, channel topics, scaffold symbols, and avatars remain outside durable activity and operation records. Receipts use Discord identifiers, timestamps, numeric parameters, domain-separated hashes, plan digests, strategies, sanitized errors, and outcomes.
Documentation generated for guildctl@0.3.1. Canonical source and edit history remain in the public repository. GuildControl is an independent project and is not affiliated with or endorsed by Discord Inc. Discord is used only to identify the platform that GuildControl connects to.