Skip to main content
Glama
cappyeo

discord-mcp

soundboard_create_guild_sound

Upload a new soundboard sound to a Discord guild from a base64 audio data URI (mp3/ogg/wav, max 512 KB) and set optional volume and emoji.

Instructions

Purpose: Upload a new soundboard sound to a guild.

sound must be a base64 data URI (audio/mpeg|ogg|wav), max 512 KB raw.

Returns: {sound_id, name, volume, emoji_id, emoji_name}.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesSound name (2..32 chars)
soundYesBase64-encoded audio data URI (mp3/ogg/wav)
volumeNoPlayback volume 0..1 (default 1)
emoji_idNoCustom emoji to display
guild_idYesTarget guild
emoji_nameNoUnicode emoji to display
audit_reasonNoReason recorded in audit log (X-Audit-Log-Reason header)

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.28.0
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "$schema": "https://json-schema.org/draft/2020-12/schema",
      -    "additionalProperties": {},
      -    "properties": {
      -      "emoji_id": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "emoji_name": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "name": {
      -        "type": "string"
      -      },
      -      "sound_id": {
      -        "description": "Discord soundboard sound ID",
      -        "pattern": "^\\d{17,20}$",
      -        "type": "string"
      -      },
      -      "volume": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "sound_id",
      -      "name",
      -      "volume",
      -      "emoji_id",
      -      "emoji_name"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "category": {
      -        "enum": [
      -          "client",
      -          "server"
      -        ],
      -        "type": "string"
      -      },
      -      "code": {
      -        "type": "string"
      -      },
      -      "recovery_hint": {
      -        "type": "string"
      -      },
      -      "retriable": {
      -        "type": "boolean"
      -      }
      -    },
      -    "required": [
      -      "code",
      -      "retriable",
      -      "category",
      -      "recovery_hint"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "$schema": "https://json-schema.org/draft/2020-12/schema",
      +    "additionalProperties": {},
      +    "properties": {
      +      "emoji_id": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "emoji_name": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "sound_id": {
      +        "description": "Discord soundboard sound ID",
      +        "pattern": "^\\d{17,20}$",
      +        "type": "string"
      +      },
      +      "volume": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "sound_id",
      +      "name",
      +      "volume",
      +      "emoji_id",
      +      "emoji_name"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "category": {
      +        "enum": [
      +          "client",
      +          "server"
      +        ],
      +        "type": "string"
      +      },
      +      "code": {
      +        "type": "string"
      +      },
      +      "recovery_hint": {
      +        "type": "string"
      +      },
      +      "retriable": {
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "code",
      +      "retriable",
      +      "category",
      +      "recovery_hint"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. First observedv0.22.0

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey mutation and non-idempotence. The description adds a hard input constraint (max 512 KB raw) and documents the return shape, but it does not disclose permissions, rate limits, or side effects such as creating an entry in the guild's soundboard. This is useful but not comprehensive behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: Purpose, the most critical parameter constraint, and the return shape are each given in a single clear line. There is no filler or redundant repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 100% schema coverage, annotations, and an output schema present, this description supplies the one essential extra constraint (raw size limit) and a clear return summary. It omits optional permission/rate-limit context and explicit sibling routing, but an agent has enough information to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaningful value by specifying the max 512 KB raw size for `sound`, which is absent from the schema. It also reinforces the allowed audio MIME types already described in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Upload a new soundboard sound to a guild') with a clear resource and scope. The word 'new' distinguishes this from sibling tools like soundboard_modify_guild_sound, soundboard_get_guild_sound, and soundboard_delete_guild_sound.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The purpose line implies this tool should be used when uploading/creating a new sound, but it gives no explicit when-to-use guidance and does not name alternatives for modifying or sending sounds. The usage context is clear enough to infer, but not explicitly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools