Skip to main content
POST
/
api
/
v1
/
agents
/
{id}
/
discord
/
verify
curl --request POST \
  --url https://mcp.echozero.app/api/v1/agents/{id}/discord/verify \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "guildId": "9876543210987654321",
  "channelId": "1234567890123456789"
}
'
{
  "success": true,
  "data": {
    "channelId": "<string>",
    "guildId": "<string>",
    "channelName": "<string>",
    "guildName": "<string>",
    "channelIconUrl": "<string>",
    "memberCount": 123,
    "message": "<string>"
  }
}

Authorizations

Authorization
string
header
required

User JWT access token issued by POST /api/auth/verify or POST /api/auth/social/verify. Routes that accept both auth modes declare api-key and bearer-jwt security schemes.

Headers

x-signature
string

HMAC-SHA256 signature: HMAC-SHA256(secretKey, timestamp + METHOD + path + body). Optional -- when omitted, HMAC verification is skipped.

x-timestamp
string

Request timestamp in epoch milliseconds. Required when x-signature is provided. Rejected if drift exceeds 5 minutes.

Path Parameters

id
string
required

Body

application/json
channelId
string

Discord text channel snowflake.

Example:

"1234567890123456789"

guildId
string

Discord server (guild) snowflake.

Example:

"9876543210987654321"

channel
string

Channel URL (discord.com/channels/guild/channel), guildId/channelId, or channel snowflake.

Example:

"https://discord.com/channels/9876543210987654321/1234567890123456789"

Response

Verification outcome; agent row updated unless channel could not be resolved.

success
boolean
required
Example:

true

data
object
required

Endpoint-specific payload