Skip to main content
Glama
OpenCDR MCP

OpenCDR MCP

Official
by dbnz-io

opencdr_detections_query

Read-onlyIdempotent

Query indexed signals and correlations by filters such as status, severity, dates, agents, and source; return bounded counts or summaries with cursor pagination and no writes.

Instructions

Query indexed signals/correlations, or bounded counts, in the configured owner.

Fleet mode reads Fleet's central index without live member fanout. Core mode reads the selected Core. Inclusive dates filter Core commit time, max 90 days. Cursors bind the filters and expire after one hour. Empty pages may have more results; inspect next_token, coverage and (for summaries) complete. A summary with complete=false is a lower bound, never a proven fleet total. No ACK/write.

In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "opencdr_detections_query"
  }
}

Input Schema

NameRequiredDescriptionDefault
kindNo
limitNo
sourceNo
statusNo
date_toNo
rule_idNo
summaryNo
agent_idsNo
date_fromNo
next_tokenNo
severitiesNo
account_idsNo
dispositionNo
has_incidentNo
integration_idNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.3.0

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered; the description adds operational traits beyond that: 90-day inclusive date bound, cursors bound to filters and expiring after one hour, possibly-empty pages with more results, and the critical caveat that complete=false is a lower bound rather than a proven fleet total. These are exactly the correctness caveats an agent needs. Auth/permission requirements and rate limits are still unstated.

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-loaded with the core action, then modes, then constraints, then pagination caveats — a sensible order. Sentences are dense but each carries distinct information (date bound, cursor expiry, lower-bound semantics). The trailing mode note could have been folded into the earlier mode sentence rather than repeated at the end.

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

Completeness3/5

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

With 15 optional parameters and no output schema, the description wisely documents the response side (next_token, coverage, complete) since structured fields cannot. However, it leaves most filter parameters undefined and is silent on default limit behavior and result ordering, which matters for a paginated query tool with this many knobs.

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

Parameters3/5

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

Schema description coverage is 0% across 15 parameters, so the description must carry the burden and only partially does: it explains date_from/date_to (inclusive, Core commit time, 90-day max), next_token (cursor binding and expiry), summary (bounded counts), kind (signal vs. correlation), and agent scoping. The remaining filters (limit, source, status, rule_id, severities, account_ids, disposition, has_incident, integration_id) get no semantic help. Note also that the description says 'agent_id' while the schema parameter is 'agent_ids' (array), which could confuse scoping calls.

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 opening sentence names a specific verb and resource set: 'Query indexed signals/correlations, or bounded counts, in the configured owner.' It also clarifies the two operating modes (fleet vs. core) and explicitly rules out writes ('No ACK/write'), which helps separate it from handling/acknowledgment siblings. It stops short of naming a specific alternative tool for acknowledgement or live fanout.

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?

It gives concrete selection rules: fleet mode reads the central index without live member fanout and requires agent_id set explicitly, while core mode leaves agent_id unset. That is real when-to-use guidance tied to the environment. It does not point to a sibling for cases this tool cannot serve (e.g., live member reads or acknowledgements).

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