MCP Tools (mcp_*)

This page is for application developers using Discord MCP-local tools that are available to normal, non-privileged apps.

These tools are part of the Discord MCP service itself. They do not proxy directly to Discord.

Access and Safety #

Most mcp_* tools require:

  • X-Owner-Access: 1 or X-Owner-Access: true

One exception exists:

  • mcp_get_access_context is callable without owner access.

Without owner access, the other mcp_* tools are hidden from /v1/tools/list and denied at execution.

X-Allowed-Methods behavior #

If X-Allowed-Methods is set, the Discord MCP applies it to mcp_* tools too:

  • read operations: require GET or POST
  • write operations: require POST

Operational mapping:

  • Read operations:
  • mcp_get_settings
  • mcp_get_runtime_settings
  • mcp_get_provider_settings
  • mcp_get_access_context
  • mcp_list_editable_options
  • mcp_validate_tool_call
  • mcp_application_stats
  • mcp_docs_list
  • mcp_docs_search
  • mcp_docs_read
  • Write operations:
  • mcp_set_option
  • mcp_set_provider_option
  • mcp_service_feedback

Tool Reference #

mcp_get_settings #

Read current app-specific settings.

  • Arguments: none

Example (/v1/tools/call):

{
  "name": "mcp_get_settings",
  "arguments": {}
}

mcp_get_runtime_settings #

Read the currently loaded runtime settings snapshot.

  • Arguments: none

Example:

{
  "name": "mcp_get_runtime_settings",
  "arguments": {}
}

mcp_get_access_context #

Debug helper: returns the evaluated access context for the current request/session.

  • Arguments: none
  • Includes:
  • app_id
  • owner_access
  • privileged_call
  • privileged_application
  • permission_bits
  • privileged_intents
  • current_user
  • current_guild
  • current_channel
  • current_message
  • allowed_mentions
  • image_provider_override
  • image_uploader_override
  • image_model_override
  • image_persist
  • image_token_override_present
  • upload_provider_override
  • upload_persist
  • upload_token_override_present
  • target_users, target_guilds, target_channels
  • allowed_methods, allowed_paths
  • cache_max_ttl

Example:

{
  "name": "mcp_get_access_context",
  "arguments": {}
}

mcp_get_provider_settings #

Read provider configuration visible to the current app.

  • Arguments:
  • provider (required): provider name such as alibaba or discord
  • Returns:
  • service-level defaults for that provider
  • app-specific overrides for that provider
  • the merged effective settings

Example:

{
  "name": "mcp_get_provider_settings",
  "arguments": {
    "provider": "alibaba"
  }
}

mcp_validate_tool_call #

Dry-run preflight helper for model self-correction loops and operator debugging.

  • Arguments:
  • name (required): target tool name
  • arguments (optional): tool arguments object
  • Behavior:
  • runs the Discord MCP access/method/permission checks
  • runs route/target preflight for Discord tools
  • does not execute upstream Discord mutations

Example:

{
  "name": "mcp_validate_tool_call",
  "arguments": {
    "name": "delete_message",
    "arguments": {
      "guild_id": "123456789012345678",
      "channel_id": "223456789012345678",
      "message_id": "323456789012345678"
    }
  }
}

mcp_list_editable_options #

List the user-editable app options supported by mcp_set_option, with short format guidance.

  • Arguments: none

Example:

{
  "name": "mcp_list_editable_options",
  "arguments": {}
}

mcp_set_option #

Set one user-editable option for the current application.

  • Arguments:
  • option (required): one of:
    • notes
    • dm_prefix
    • default_allowed_methods
    • default_allowed_paths
    • default_target_users
    • default_target_guilds
    • default_target_channels
    • default_permission_bits
    • default_cache_max_ttl
    • event_webhook
  • value (required): string/number/boolean
  • value: "default" deletes the option

event_webhook accepts an optional #<token> at the end of the URL. If present, it is removed before delivery and sent as an Authorization: Bearer <token> header, so your endpoint can verify incoming events without the token appearing in the base URL.

Example: https://example.com/v1/events#mysecrettoken

Your webhook will be called from Cloudflare Workers. Make sure your endpoint allows requests from their IP ranges and does not block traffic from that provider.

Example (notes):

{
  "name": "mcp_set_option",
  "arguments": {
    "option": "notes",
    "value": "On-call app for moderation workflows"
  }
}

Example (default_allowed_methods):

{
  "name": "mcp_set_option",
  "arguments": {
    "option": "default_allowed_methods",
    "value": "GET,POST"
  }
}

Example (default_permission_bits):

{
  "name": "mcp_set_option",
  "arguments": {
    "option": "default_permission_bits",
    "value": "8192"
  }
}

mcp_set_provider_option #

Set one app-specific provider override.

  • Arguments:
  • provider (required)
  • option (required)
  • value (required)
  • value: "default" deletes the override field

Use this when one application needs its own token, model, webhook URL, or other provider field without changing the global default for the whole Discord MCP service.

Whether a field can be edited here depends on the provider. Some providers allow every app-specific field, while others only allow a small safe subset.

Example:

{
  "name": "mcp_set_provider_option",
  "arguments": {
    "provider": "alibaba",
    "option": "model",
    "value": "your-image-model"
  }
}

mcp_service_feedback #

Send feedback about Dis.gg MCP directly from your integration. This is owner-only and rate-limited to one message per application every 5 minutes.

  • Arguments:
  • content (required): your feedback (max 500 characters)
  • Only visible when the service operator has enabled feedback collection

Example:

{
  "name": "mcp_service_feedback",
  "arguments": {
    "content": "The image generation tool could benefit from size presets."
  }
}

mcp_application_stats #

Return usage counters for the current application.

  • Arguments: none
  • Returns:
  • tool_calls — total successful tool calls for this app
  • images_generated — image generations performed by this app
  • errors — total tool errors attributed to this app

This tool is automatically hidden when the caller already has access to an operator-level stats view that covers the same per-app counters, to avoid exposing the same numbers through two different tools.

Example:

{
  "name": "mcp_application_stats",
  "arguments": {}
}

Documentation Helpers #

These tools let an integration explore Dis.gg MCP documentation without leaving the MCP session. They are visible to any caller with X-Owner-Access, return pure JSON (no Discord calls), and cover exactly the same pages served under /docs.

mcp_docs_list #

List every published documentation page grouped by section.

  • Arguments: none
  • Each entry contains title, category, path, and url
  • Pair with mcp_docs_read to fetch the full content of any page

Example:

{
  "name": "mcp_docs_list",
  "arguments": {}
}

mcp_docs_search #

Search across the same documentation catalog for a keyword or short phrase.

  • Arguments:
  • query (required): search string
  • Each result includes title, category, path, url, and a short matching extract

Example:

{
  "name": "mcp_docs_search",
  "arguments": {
    "query": "event webhook"
  }
}

mcp_docs_read #

Read one documentation page in full.

  • Arguments:
  • path (required): the page path returned by mcp_docs_list or mcp_docs_search (for example tools/mcp or headers). Trailing slashes and the .md extension are optional.
  • Returns title, category, path, url, and the full rendered markdown

Example:

{
  "name": "mcp_docs_read",
  "arguments": {
    "path": "headers"
  }
}

Related Docs #