{
  "service": "discord",
  "displayName": "Discord",
  "categories": [
    "Communication",
    "Social"
  ],
  "authTypes": [
    "oauth2"
  ],
  "auth": [
    {
      "type": "oauth2",
      "authorizationUrl": "https://discord.com/oauth2/authorize",
      "tokenUrl": "https://discord.com/api/oauth2/token",
      "scopes": [
        "identify",
        "email",
        "guilds",
        "guilds.members.read",
        "connections",
        "applications.entitlements",
        "role_connections.write",
        "openid"
      ],
      "tokenEndpointAuthMethod": "client_secret_post"
    }
  ],
  "homepageUrl": "https://discord.com",
  "actions": [
    {
      "id": "discord.delete_my_application_role_connection",
      "service": "discord",
      "name": "delete_my_application_role_connection",
      "description": "Remove the current OAuth user's role connection data for a Discord application.",
      "requiredScopes": [
        "discord.role_connections.write"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "application_id": {
            "type": "string",
            "minLength": 1,
            "description": "A Discord snowflake identifier."
          }
        },
        "additionalProperties": false,
        "required": [
          "application_id"
        ],
        "description": "Input parameters for deleting an application role connection."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether Discord accepted the delete request."
          }
        },
        "additionalProperties": false,
        "required": [
          "success"
        ],
        "description": "The output payload for this action."
      }
    },
    {
      "id": "discord.get_current_user_application_entitlements",
      "service": "discord",
      "name": "get_current_user_application_entitlements",
      "description": "Get entitlements for the current OAuth user under a Discord application.",
      "requiredScopes": [
        "discord.entitlements.read"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "application_id": {
            "type": "string",
            "minLength": 1,
            "description": "A Discord snowflake identifier."
          },
          "exclude_ended": {
            "type": "boolean",
            "description": "Whether to exclude entitlements that have already ended."
          },
          "exclude_deleted": {
            "type": "boolean",
            "description": "Whether to exclude entitlements marked as deleted."
          }
        },
        "additionalProperties": false,
        "required": [
          "application_id"
        ]
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "entitlements": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A raw Discord API object."
            },
            "description": "The entitlements visible to the current OAuth user."
          }
        },
        "additionalProperties": false,
        "required": [
          "entitlements"
        ],
        "description": "Current-user application entitlements."
      }
    },
    {
      "id": "discord.get_gateway",
      "service": "discord",
      "name": "get_gateway",
      "description": "Get a Discord Gateway URL.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "No input parameters are required."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The WebSocket Gateway URL."
          }
        },
        "additionalProperties": false,
        "required": [
          "url"
        ],
        "description": "Discord Gateway URL."
      }
    },
    {
      "id": "discord.get_guild_template",
      "service": "discord",
      "name": "get_guild_template",
      "description": "Get a Discord guild template by code.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "minLength": 1,
            "description": "The guild template code."
          }
        },
        "additionalProperties": false,
        "required": [
          "code"
        ],
        "description": "Input for retrieving a Discord guild template."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "A raw Discord API object."
      }
    },
    {
      "id": "discord.get_guild_widget",
      "service": "discord",
      "name": "get_guild_widget",
      "description": "Get a Discord guild widget as JSON.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "guild_id": {
            "type": "string",
            "minLength": 1,
            "description": "A Discord snowflake identifier."
          }
        },
        "additionalProperties": false,
        "required": [
          "guild_id"
        ],
        "description": "Input for retrieving a Discord guild widget."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "A raw Discord API object."
      }
    },
    {
      "id": "discord.get_guild_widget_png",
      "service": "discord",
      "name": "get_guild_widget_png",
      "description": "Get a Discord guild widget PNG.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "guild_id": {
            "type": "string",
            "minLength": 1,
            "description": "A Discord snowflake identifier."
          },
          "style": {
            "type": "string",
            "enum": [
              "shield",
              "banner1",
              "banner2",
              "banner3",
              "banner4"
            ],
            "description": "The visual style to use for the guild widget PNG."
          }
        },
        "additionalProperties": false,
        "required": [
          "guild_id"
        ],
        "description": "Input for retrieving a Discord guild widget PNG."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "filename": {
            "type": "string",
            "description": "The file name."
          },
          "mimeType": {
            "type": "string",
            "description": "The MIME type."
          },
          "sizeBytes": {
            "type": "integer",
            "description": "The file size in bytes."
          },
          "dataBase64": {
            "type": "string",
            "description": "The file contents encoded as base64."
          }
        },
        "additionalProperties": false,
        "required": [
          "filename",
          "mimeType",
          "sizeBytes",
          "dataBase64"
        ],
        "description": "A binary file payload encoded for transport."
      }
    },
    {
      "id": "discord.get_invite",
      "service": "discord",
      "name": "get_invite",
      "description": "Get a Discord invite by code or URL.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "invite_code": {
            "type": "string",
            "minLength": 1,
            "description": "The invite code or invite URL to resolve."
          },
          "code": {
            "type": "string",
            "minLength": 1,
            "description": "The invite code to resolve."
          },
          "with_counts": {
            "type": "boolean",
            "description": "Whether to include approximate member and presence counts."
          },
          "with_expiration": {
            "type": "boolean",
            "description": "Whether to include expiration metadata in the invite response."
          },
          "guild_scheduled_event_id": {
            "type": "string",
            "minLength": 1,
            "description": "A Discord snowflake identifier."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for resolving a Discord invite."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "A raw Discord API object."
      }
    },
    {
      "id": "discord.get_my_application_role_connection",
      "service": "discord",
      "name": "get_my_application_role_connection",
      "description": "Read the current OAuth user's role connection data for a Discord application.",
      "requiredScopes": [
        "discord.role_connections.write"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "application_id": {
            "type": "string",
            "minLength": 1,
            "description": "A Discord snowflake identifier."
          }
        },
        "additionalProperties": false,
        "required": [
          "application_id"
        ],
        "description": "Input parameters for reading an application role connection."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "role_connection": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A raw Discord API object."
          }
        },
        "additionalProperties": false,
        "required": [
          "role_connection"
        ],
        "description": "The output payload for this action."
      }
    },
    {
      "id": "discord.get_my_guild_member",
      "service": "discord",
      "name": "get_my_guild_member",
      "description": "Get the current OAuth user's member record in a guild.",
      "requiredScopes": [
        "discord.guild_members.read"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "guild_id": {
            "type": "string",
            "minLength": 1,
            "description": "A Discord snowflake identifier."
          }
        },
        "additionalProperties": false,
        "required": [
          "guild_id"
        ],
        "description": "Input for retrieving the current user's member record."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "A raw Discord API object."
      }
    },
    {
      "id": "discord.get_my_oauth2_authorization",
      "service": "discord",
      "name": "get_my_oauth2_authorization",
      "description": "Get the current OAuth2 authorization information.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "No input parameters are required."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "A raw Discord API object."
      }
    },
    {
      "id": "discord.get_my_user",
      "service": "discord",
      "name": "get_my_user",
      "description": "Get the current OAuth user's Discord profile.",
      "requiredScopes": [
        "discord.user.read"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "No input parameters are required."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "A Discord snowflake identifier."
          },
          "username": {
            "type": "string",
            "description": "The username of the user."
          },
          "global_name": {
            "anyOf": [
              {
                "type": "string",
                "description": "The global display name of the user."
              },
              {
                "type": "null"
              }
            ]
          },
          "email": {
            "type": "string",
            "description": "The email address of the user."
          }
        },
        "additionalProperties": true,
        "description": "A Discord user profile."
      }
    },
    {
      "id": "discord.get_openid_connect_userinfo",
      "service": "discord",
      "name": "get_openid_connect_userinfo",
      "description": "Get the OpenID Connect userinfo payload for the current OAuth user.",
      "requiredScopes": [
        "discord.openid"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "No input parameters are required."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "A raw Discord API object."
      }
    },
    {
      "id": "discord.get_public_keys",
      "service": "discord",
      "name": "get_public_keys",
      "description": "Get Discord OAuth2 public keys.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "No input parameters are required."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "keys": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A raw Discord API object."
            },
            "description": "The public keys returned by Discord."
          }
        },
        "additionalProperties": false,
        "required": [
          "keys"
        ],
        "description": "Discord OAuth2 public JWK set."
      }
    },
    {
      "id": "discord.get_user",
      "service": "discord",
      "name": "get_user",
      "description": "Get the current OAuth user. Discord OAuth tokens can only read @me through this provider.",
      "requiredScopes": [
        "discord.user.read"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "user_id": {
            "const": "@me",
            "type": "string"
          }
        },
        "additionalProperties": false,
        "required": [
          "user_id"
        ],
        "description": "Input for retrieving a Discord user."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "A Discord snowflake identifier."
          },
          "username": {
            "type": "string",
            "description": "The username of the user."
          },
          "global_name": {
            "anyOf": [
              {
                "type": "string",
                "description": "The global display name of the user."
              },
              {
                "type": "null"
              }
            ]
          },
          "email": {
            "type": "string",
            "description": "The email address of the user."
          }
        },
        "additionalProperties": true,
        "description": "A Discord user profile."
      }
    },
    {
      "id": "discord.list_my_connections",
      "service": "discord",
      "name": "list_my_connections",
      "description": "List the current OAuth user's connected external accounts.",
      "requiredScopes": [
        "discord.connections.read"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "No input parameters are required."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "connections": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A raw Discord API object."
            },
            "description": "The current user's connected external accounts."
          }
        },
        "additionalProperties": false,
        "required": [
          "connections"
        ],
        "description": "Discord user connections."
      }
    },
    {
      "id": "discord.list_my_guilds",
      "service": "discord",
      "name": "list_my_guilds",
      "description": "List the current OAuth user's guilds.",
      "requiredScopes": [
        "discord.guilds.read"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "before": {
            "type": "string",
            "minLength": 1,
            "description": "A Discord snowflake identifier."
          },
          "after": {
            "type": "string",
            "minLength": 1,
            "description": "A Discord snowflake identifier."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "description": "The maximum number of guilds to return."
          },
          "with_counts": {
            "type": "boolean",
            "description": "Whether to include approximate member and presence counts."
          }
        },
        "additionalProperties": false,
        "description": "Input for listing the current user's guilds."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "guilds": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A raw Discord API object."
            },
            "description": "Guilds returned by Discord."
          }
        },
        "additionalProperties": false,
        "required": [
          "guilds"
        ],
        "description": "Discord guild list."
      }
    },
    {
      "id": "discord.list_sticker_packs",
      "service": "discord",
      "name": "list_sticker_packs",
      "description": "List public Nitro sticker packs.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "No input parameters are required."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "A raw Discord API object."
      }
    },
    {
      "id": "discord.resolve_invite",
      "service": "discord",
      "name": "resolve_invite",
      "description": "Resolve a Discord invite code.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "invite_code": {
            "type": "string",
            "minLength": 1,
            "description": "The invite code or invite URL to resolve."
          },
          "code": {
            "type": "string",
            "minLength": 1,
            "description": "The invite code to resolve."
          },
          "with_counts": {
            "type": "boolean",
            "description": "Whether to include approximate member and presence counts."
          },
          "with_expiration": {
            "type": "boolean",
            "description": "Whether to include expiration metadata in the invite response."
          },
          "guild_scheduled_event_id": {
            "type": "string",
            "minLength": 1,
            "description": "A Discord snowflake identifier."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for resolving a Discord invite."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "A raw Discord API object."
      }
    },
    {
      "id": "discord.update_my_application_role_connection",
      "service": "discord",
      "name": "update_my_application_role_connection",
      "description": "Set the current OAuth user's role connection platform fields or metadata for a Discord application.",
      "requiredScopes": [
        "discord.role_connections.write"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "application_id": {
            "type": "string",
            "minLength": 1,
            "description": "A Discord snowflake identifier."
          },
          "platform_name": {
            "type": "string",
            "maxLength": 50,
            "description": "A platform display name to show on the user's Discord profile."
          },
          "platform_username": {
            "type": "string",
            "maxLength": 100,
            "description": "A platform username to show on the user's Discord profile."
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "A stringified metadata value."
            },
            "description": "Application role connection metadata values."
          }
        },
        "additionalProperties": false,
        "required": [
          "application_id"
        ],
        "description": "Input parameters for updating an application role connection."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "role_connection": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A raw Discord API object."
          }
        },
        "additionalProperties": false,
        "required": [
          "role_connection"
        ],
        "description": "The output payload for this action."
      }
    }
  ]
}
