Skip to main content
Glama

Get channels

get_channels
Read-onlyIdempotent

Where anything the product wants to tell this person goes: the four channels, their own switches for the personal two, and the account's Slack and Discord connections.

scope distinguishes them. personal — in-app, email — fans out one delivery per recipient. shared — Slack, Discord — delivers once per firing, because posting the same message to the same channel once per team member is the same message five times.

delivers is the honest answer to whether anything is actually sent. Only in-app is true: the rest record deliveries and queue them, and no job drains any of them yet.

A connection's webhook URL is never returned. webhook_hint is masked — enough to recognise which webhook it is, useless to anyone who reads it.

Per-tool thresholds are not here, and neither is the weekly digest. Both need a scope, so they live on a specific MCP — see list_alerts and get_digest.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
channelsYesThe catalogue, so a caller never has to hold a second copy of it.
connectionsYesThe account's shared connections, at most one per kind. Connecting them is admin-only and lives in the dashboard.
preferencesYesThis person's own switches, for the personal channels. Their half of delivery — an alert rule is the server's half, and a notification arrives only where the two agree.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds substantial behavioral context beyond that: the 'delivers' field is framed as 'the honest answer' with the warning that only in-app actually sends while the rest queue with no draining job, webhook URLs are never returned and webhook_hint is masked intentionally, and fan-out semantics differ by scope (personal = once per recipient, shared = once per firing). This is exactly the kind of non-obvious behavior a caller must know.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but every sentence carries distinct information with no filler: inventory, scope semantics, delivery honesty, security masking, then exclusions. The logical ordering is strong, and the length is justified by the subtlety of the domain. Minor deduction for the indirect opening line, which delays the concrete subject.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool takes zero parameters and has an output schema, so the remaining burden is conceptual — and the description covers everything: the four-channel model, why scope matters for delivery behavior, the misleading 'delivers' field, the webhook masking constraint, and where excluded data (thresholds, digest) lives. Nothing an agent needs to invoke or interpret this tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters, the baseline is 4, and the description exceeds it by defining the semantics of the returned concepts: 'scope' as the distinguisher, 'delivers' as the truthful send-status indicator, and 'webhook_hint' as a masked identifier. An agent can correctly interpret the response rather than misreading fields like 'delivers' as actual delivery.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description never uses an explicit retrieval verb ('returns', 'lists'), but it exhaustively characterizes the resource — the four channels, their scopes, and the Slack/Discord connections — making the purpose unmistakable. It also distinguishes itself from siblings by exclusion, stating that thresholds and the weekly digest are not here. The metaphorical opening ('Where anything the product wants to tell this person goes') is informative but less direct than a standard verb+resource formulation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes to alternatives: 'Per-tool thresholds are not here, and neither is the weekly digest... see list_alerts and get_digest.' It names both siblings and the reason they exist elsewhere (they require a scope). An agent knows exactly when this tool is the wrong choice and which sibling to select instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources