Skip to main content
Glama
cappyeo

discord-mcp

events_create

Schedule a stage, voice, or external event in a Discord guild by providing start time, channel or location, and optional description.

Instructions

Purpose: Create a new scheduled event for a guild.

When to use:

  • Schedule a stage, voice, or external event in a guild.

Entity types: 1=STAGE_INSTANCE, 2=VOICE, 3=EXTERNAL. STAGE/VOICE require channel_id. EXTERNAL requires entity_metadata.location and scheduled_end_time.

Returns: {id, name, scheduled_start_time, status, entity_type, channel_id, description?, creator_id?}. creator_id is absent for events created before October 2021.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesEvent name (1-100 chars)
imageNoCover image as base64 data URI, or null
guild_idYesGuild to create the event in
channel_idNoRequired for STAGE/VOICE; must be a stage or voice channel
descriptionNoEvent description (max 1000 chars)
entity_typeYes1=STAGE_INSTANCE, 2=VOICE, 3=EXTERNAL
audit_reasonNoReason recorded in audit log (X-Audit-Log-Reason header)
privacy_levelNoAlways 2 (GUILD_ONLY)
entity_metadataNoRequired for EXTERNAL events; `location` is the venue text
recurrence_ruleNoRecurrence rule object (see Discord docs)
scheduled_end_timeNoISO 8601 end timestamp (required for EXTERNAL)
scheduled_start_timeYesISO 8601 timestamp when the event starts

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv0.28.0
    • removedInput schema / properties / image / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / image / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "$schema": "https://json-schema.org/draft/2020-12/schema",
      -    "additionalProperties": {},
      -    "properties": {
      -      "channel_id": {
      -        "anyOf": [
      -          {
      -            "description": "Discord channel ID (snowflake)",
      -            "pattern": "^\\d{17,20}$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "creator_id": {
      -        "anyOf": [
      -          {
      -            "description": "Discord user ID",
      -            "pattern": "^\\d{17,20}$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "description": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "entity_type": {
      -        "maximum": 9007199254740991,
      -        "minimum": -9007199254740991,
      -        "type": "integer"
      -      },
      -      "guild_id": {
      -        "description": "Discord guild (server) ID",
      -        "pattern": "^\\d{17,20}$",
      -        "type": "string"
      -      },
      -      "id": {
      -        "description": "Discord scheduled event ID",
      -        "pattern": "^\\d{17,20}$",
      -        "type": "string"
      -      },
      -      "name": {
      -        "type": "string"
      -      },
      -      "scheduled_end_time": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "scheduled_start_time": {
      -        "type": "string"
      -      },
      -      "status": {
      -        "maximum": 9007199254740991,
      -        "minimum": -9007199254740991,
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "guild_id",
      -      "name",
      -      "scheduled_start_time",
      -      "scheduled_end_time",
      -      "status",
      -      "entity_type",
      -      "channel_id"
      -    ],
      -    "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": {
      +      "channel_id": {
      +        "anyOf": [
      +          {
      +            "description": "Discord channel ID (snowflake)",
      +            "pattern": "^\\d{17,20}$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "creator_id": {
      +        "anyOf": [
      +          {
      +            "description": "Discord user ID",
      +            "pattern": "^\\d{17,20}$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "description": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "entity_type": {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      },
      +      "guild_id": {
      +        "description": "Discord guild (server) ID",
      +        "pattern": "^\\d{17,20}$",
      +        "type": "string"
      +      },
      +      "id": {
      +        "description": "Discord scheduled event ID",
      +        "pattern": "^\\d{17,20}$",
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "scheduled_end_time": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "scheduled_start_time": {
      +        "type": "string"
      +      },
      +      "status": {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "guild_id",
      +      "name",
      +      "scheduled_start_time",
      +      "scheduled_end_time",
      +      "status",
      +      "entity_type",
      +      "channel_id"
      +    ],
      +    "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.2/5.0
Behavior3/5

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

Annotations already disclose that this is not read-only (readOnlyHint false), not idempotent, and not destructive, so the description's mutation nature is expected. The description adds the return payload shape and notes the absence of creator_id for older events, which is useful. However, it does not discuss permissions, rate limits, or failure modes. With annotations covering the basic safety profile, this is a moderate but not exceptional level of 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 concise and well-organized with bold section headers (Purpose, When to use, Entity types, Returns). It front-loads the core purpose, then provides essential usage details without fluff. Every sentence carries meaning, and the structure makes it easy to scan quickly.

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?

Given the tool's complexity (12 parameters, nested objects), the description covers the key decision points: entity types, required fields, and return format. The schema handles individual parameter semantics, and the output schema is present. It does not include examples, but the information provided is sufficient for an agent to correctly construct a request for each event type. The only minor omission is not mentioning recurrence_rule behavior, but that is documented in the schema.

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 all parameters are described in the schema. The description adds value by explaining cross-field constraints (entity types map to required parameters) and clarifies that EXTERNAL events require entity_metadata.location and scheduled_end_time. It also lists return fields, helping agents understand what to expect. This goes beyond mere parameter naming, though it does not elaborate on every parameter like recurrence_rule or audit_reason.

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 opens with a clear, specific purpose: 'Create a new scheduled event for a guild.' It names the resource (scheduled event) and the action (create), and immediately distinguishes itself from siblings like events_list, events_get, events_modify, and events_delete by explicitly covering stage, voice, and external event creation. This makes tool selection unambiguous.

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

Usage Guidelines4/5

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

A dedicated 'When to use' section states the conditions: schedule a stage, voice, or external event in a guild. It also provides entity-type-specific requirements (STAGE/VOICE need channel_id, EXTERNAL needs location and end time). It does not explicitly mention alternatives (e.g., use events_modify to update), but the create-versus-modify distinction is strongly implied by the purpose and sibling names. The guidance is clear and actionable.

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