Skip to main content
Glama

List alerts raised by alerting monitors

malcolm_alerting_alerts
Read-only

Get fired OpenSearch alerting alerts in any lifecycle state, with filters for search text, severity, and monitor id. Use to see what happened overnight rather than what monitors are watching.

Instructions

Read what OpenSearch alerting monitors have actually fired, in any state.

    Use this for "what fired overnight". malcolm_alerting_monitors lists the
    standing rules and counts only ACTIVE alerts, so a monitor that fired and
    then recovered — state COMPLETED — is invisible there, as are the
    per-monitor, per-severity and free-text filters. That tool answers "what
    is being watched", this one answers "what happened". These are OpenSearch
    alerting alerts, a different mechanism from Suricata's IDS alerts: for
    those use malcolm_alerts. To read the rule behind an alert, take its
    monitor id to malcolm_alerting_monitor_detail.

    alert_state and severity are validated here rather than passed through:
    measured on Malcolm v26.07.1, an unknown alertState or severityLevel answers
    200 with an empty list rather than 400, so a typo would look exactly like
    a quiet night.

    Returns JSON {"total", "showing", "alerts"} with each alert as the
    plugin sends it — monitor id and name, trigger name, state, severity and
    the start/end/acknowledged timestamps. An empty list is a successful
    answer and a common one, since no alert can exist while every monitor is
    disabled.
    

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
searchNoFree-text match across the alert fields (monitor name, trigger name). Empty = no text filter.
severityNoKeep only alerts whose trigger is configured at this severity, "1" (highest) through "5". This is the level a human set on the trigger, not a score computed from the traffic. Empty = any.
monitor_idNoKeep only one monitor's alerts, using the `id` malcolm_alerting_monitors returns (not the monitor name). Empty = every monitor.
alert_stateNoLifecycle state to return: ALL (default), ACTIVE (firing now), ACKNOWLEDGED (an analyst has seen it, still firing), COMPLETED (fired and has since recovered — the overnight history), ERROR (the monitor itself failed to run), DELETED (the alert outlived the monitor that raised it — a state to read, nothing here removes anything). Case-insensitive.ALL

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
Behavior5/5

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

Despite annotations already indicating readOnly/openWorld/non-destructive, the description adds critical behavioral details: unknown alertState/severity return 200 with an empty list rather than 400 (measured on v26.07.1), and an empty list is a successful, common answer. This prevention of false-negative interpretation goes well beyond the 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 description is longer than average, but each sentence earns its place: purpose, sibling differentiation, validation caveat, return format, and empty-list explanation are all essential. It is front-loaded with the core purpose and structured in readable paragraphs, though it could be tightened by removing the explicit 'Returns JSON' sentence since an output schema exists.

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?

Given the tool has 4 optional parameters, 100% schema coverage, an output schema, and annotations, the description adds all necessary context: return format, empty-list semantics, validation quirk, and clear sibling differentiators. The agent has everything needed to select and invoke this tool correctly, including edge cases that could cause false empty results.

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?

Though schema description coverage is 100%, the description enriches the parameters: severity means the human-set level on the trigger (not a computed score), monitor_id must use the `id` returned by malcolm_alerting_monitors (not the name), and alert_state is explained with lifecycle meanings (e.g., DELETED means alert outlived monitor). This added context prevents misuse.

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?

The description opens with a specific verb+resource: 'Read what OpenSearch alerting monitors have actually fired, in any state.' It clearly distinguishes this tool from siblings by contrasting with malcolm_alerting_monitors (standing rules, ACTIVE only) and malcolm_alerts (Suricata IDS), so the agent knows exactly which tool matches which intent.

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?

The description gives explicit usage context: 'Use this for "what fired overnight"' and then spells out what each sibling tool does instead. It also mentions when a monitor never fires (empty results when monitors disabled), and directs to malcolm_alerting_monitor_detail for rule details, covering both when-to-use and when-not-to-use.

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

Install Server

Other Tools

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/nagameTW/mcp-server-malcolm'

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