Skip to main content
Glama

set_route

DestructiveIdempotent

Assign a monitor's event-type alerts to channel destinations, replacing the entire current set. Include existing channel IDs when adding to preserve them, or pass empty to remove all routing.

Instructions

Route a monitor's alerts for one event type to a set of destinations (channels). THIS REPLACES THE WHOLE SET for that event type — every destination you leave out stops receiving that event, including ones somebody else configured. CALL get_monitor FIRST and read its routes field: that is the monitor's current routing, and adding a destination means passing the existing ids PLUS the new one. Pass an empty channel_ids to remove all routing for the event. Destinations must be verified and enabled (email destinations must be confirmed first). Use list_destinations for IDs.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
event_typeYesOne of eight: down (alert opened), recovery (alert cleared), fail (explicit failure ping), every-run (one notification per completed run, success or failure), success (fires only when a run completes successfully), started (fires when a run begins), blocked (an agent reported it is waiting on a human — fires immediately, the moment the ping arrives; this is separate from the 'blocked' INCIDENT that opens later only if the wait outlives blocked_timeout_s, see create_monitor/update_monitor), note (a free-form annotation ping — never itself opens or clears an incident). Prefer down/recovery/fail: they fire only on a state change. every-run, success, started, and note are not state changes and are bounded only by how often the monitor runs (or how often the agent chooses to send them), so they can be very chatty, and none of them is flap-damped. started is the chattiest of the bunch for CI-fed monitors: GitHub maps both the workflow_run 'requested' and 'in_progress' webhook events to a start signal, so a single CI run can emit more than one started event — this was observed in production, where a real run logged two starts seconds apart. every-run, success, started, and note share one separate per-channel rate cap (60/hour by default), so together they can no longer use up the budget that down/fail/recovery/blocked need — but a chatty route on any one of the four can silently suppress its own notifications, and its sibling informational types' notifications, once it exceeds that shared cap. blocked is deliberately NOT in that shared group even though it is agent-reported rather than system-derived: a blocked agent needs a human, so it draws on the protected down/fail/recovery budget instead, precisely so it cannot be starved by chatty every-run/success/started/note traffic. Route informational types to a low-stakes destination, not to the one that pages someone.
monitor_idYesMonitor (check) UUID.
channel_idsNoComma-separated destination (channel) UUIDs to notify. Empty string clears the route.

Schema Changelog

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

  1. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, and the description amplifies them with concrete context: the whole set is replaced, destinations configured by others are silently dropped, empty channel_ids clears routing. It even discloses downstream behavioral nuances (rate caps, blocked's protected budget, GitHub double-starts), far exceeding what annotations convey. No contradiction with annotations.

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 main description is tightly front-loaded with the most critical fact (whole-set replacement) in caps, followed by prerequisites and edge cases. The event_type parameter text is long (~380 words), but nearly every sentence carries operational knowledge an agent needs to route safely; a small deduction for verbosity in the rate-cap explanation.

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?

For a destructive 3-parameter tool with no output schema, the description covers the action, the destructive semantics, preconditions (verified/enabled destinations, email confirmation), how to obtain IDs and current routing, clearing behavior, and deep guidance on event-type selection. Nothing an agent needs to invoke this 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?

Schema coverage is 100%, setting a baseline of 3, but the description adds substantial operational meaning beyond the schema: the event_type parameter is enriched with state-change vs. informational categorization, chatty-event rate-cap grouping, and the blocked-event budget rationale, which materially changes how an agent selects event types. The channel_ids semantics (pass existing IDs plus new one; empty string clears) are also spelled out beyond the schema's literal text.

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

Purpose5/5

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

States a specific verb+resource: 'Route a monitor's alerts for one event type to a set of destinations (channels).' This distinguishes it from siblings like get_monitor (reads routes), list_destinations (enumerates destinations), and update_monitor (monitor settings), by making the exact scope — one event type, full destination set — explicit.

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?

Gives explicit workflow directives: 'CALL get_monitor FIRST and read its routes field' and 'Use list_destinations for IDs.' It also warns against the partial-update mental model ('adding a destination means passing the existing ids PLUS the new one'), which functions as when-not-to-use guidance for a destructive replace operation.

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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tp322d/lastping-app'

If you have feedback or need assistance with the MCP directory API, please join our Discord server