intelligence_summarize_channel
Summarize recent messages in a Discord channel using the client’s LLM (MCP sampling).
When to use
Section titled “When to use”“what was discussed in #X?”, “catch me up”, “TL;DR”.
Fallback
Section titled “Fallback”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.
MCP call example
Section titled “MCP call example”{ "name": "intelligence_summarize_channel", "arguments": { "channel_id": "123456789012345678" }}| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
channel_id | string | yes | pattern: ^\d{17,20}$ | Channel to summarize |
limit | integer | no | default: 50; min: 10; max: 100 | Messages to consider (10-100, default 50) |
style | ”bullet” | “paragraph” | “executive” | no | default: "bullet"; one of bullet, paragraph, executive | Summary 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" ]}Returns
Section titled “Returns”{summary, key_topics, action_items, message_count_used, sampling_used}. Server ships ZERO API keys - uses your client’s model.
Example structured result
Section titled “Example structured result”{ "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}Output schema
Section titled “Output schema”| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
summary | string | no | ||
key_topics | array<string> | no | ||
action_items | array<string> | no | ||
message_count_used | number | yes | ||
sampling_used | boolean | no | ||
raw_messages | array<object> | no | ||
channel_id | string | no | ||
style | string | no | ||
_meta | object | no | 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. |
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}Annotations
Section titled “Annotations”| Property | Value |
|---|---|
| Read-only | yes |
| Destructive | no |
| Idempotent | yes |
| Open-world | yes |
| Confirmation required | no |
Access and common errors
Section titled “Access and common errors”- The
intelligencecategory must be enabled byMCP_CATEGORIESwhen 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 returns403; inaccessible resources commonly return404.
Trust boundary
Section titled “Trust boundary”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.
Source
Section titled “Source”packages/mcp-core/src/tools/intelligence/summarize_channel.ts