Skip to content

Safety model

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 exact guild, channel, and user scope plus 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.

  1. PlanResolve permissions, hierarchy, scope, capacity, and exact targets
  2. BindDigest the action, parameters, evidence, policy, and freshness frontier
  3. ApproveRequire signed request state and the MCP host's interactive write approval
  4. ExecuteReserve durably, avoid mutation retries, and stop on ambiguity
  5. VerifyRead back the exact result and record a content-free outcome

Messages, 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 guildcontrol@0.0.0. 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.