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: 1orX-Owner-Access: true
One exception exists:
mcp_get_access_contextis 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
GETorPOST - write operations: require
POST
Operational mapping:
- Read operations:
mcp_get_settingsmcp_get_runtime_settingsmcp_get_provider_settingsmcp_get_access_contextmcp_list_editable_optionsmcp_validate_tool_callmcp_application_statsmcp_docs_listmcp_docs_searchmcp_docs_read- Write operations:
mcp_set_optionmcp_set_provider_optionmcp_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_idowner_accessprivileged_callprivileged_applicationpermission_bitsprivileged_intentscurrent_usercurrent_guildcurrent_channelcurrent_messageallowed_mentionsimage_provider_overrideimage_uploader_overrideimage_model_overrideimage_persistimage_token_override_presentupload_provider_overrideupload_persistupload_token_override_presenttarget_users,target_guilds,target_channelsallowed_methods,allowed_pathscache_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 asalibabaordiscord- 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 namearguments(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:notesdm_prefixdefault_allowed_methodsdefault_allowed_pathsdefault_target_usersdefault_target_guildsdefault_target_channelsdefault_permission_bitsdefault_cache_max_ttlevent_webhook
value(required): string/number/booleanvalue: "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 appimages_generated— image generations performed by this apperrors— 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, andurl - Pair with
mcp_docs_readto 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 matchingextract
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 bymcp_docs_listormcp_docs_search(for exampletools/mcporheaders). Trailing slashes and the.mdextension are optional.- Returns
title,category,path,url, and the full renderedmarkdown
Example:
{
"name": "mcp_docs_read",
"arguments": {
"path": "headers"
}
}
Related Docs #
- Security headers:
docs/headers.md