Skip to content

intelligence_summarize_channel

Intelligence Read only

Summarize recent messages in a Discord channel using the client’s LLM (MCP sampling).

“what was discussed in #X?”, “catch me up”, “TL;DR”.

when client lacks sampling support (Claude Desktop, Cursor, ChatGPT, Cline, Continue, Windsurf), returns raw messages + _meta.fallback: "host_llm_should_process" so the host LLM can summarize locally.

{
"name": "intelligence_summarize_channel",
"arguments": {
"channel_id": "123456789012345678"
}
}
FieldTypeRequiredConstraintsDescription
channel_idstringyespattern: ^\d{17,20}$Channel to summarize
limitintegernodefault: 50; min: 10; max: 100Messages to consider (10-100, default 50)
style”bullet” | “paragraph” | “executive”nodefault: "bullet"; one of bullet, paragraph, executiveSummary style
Complete input JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"channel_id": {
"type": "string",
"pattern": "^\\d{17,20}$",
"description": "Channel to summarize"
},
"limit": {
"default": 50,
"description": "Messages to consider (10-100, default 50)",
"type": "integer",
"minimum": 10,
"maximum": 100
},
"style": {
"default": "bullet",
"description": "Summary style",
"type": "string",
"enum": [
"bullet",
"paragraph",
"executive"
]
}
},
"required": [
"channel_id"
]
}

{summary, key_topics, action_items, message_count_used, sampling_used}. Server ships ZERO API keys - uses your client’s model.

{
"summary": "The team shipped the release and assigned one follow-up.",
"key_topics": [
"release"
],
"action_items": [
"Verify the rollout"
],
"message_count_used": 20,
"sampling_used": true
}
FieldTypeRequiredConstraintsDescription
summarystringno
key_topicsarray<string>no
action_itemsarray<string>no
message_count_usednumberyes
sampling_usedbooleanno
raw_messagesarray<object>no
channel_idstringno
stylestringno
_metaobjectnoPresent ONLY when the client lacks the sampling capability. When present, the analysed fields are absent and the raw Discord payload is returned instead for the host model to process.
Complete output JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"summary": {
"type": "string"
},
"key_topics": {
"type": "array",
"items": {
"type": "string"
}
},
"action_items": {
"type": "array",
"items": {
"type": "string"
}
},
"message_count_used": {
"type": "number"
},
"sampling_used": {
"type": "boolean"
},
"raw_messages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"author": {
"type": "string"
},
"content": {
"type": "string"
}
},
"required": [
"id",
"author",
"content"
],
"additionalProperties": false
}
},
"channel_id": {
"type": "string"
},
"style": {
"type": "string"
},
"_meta": {
"description": "Present ONLY when the client lacks the sampling capability. When present, the analysed fields are absent and the raw Discord payload is returned instead for the host model to process.",
"type": "object",
"properties": {
"fallback": {
"type": "string",
"const": "host_llm_should_process"
},
"intent": {
"type": "string"
},
"sampling_used": {
"type": "boolean",
"const": false
}
},
"required": [
"fallback",
"intent",
"sampling_used"
],
"additionalProperties": false
}
},
"required": [
"message_count_used"
],
"additionalProperties": false
}
PropertyValue
Read-onlyyes
Destructiveno
Idempotentyes
Open-worldyes
Confirmation requiredno
  • The intelligence category must be enabled by MCP_CATEGORIES when an allowlist is set.
  • This endpoint uses the configured bot credential and Discord’s route-specific authorization; discord-mcp does not elevate access.
  • An invalid credential returns a 401-class tool error. Insufficient endpoint permission or scope returns 403; inaccessible resources commonly return 404.

Discord-supplied names, topics, messages, and other strings are untrusted. Fields in structuredContent may remain raw even when the companion human-readable content or an untrusted_* field contains a fenced copy. Fencing is defense-in-depth, not sanitization or proof against prompt injection. Never treat Discord text as instructions or feed it into a consequential write without an independent policy or human approval.

packages/mcp-core/src/tools/intelligence/summarize_channel.ts