Skip to main content
Glama

rabbitmq_queue_backlog_rca

Read-only

Rank backlogged RabbitMQ queues by depth, classify each cause (no consumers, unacked pileup, publish outpacing delivery, residual), and return matching fixes plus watermark alarms.

Instructions

[READ] Rank backlogged queues and map each to a cause + action.

The flagship backlog RCA: flags queues over the backlog threshold and classifies each — no consumers attached, unacked pileup (consumers not acking), publish rate outpacing delivery, or residual backlog — plus global memory/disk watermark alarms that block every publisher via flow control. Every finding carries its numbers. Pass 'queues' (and optionally 'nodes') for pure analysis, or a target to pull live.

Args: vhost: Restrict the live pull to one vhost; omit for all. top: How many queue rows to return, deepest first (default 20). queues: Injected rows {name, vhost, messages, messagesReady, messagesUnacked, consumers, publishRate, deliverRate, state}. nodes: Injected node_health rows {name, memAlarm, diskAlarm, ...}. target: rabbitmq target name from config; omit for the default.

Returns dict: {queuesEvaluated, backloggedCount, globalFindings, queues:[{name, vhost, messages, consumers, cause, action, ...}], thresholds, note}.

Input Schema

NameRequiredDescriptionDefault
topNo
nodesNo
vhostNo
queuesNo
targetNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.6.0

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only supply readOnlyHint=true, but the description goes well beyond that: it enumerates the classification causes (no consumers, unacked pileup, publish outpacing delivery, residual backlog), discloses global memory/disk watermark alarms that block publishers via flow control, and states that every finding carries its numbers. This is rich behavioral context about what the analysis actually detects.

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?

Front-loads the one-line purpose and the flagship framing before the Args/Returns blocks, and every section earns its place. The explanatory paragraph is dense but informative rather than redundant; slight length is the only blemish.

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?

With no output schema, the description supplies the return shape itself ({queuesEvaluated, backloggedCount, globalFindings, queues:[...], thresholds, note}), covers all params, and describes the detection logic. An agent has everything needed to call and interpret the tool.

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 description coverage is 0% and all five params are undocumented in the schema, so the description carries the full burden — and it does: vhost (restrict live pull, omit for all), top (row count, default 20, deepest first), queues and nodes (with the exact injected row field shapes), and target (config target, omit for default). This fully compensates for the coverage gap.

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 ('Rank backlogged queues and map each to a cause + action') and immediately positions itself as the 'flagship backlog RCA', which distinguishes it from plain listing siblings like list_queues, queue_overview, and queue_detail. An agent can tell what it does and why it exists without opening the schema.

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

Usage Guidelines4/5

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

Explicitly defines the two invocation modes: 'Pass queues (and optionally nodes) for pure analysis, or a target to pull live', plus vhost scoping. It gives clear context for how to call the tool, but never names a sibling alternative (e.g. queue_detail) or states when NOT to use this RCA over them.

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