Stet MCP Server
OfficialStet MCP Server enables you to compose, target, preview, send/schedule, and measure Slack broadcasts from any MCP-capable agent.
Compose: Create drafts, set content in Markdown, add individual blocks (text, headers, images, etc.), reorder blocks, and control per-audience visibility.
Target: List channels and saved audiences, create one-time channel sets, get heuristic audience suggestions, and manage sending profiles (display name, avatar, footer, default audiences).
Validate & Preview: Check for channel overlap conflicts and preview the exact Slack Block Kit render per audience.
Send & Schedule: Send immediately, schedule for a future date/time, or cancel a scheduled/in-flight broadcast.
Measure: List broadcasts with status and preview, get per-channel delivery results (status, permalinks), emoji reaction totals (overall, by emoji, by channel), and in-thread replies with replier details.
Allows drafting, sending, and measuring Slack broadcasts via Stet.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Stet MCP Serverdraft a broadcast for the engineering team"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@stethq/mcp
Local stdio MCP server for Stet. Draft, send, and measure Slack broadcasts from any MCP-capable agent.
Stet is a Slack-first broadcasting tool: compose a message once, target it per audience, preview the real Slack render, then send or schedule it across many channels with delivery tracking. This package exposes that whole workflow as MCP tools, so an agent can draft a broadcast, preview exactly what will land, send it, and read back who replied.
You need a Stet workspace to use this. Sign up at stethq.com.
Install
Nothing to install — npx runs the server on demand.
claude mcp add stet \
--env STET_API_KEY=bk_xxxxxxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \
--env STET_API_URL=https://app.stethq.com \
-- npx -y @stethq/mcpOr add it to your MCP config by hand:
{
"mcpServers": {
"stet": {
"command": "npx",
"args": ["-y", "@stethq/mcp"],
"env": {
"STET_API_KEY": "bk_xxxxxxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"STET_API_URL": "https://app.stethq.com"
}
}
}
}Generate an API key at Dashboard → Settings → API keys. Keys are workspace-scoped; pick the write scope for full functionality (read-only keys can list and measure, but cannot compose or send).
Requires the Growth plan or higher. The REST/MCP surface is gated: below
Growth, every call returns 403 with a plan-upgrade-required problem
document. If you do not have a workspace yet, start at
stethq.com — mention that you want API/MCP access and we
will get you on a plan that includes it.
Related MCP server: Slack MCP Server AI Agent Template
Typical flow
list_sending_profiles → pick who it comes from
list_channels → find the channels to hit
create_broadcast → returns a draft id
set_one_time_channels → target ad-hoc channels (or pass audience_ids up front)
set_broadcast_content → write the whole body as Markdown
preview_broadcast → one audience_id at a time (from list_audiences or
the set_one_time_channels response) — see the exact
Slack Block Kit that will land
send_broadcast_now → or schedule_broadcast
—— later ——
get_broadcast_sends → who got it, who failed, and why
get_broadcast_reactions → emoji engagement, by channel
get_broadcast_replies → what people actually said backTools
Compose
Tool | Description |
| Create a draft with a title, sending profile, and optional target audiences. Returns the new id. |
| Compose (or replace) the entire body from Markdown — one string, or per-audience segments. |
| Append a single content block (section, header, divider, image, context, actions, rich_text_list, fields). Prefer |
| Restrict a block to a subset of the target audiences. Empty array = visible to all. |
| Reorder blocks by supplying the full block-id list in the new order. |
Target
Tool | Description |
| List Slack channels in the connected workspace. Free-text query plus structural filters. |
| List saved audiences (named sets of channels). |
| Create a saved audience from an explicit list of channel ids. |
| Target a draft at an ad-hoc channel set without creating a saved audience. Empty list deletes the group. |
| Heuristic audience suggestions based on channel-name patterns. |
| List sender identities configured in this workspace. |
| Create a sender identity: display name, avatar, footer, default audiences. |
Check and send
Tool | Description |
| Check for channel-overlap conflicts (one channel in several audiences whose visible blocks differ). |
| Render the per-audience Slack Block Kit exactly as it will be delivered. |
| Send immediately. If the broadcast is already scheduled, returns 409 with the pending send time — retry with |
| Schedule for an ISO timestamp + timezone. |
| Cancel a scheduled or in-flight broadcast. Already-posted messages stay posted. |
Measure
Tool | Description |
| List broadcasts newest-first with status, counts, send time, and a content preview. Optional status filter. |
| A broadcast's content and lifecycle state: row, target audiences, blocks. |
| Per-channel delivery: status, error message, Slack permalink, reply/reaction counts, plus a delivered/failed/pending summary. |
| Emoji reaction totals — overall, by emoji, and by channel. |
| In-thread replies with the replier's display name and a permalink. Optional per-channel filter. |
Reactions and replies are only captured for messages Stet itself posted — they are matched to a send by channel + timestamp. Messages posted to Slack by other means have no engagement data here.
Engagement history is limited to your plan's retention window: 30 days on Growth and Scale, unlimited on Enterprise. Rows outside the window are hidden, not deleted, and reappear if you upgrade.
Changing the tool schemas
The schemas in src/tools.ts describe a REST API that lives in a separate,
private repository — there's no compiler tying the two together, so drift is
possible.
Be extra careful with output schemas. Validation on the output side is deliberately fail-soft: a wrong output schema still returns usable data to the caller and only logs a warning to stderr. A mistake here does not show up as a visible failure to anyone using the server.
This repo's unit tests run against a mock and can't catch that kind of drift —
the mock fabricates responses that match whatever the schema says, so it can't
tell you the schema itself is wrong. The only check that verifies these schemas
against the real API is a conformance suite that lives in the API repo
(npm run mcp:verify). Pair any release that touches src/tools.ts with a run
of it.
Environment
Variable | Required | Description |
| Yes | Workspace-scoped API key (Dashboard → Settings → API keys). |
| Yes | Base URL of your Stet deployment, e.g. |
License
MIT — see LICENSE.
Available Tools
22 toolsadd_blockA
Append a content block to a broadcast. Block types map to Slack Block Kit (section, header, divider, image, context, actions, rich_text_list, fields). For composing a whole broadcast body, prefer set_broadcast_content (Markdown in, blocks out).
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | ||
| content | Yes | ||
| position | No | ||
| broadcast_id | Yes | ||
| audience_visibility | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It states 'Append a content block', implying a mutation (adding to the broadcast), but lacks details on ordering, state requirements (e.g., draft vs. sent), or effects on existing blocks. The mention of block types mapping to Slack Block Kit is helpful but not enough for higher score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. The first sentence states the primary action; the second adds usage guidance and block type context. Information is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description does not mention return values or success/error states. With 5 parameters (3 required), it omits guidance on optional parameters like 'position' and 'audience_visibility'. Given the complexity of block composition, more detail on behavior and response is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters, so the description must compensate. It clarifies the 'type' parameter by mapping to Slack Block Kit, but provides no meaning for 'content', 'position', 'audience_visibility', or 'broadcast_id'. The 'position' parameter is especially unclear given the 'Append' verb. Description adds minimal value beyond type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Append a content block to a broadcast' with a specific verb and resource. It also references Slack Block Kit types and distinguishes itself from the sibling 'set_broadcast_content' by specifying a different use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides guidance: 'For composing a whole broadcast body, prefer set_broadcast_content (Markdown in, blocks out).' This tells the agent when to use this tool versus the alternative, fulfilling the usage guidelines dimension thoroughly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_broadcastB
Cancel a scheduled or in-flight broadcast. Already-posted messages remain posted.
| Name | Required | Description | Default |
|---|---|---|---|
| broadcast_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It adds that already-posted messages remain, but omits details about permissions, reversibility, error states, or what happens to scheduled vs in-flight broadcasts differently. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no unnecessary words. However, it could be slightly expanded to include parameter context without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter, no output schema, and no annotations, the description is too minimal. It lacks information about the broadcast_id parameter, return values, error conditions, and prerequisites. More context is needed for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required parameter (broadcast_id) with no description in the schema or JSON (0% coverage). The description does not explain what broadcast_id is, how to obtain it, or its format. The parameter is left completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (cancel) and the resource (broadcast), and distinguishes between scheduled/in-flight vs already-posted messages. It is specific and differentiates from sibling tools like schedule_broadcast and send_broadcast_now.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (to cancel a broadcast), but does not provide explicit guidance on when not to use it or mention alternatives. Given the straightforward nature of cancellation, it is adequate but lacks context relative to the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_audienceA
Create a saved audience from an explicit list of channel ids. Accepted channels the bot hasn't joined come back in warnings (code bot_not_in_channel) — surface them to the operator; sends to those channels fail until the bot is added.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| channel_ids | Yes | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that channels the bot hasn't joined return warnings with code 'bot_not_in_channel' and that sends to those channels fail. This adds significant behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with purpose, and every sentence adds value. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description partially explains return behavior (warnings) but does not specify the full return structure (e.g., audience ID). It also lacks prerequisites or side effects. Adequate but incomplete for a creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description does not explain individual parameters beyond mentioning 'explicit list of channel ids'. The 'name' and 'description' parameters have no added meaning. The description does not compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a saved audience from an explicit list of channel IDs, using a specific verb and resource. It distinguishes itself from siblings like 'list_audiences' or 'suggest_audiences' by focusing on explicit IDs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have an explicit list of channel IDs but does not explicitly state when to prefer this over alternatives like 'suggest_audiences'. No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_broadcastA
Create a draft broadcast with a title and sending profile. Target audiences are optional at creation — use set_one_time_channels afterwards for ad-hoc targeting. Returns the new id.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| audience_ids | No | ||
| sending_profile_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool creates a 'draft' broadcast and returns a new id. While it doesn't detail authorization or idempotency, the behavior is clearly a safe creation action. Adequate for a simple tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, no wasted words. Efficient and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with no output schema, the description covers required and optional inputs, the return value, and a pointer to a related sibling tool. It is fully adequate for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds meaning by naming the title and sending profile, and stating that audience_ids is optional. It also references a sibling tool for setting channels, providing context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (create a draft broadcast) and identifies the required inputs (title and sending profile). It also distinguishes the tool from siblings by noting that target audiences are optional and that ad-hoc targeting should use set_one_time_channels.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: target audiences are optional at creation, and if needed, use the sibling tool set_one_time_channels for ad-hoc targeting. This tells the agent when and how to use this tool versus an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_sending_profileC
Create a sending profile with a display name, avatar, footer, and optional default audiences.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| avatar_url | No | ||
| description | No | ||
| footer_text | No | ||
| display_name | Yes | ||
| default_audience_ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'Create,' implying a write operation, but with no annotations, it lacks critical behavioral details. It does not mention idempotency, error handling, authorization requirements (e.g., whether the user needs specific permissions), or what happens if a profile with the same name exists. For a creation tool, these omissions hinder agent judgment.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words, achieving conciseness. It front-loads the core action and key components. However, it sacrifices completeness for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, no output schema, and zero annotations, the description is far from sufficient. It fails to explain the return value (e.g., the created profile object), validation rules, side effects, or how the tool fits into a typical workflow (e.g., creating a sending profile before sending broadcasts). The agent would need to guess these details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description only covers 3 of 6 parameters: display_name (as 'display name'), avatar (presumably avatar_url), footer (footer_text), and default_audience_ids (as 'optional default audiences'). It omits the required 'name' parameter entirely and the optional 'description' field. With 0% schema description coverage, the description should compensate but falls short.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a resource ('sending profile') and lists included components (display name, avatar, footer, optional audiences). It distinguishes from siblings like list_sending_profiles by focusing on creation. However, it does not explain what a sending profile is used for, leaving some ambiguity about its role in the broader system.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention that users should first create audiences via create_audience if they want to set default_audience_ids, or that listing profiles might be needed before creation to check for duplicates. The tool is presented in isolation without context for its appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_broadcast_reactionsA
Emoji reaction totals for a sent broadcast, aggregated overall, by emoji, and by channel. Only reactions on messages Stet itself posted are counted. Results are limited to the workspace plan's retention window.
| Name | Required | Description | Default |
|---|---|---|---|
| broadcast_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral details. It explains the scope (only reactions on Stet's messages and limited to retention window), but does not cover error behavior, auth requirements, or response format, leaving gaps for a safe read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and well-structured: the first sentence states the core purpose, followed by two clarifying constraints. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with one parameter and no output schema, the description covers the key aspects: aggregation levels, scope limitation, and retention window. However, it does not mention pagination or error cases, which are minor gaps given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage for the single parameter broadcast_id. The description does not explain what broadcast_id is, its format, or how to obtain it, providing minimal guidance beyond the schema's existence.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides emoji reaction totals aggregated by overall, emoji, and channel, specifying that only reactions on Stet's own messages are counted, which distinguishes it from other tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks guidance on when to use this tool versus siblings like get_broadcast_replies or get_broadcast_sends. No explicit when-to-use or when-not-to-use information is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_broadcast_repliesA
In-thread replies to a sent broadcast, newest first, with the replier's display name and a Slack permalink. Optionally filter to one channel with slack_channel_id. Results are limited to the workspace plan's retention window.
| Name | Required | Description | Default |
|---|---|---|---|
| broadcast_id | Yes | ||
| slack_channel_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses ordering, included fields, optional filtering, and retention limit. No annotations provided, so description carries the burden well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, concise and front-loaded with key info. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, describes essential return fields (display name, permalink) and ordering. Could mention pagination but adequate for simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
0% schema description coverage; description explains broadcast_id is required and slack_channel_id is optional, but no further details like format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it retrieves in-thread replies to a sent broadcast, ordered newest first, with display name and permalink. Distinct from sibling tools like get_broadcast_reactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tells when to use (get replies) and mentions optional filtering. No explicit when-not-to-use, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_broadcast_sendsA
Per-channel delivery results for a sent broadcast: status, error message, Slack permalink, and reply/reaction counts per channel, plus a delivered/failed/pending summary. Use this to answer 'did it land?' — get_broadcast_status returns the draft's content, not its delivery.
| Name | Required | Description | Default |
|---|---|---|---|
| broadcast_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. Discloses it returns delivery data for sent broadcasts, implying read-only behavior. Does not mention permissions or limitations, but covers key behavioral aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently convey content and usage. First sentence enumerates returned fields, second sentence provides usage context and sibling distinction. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a single parameter and no output schema, the description adequately lists returned fields. Could mention the return structure more explicitly (e.g., array of channels), but the phrase 'per-channel' suffices. Overall sufficient for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explicitly describe the broadcast_id parameter. While the tool name and context make it obvious, the description adds no additional meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns per-channel delivery results including status, error message, Slack permalink, reply/reaction counts, and a summary. It differentiates from sibling get_broadcast_status which returns draft content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this to answer 'did it land?'' and contrasts with get_broadcast_status, providing clear when-to-use guidance and distinguishing from a sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_broadcast_statusA
Return a broadcast's row plus its target audiences and content blocks. This is the broadcast's CONTENT and lifecycle state — it does NOT include delivery results; use get_broadcast_sends for delivery status.
| Name | Required | Description | Default |
|---|---|---|---|
| broadcast_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It describes the return content and explicitly states what is not returned, adding behavioral context. However, it does not mention prerequisites (e.g., broadcast existence) or error conditions, but for a simple read operation, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. The first sentence states the primary purpose, and the second provides a crucial exclusion. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 param, no output schema, no annotations), the description is fairly complete. It states what is returned and what is not, distinguishing from a key sibling. It could benefit from mentioning the return format or structure, but it covers essential context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the single parameter broadcast_id. The description implies its usage by saying 'Return a broadcast's row,' which adds meaning beyond the schema's minimal type definition. It compensates for the lack of schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool returns a broadcast's row, target audiences, and content blocks. It explicitly distinguishes from sibling get_broadcast_sends by noting what it does not include, making the purpose specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear alternative: 'use get_broadcast_sends for delivery status.' This tells the agent when to use this tool versus a sibling, which is excellent guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_audiencesA
List saved audiences (named sets of channels) in this workspace.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states that the tool lists audiences, with no disclosure about pagination, ordering, filtering, authentication needs, rate limits, or any side effects. This is insufficient for an agent to fully understand the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that delivers the essential information without any redundant or unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple list-all tool with no parameters and no output schema, but it lacks details about the return format (e.g., list of audience IDs, names, or objects), any ordering, or potential limitations (e.g., maximum return size). Given the tool's simplicity, it meets the minimum but could be more helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so parameter documentation is not needed. The description does not add any parameter meaning, but since there are no parameters, a baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List'), the resource ('saved audiences'), and the context ('in this workspace'). It also defines what audiences are ('named sets of channels'), distinguishing it from sibling tools like create_audience (creation) and suggest_audiences (suggestion).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to list all saved audiences but provides no explicit guidance on when to use it versus alternatives like suggest_audiences or list_channels. No 'when not to use' or alternative tool mentions are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_broadcastsA
List this workspace's broadcasts, newest first, with status, audience/channel counts, send time, and a one-line content preview. Optionally filter by status. Use this to find a broadcast's id before calling the engagement tools.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, description carries full burden. It discloses ordering (newest first), returned fields, and scope (workspace). No destructive behavior indicated; safe read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first describes output, second gives use case. No wasted words, front-loaded with key info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers essential aspects: what is returned, ordering, optional filter, and primary use case. Lacks pagination details or explicit workspace scope, but sufficient for a simple list tool with no output schema and few parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has one optional array parameter with enum. Description mentions 'Optionally filter by status', adding that it's optional, but does not detail enum values or usage. Schema description coverage is 0%, so description adds moderate value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists broadcasts with specific fields (status, counts, send time, preview) and optional filtering, distinguishing it from siblings like preview_broadcast and get_broadcast_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Use this to find a broadcast's id before calling the engagement tools', giving a clear use case. However, lacks explicit when-not-to-use or alternatives, though implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_channelsB
List Slack channels in the connected workspace. Supports a free-text query and structural filters.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| filter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for behavioral disclosure. It only states 'list' which implies read-only, but lacks details on pagination, rate limits, access scopes, or what constitutes a 'channel' (public vs private).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no redundant information. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and simple parameters, the description provides the core function but lacks details on return value structure, sorting, or limitations. Adequate but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description compensates minimally by stating 'free-text query' and 'structural filters' with properties has_bot and is_private. However, it does not explain input format or effects, leaving ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (list), resource (Slack channels), and scope (connected workspace). Mentions free-text query and structural filters, distinguishing it from sibling tools that deal with broadcasts or audiences.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs. alternatives, or when not to use it. Does not specify prerequisites or context where this tool would be preferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sending_profilesA
List sending profiles (sender identities) configured in this workspace.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It only says 'list', which implies read-only, but misses behavioral traits like pagination, permissions, or ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that efficiently conveys the tool's purpose with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and a simple list operation, the description is adequate. No output schema exists, but it is not critical for a basic list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and 100% schema coverage, so no additional parameter explanation is needed. Baseline for 0 params is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and the resource 'sending profiles (sender identities)', and it is distinct from sibling tools like 'create_sending_profile'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives, though the sibling context implies usage for viewing existing profiles. Lacks when-not or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_broadcastB
Render the per-audience Slack Block Kit array as it will be delivered to channels in that audience.
| Name | Required | Description | Default |
|---|---|---|---|
| audience_id | Yes | ||
| broadcast_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It indicates a non-destructive preview, but lacks details on required permissions, rate limits, or output format. Basic disclosure is present but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with no redundancy. Front-loads the action. Could be slightly more precise but is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 0% schema coverage, no output schema, and many sibling tools, the description is insufficient. It lacks usage guidelines, parameter explanations, and behavioral details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no meaning to the two parameters beyond the schema. Schema coverage is 0%, and the $ref in audience_id is unclear. Parameter roles are not explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Render the per-audience Slack Block Kit array as it will be delivered', specifying a concrete action on a specific resource. It distinguishes itself from siblings like validate_broadcast or send_broadcast_now.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for previewing before sending, but provides no explicit when-to-use or when-not-to-use guidance, nor alternatives among the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reorder_blocksA
Reorder the blocks in a broadcast by providing the full block-id list in the new order.
| Name | Required | Description | Default |
|---|---|---|---|
| block_ids | Yes | ||
| broadcast_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It only states what the tool does without disclosing side effects, constraints (e.g., must include all existing blocks), error behavior, or required permissions. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 17 words, front-loaded with action. No unnecessary words or fluff. Efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is simple with 2 params and no output schema. Description covers purpose and parameter intent but lacks behavioral details like return values, error conditions, or prerequisites. Adequate but not fully complete given the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage. Description adds meaning for 'block_ids' (full list in new order) but does not explain 'broadcast_id'. While broadcast_id is somewhat obvious, more detail would help. The description provides some added value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly specifies the action (reorder), the resource (blocks in a broadcast), and the method (providing full block-id list in new order). It distinguishes from siblings like add_block or set_block_visibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (to change block order) but does not explicitly state when not to use it or mention alternatives. The usage is clear but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_broadcastA
Schedule the broadcast to send at the given ISO timestamp + timezone. Requires Idempotency-Key.
| Name | Required | Description | Default |
|---|---|---|---|
| send_at | Yes | ||
| timezone | Yes | ||
| broadcast_id | Yes | ||
| idempotency_key | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions the requirement of an Idempotency-Key, which is a behavioral requirement. However, it does not disclose other behavioral traits like state changes, rescheduling capability, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, 13 words, front-loaded with the main action and then a key requirement. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters, 0% schema coverage, and no output schema, the description covers the core but lacks details on return values, prerequisites, error conditions, and timezone format requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description must compensate. It mentions 'ISO timestamp + timezone' for send_at and timezone parameters, and 'Idempotency-Key' for idempotency_key. However, it does not explain broadcast_id or provide format details for timezone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool schedules a broadcast to send at a given ISO timestamp with timezone. It distinguishes from siblings like 'send_broadcast_now' which sends immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use vs alternatives. It does not mention prerequisites (e.g., broadcast must be in draft state) or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_broadcast_nowA
Send the broadcast immediately. Requires Idempotency-Key. If the broadcast is already scheduled, this returns 409 listing the pending send time — retry with confirm: true to cancel that scheduled run and send now instead. Only pass confirm after the operator has agreed to discard the schedule; never set it pre-emptively.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| broadcast_id | Yes | ||
| idempotency_key | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behaviors: idempotency requirement, conflict handling (409), schedule cancellation via confirm. Does not mention success response or authorization, but covers main operational traits for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four concise sentences with front-loaded purpose. No verbose or redundant information; each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers key scenarios (immediate send, conflict, retry with confirm). Lacks success response details and additional error codes, but adequate for a 3-param tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, description adds meaning for confirm (cancel schedule) and idempotency_key (required). Broadcast_id is implied but not described explicitly. Partially compensates for low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Send' and resource 'broadcast' with immediate execution. Differentiates from siblings like schedule_broadcast by handling scheduled broadcasts and requiring idempotency.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes when to use (send now), conflict behavior (409 with pending time), and retry with confirm. Warns against pre-emptive use of confirm, providing clear when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_block_visibilityA
Restrict a block's visibility to a subset of the broadcast's target audiences. Empty array = visible to all.
| Name | Required | Description | Default |
|---|---|---|---|
| block_id | Yes | ||
| audience_ids | Yes | ||
| broadcast_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must handle transparency. It discloses the empty array behavior (visible to all), which is valuable, but omits other critical behaviors like whether the call overwrites previous visibility settings, requires specific permissions, or has side effects on existing blocks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with a clarifying clause, perfectly front-loaded. Every word earns its place, no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 required parameters and no output schema or annotations, the description is too brief. It lacks details on whether visibility settings are incremental, how to revert to default, or what happens on repeated calls. More context is needed for a mutation tool like this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It adds meaning for 'audience_ids' (empty array = visible to all), but does not explain 'broadcast_id' or 'block_id'. The description provides partial semantic guidance but not enough to fully understand the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'restrict' and resource 'block's visibility', clearly stating the action and scope (subset of broadcast's target audiences). It distinguishes the tool from siblings like 'add_block' or 'set_broadcast_content', which deal with different aspects of broadcast creation. The empty array behavior is explicitly clarified.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for restricting visibility but does not explicitly state when to use this tool versus alternatives like 'add_block' or any other visibility-related tool among siblings. No exclusions or scenarios are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_broadcast_contentA
Compose (or replace) a broadcast's entire content from Markdown — a single markdown string, or segments targeted at specific audiences. Returns the resulting blocks.
| Name | Required | Description | Default |
|---|---|---|---|
| markdown | No | ||
| segments | No | ||
| broadcast_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that the tool replaces content (destructive) and returns blocks, but it does not address prerequisites (e.g., broadcast must exist, be in draft state), side effects, permissions, or error conditions. The behavioral detail is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two sentences: the first states the primary action with key alternatives, and the second notes the return value. No unnecessary information. Front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (two modes: markdown and segments), 0% schema coverage, no output schema, and no annotations, the description provides an adequate overview of functionality. However, it lacks detail on parameters (especially audience_ids) and prerequisites, making it minimally complete for an agent to fully understand invocation requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add meaning to parameters. It explains that 'markdown' and 'segments' are alternative ways to provide content, and that 'segments' are targeted at audiences. However, it does not describe the 'broadcast_id' parameter or the 'audience_ids' within segments. Partial but helpful coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the verb 'Compose (or replace)' and the resource 'a broadcast's entire content', which clearly distinguishes it from sibling tools like add_block that operate on individual blocks. The mention of 'entire content' confirms it sets the full content rather than appending.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage is for setting a broadcast's content from Markdown, but it does not explicitly contrast with alternatives like add_block or mention when not to use it (e.g., if content already exists and only needs partial changes). No when-to-use or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_one_time_channelsA
Target a draft broadcast at an ad-hoc set of channels without creating a saved audience. Replaces the whole one-time group each call; an empty channel_ids list deletes it. Draft-only. Channels the bot hasn't joined come back in warnings — sends to those fail until Stet is added.
| Name | Required | Description | Default |
|---|---|---|---|
| channel_ids | Yes | ||
| broadcast_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses full behavioral traits: it replaces the entire one-time group, empty list deletes it, and unjoined channels produce warnings with failed sends. No annotations exist, so the description carries the burden and does so thoroughly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, each adding essential information: purpose, replacement/deletion behavior, and warning behavior. No unnecessary words; front-loaded with the primary action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with no output schema, the description covers all critical aspects: purpose, usage constraints (draft-only), behavioral details (replaces, deletes), and side effects (warnings). The agent can correctly select and invoke the tool without ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema coverage, the description adds rich semantic context: it explains channel_ids as an ad-hoc set, the replacement behavior, and the special case of empty list deleting the group. broadcast_id is implied as the draft broadcast. This far exceeds the baseline requirement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool targets a draft broadcast at an ad-hoc set of channels, distinguishing it from creating a saved audience or other broadcast operations. It specifies 'Draft-only', which differentiates it from send-related siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates when to use (for draft broadcasts, one-time channel targeting) and that it replaces the whole group each call. It lacks explicit exclusions or alternatives, but the context is clear enough for an AI to infer proper usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_audiencesA
Heuristic suggestion of audiences based on channel-name patterns.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description mentions 'heuristic' implying non-deterministic behavior, but does not disclose safety, failure modes, or boundaries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no unnecessary words; perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so description should hint at output format. It does not explain what the suggestion result looks like, leaving some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the schema covers 100%. The description adds no parameter information beyond the schema, but baseline for zero parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool suggests audiences heuristically based on channel-name patterns, using a specific verb and resource, and distinguishes from sibling tools like list_audiences and create_audience.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks explicit guidance on when to use this tool versus alternatives like list_audiences or create_audience, but it is not misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_broadcastC
Check the broadcast for channel-overlap conflicts (same channel in multiple audiences whose visible blocks differ).
| Name | Required | Description | Default |
|---|---|---|---|
| broadcast_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description does not disclose side effects, return format, or error behavior. The word 'Check' suggests read-only but doesn't confirm lack of mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no fluff, efficient. However, slightly too terse; could add context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a validation tool with 1 param and no output schema, the description lacks return value details, error conditions, and behavioral context. Incomplete for agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no meaning beyond the input schema; it does not explain the singular parameter broadcast_id. Schema description coverage is 0%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks for channel-overlap conflicts in broadcasts, with a specific use case. It distinguishes from siblings like preview_broadcast or create_broadcast by focusing on validation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives, no prerequisites or order of operations mentioned. The description only implies validation before sending but doesn't make it explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
22 tool updates
v0.1.3- First observed
add_block - First observed
cancel_broadcast - First observed
create_audience - First observed
create_broadcast - First observed
create_sending_profile - First observed
get_broadcast_reactions - First observed
get_broadcast_replies - First observed
get_broadcast_sends - First observed
get_broadcast_status - First observed
list_audiences - First observed
list_broadcasts - First observed
list_channels - First observed
list_sending_profiles - First observed
preview_broadcast - First observed
reorder_blocks - First observed
schedule_broadcast - First observed
send_broadcast_now - First observed
set_block_visibility - First observed
set_broadcast_content - First observed
set_one_time_channels - First observed
suggest_audiences - First observed
validate_broadcast
TDQS
Scored across 22 tools
Each tool has a clearly distinct purpose. Broadcast creation has separate tools for adding blocks, setting content, targeting channels, visibility, reordering, and validation. Read-only tools distinguish between status, sends, reactions, and replies. No two tools overlap in functionality.
All tool names follow a consistent verb_noun pattern using snake_case (e.g., list_channels, create_broadcast, set_broadcast_content). Even preview_broadcast fits this pattern. No mixed conventions or inconsistent styles.
With 22 tools, the server covers the full broadcast lifecycle from audience management to content composition, scheduling, sending, and analytics. The count matches the domain's complexity without being excessive or minimal.
The broadcast lifecycle is well-covered: create, compose, target, validate, schedule, send, cancel, and retrieve results. However, auxiliary entities like audiences and sending profiles lack update or delete tools, which is a minor gap.
Maintenance
Related MCP Connectors
Agent communication platform for agent to agent messaging via MCP. Messages, channels, skills.
Agent-to-agent messaging: directory, public lobby, DMs, channels, search. Stateless MCP + REST.
Enable interaction with Slack workspaces. Supports subscribing to Slack events through Resources.
Manage SRG+ hubs, channels, content, assets, users, and workspaces from any MCP-aware AI agent.
Related MCP Servers
- AlicenseAqualityFmaintenanceEnables bidirectional communication between MCP clients and Slack, allowing users to receive task notifications and respond to AI inquiries directly within Slack threads. It supports various urgency levels, message threading, and interactive question-and-answer workflows.3MIT
- AlicenseNot gradedqualityBmaintenanceEnables building AI-powered Slack apps using the Slack MCP server and OpenAI models for automated messaging and canvas creation.14MIT
- AlicenseNot gradedqualityBmaintenanceEnables MCP-compatible clients to interact with Slack through Web API tools and subscribe to inbound Slack messages via Socket Mode notifications.31 npm2MIT
- AlicenseNot gradedqualityDmaintenanceProvides a standardized interface for interacting with Slack's tools and services through a unified API, enabling integration with MCP-compliant applications.MIT