OpenCDR MCP
OfficialThe provided schema exposes an observer-style, read-only OpenCDR MCP interface for inspecting status, rules, lists, signals, logs, settings, integrations/jobs, and IR metadata.
Check OpenCDR API health with
opencdr_status.List and get detection/correlation rules, with pagination.
List detection lists and show values for a specific list.
Search detection signals by one selector and paginate; get severity counts for a date range.
Search audit/CloudTrail logs by one selector and paginate.
Read parser catalog, integration bindings, and ingestion job diagnostics.
Read settings documents by ID.
List/get IR role mappings and executed IR actions, including rollback status.
All listed tools are read-only; this schema contains no write, configuration, response, rollback, or Fleet-specific tools.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@OpenCDR MCP check deployment status and show recent signals"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
OpenCDR MCP
The durable detection feed tool reads signals and correlated alerts from IAM-enabled Core 2.1 management contracts, directly or through a selected Fleet agent. It does not acknowledge or centrally index them.
opencdr-mcp exposes the OpenCDR management API as tools for MCP-compatible
clients. It is an optional client integration: OpenCDR Core detects and responds
to events without this package.
The server uses stdio transport. It connects directly to one Core agent, or to an optional Fleet Manager for multiple accounts. It requires no Core or Fleet Manager source checkout.
Version 0.3.0 adds direct Core IAM connections, scoped Fleet management, revision-guarded changes and reviewed durable rollouts. Start with the IAM connection guide for the new management model. It requires a Core release advertising the IAM management capabilities and Fleet Manager 0.2.0+. Older API-key connections remain a migration option.
Install
pip install opencdr-mcpFor isolated command-line installation, pipx is also supported:
pipx install opencdr-mcpRelated MCP server: Technitium DNS MCP
Connect through Fleet Manager
Fleet mode is available in OpenCDR MCP 0.2.0+. It uses IAM/SigV4 with a local AWS profile. The MCP stores no AWS access keys or Core API keys for this mode. Core remains authoritative for each agent's configuration and response execution.
Reuse an OpenCDR Deploy connection
First connect the deployed manager with OpenCDR Deploy 0.6.0+:
aws sso login --profile security-admin
opencdr-deploy fleet connect security-prod \
--url https://FLEET_API_ID.execute-api.us-east-1.amazonaws.com/prod \
--profile security-admin --security-account-id 111111111111 \
--region us-east-1 --stage prodReplace the URL and account ID with your CloudFormation outputs. Then configure your MCP server to use that saved manager:
export OPENCDR_CONNECTION_MODE=fleet
export OPENCDR_FLEET_NAME=security-prod
export OPENCDR_MCP_PROFILE=observer
opencdr-mcpThe MCP reads only the chosen fleet entry from
~/.config/opencdr/deployments.json. Set OPENCDR_DEPLOY_REGISTRY if you used a
custom CLI registry. The CLI package is not needed at MCP runtime. For a restricted
MCP identity, set OPENCDR_FLEET_AWS_PROFILE to your dedicated reader/operator AWS
profile instead of inheriting the administrative deployment profile. AWS IAM and
Core's management permissions enforce access; MCP profiles reduce tool exposure.
Claude Code example:
claude mcp add opencdr-fleet \
--env OPENCDR_CONNECTION_MODE=fleet \
--env OPENCDR_FLEET_NAME=security-prod \
--env OPENCDR_MCP_PROFILE=observer \
-- opencdr-mcpOne MCP server process connects to one fleet. Add another MCP entry with a different fleet name for another security account. Each tool invocation selects its Core agent explicitly; there is no process-wide mutable selected agent.
Configure a fleet without the CLI registry
Save this JSON as your OPENCDR_CONFIG_FILE (or the default MCP configuration):
{
"mode": "fleet",
"fleet": {
"url": "https://FLEET_API_ID.execute-api.us-east-1.amazonaws.com/prod",
"aws_profile": "fleet-reader",
"security_account_id": "111111111111",
"region": "us-east-1",
"stage": "prod"
}
}The URL must be the regional AWS execute-api URL, including its stage. Custom
manager domains and other AWS partitions are not currently supported. Environment
overrides are OPENCDR_FLEET_URL, OPENCDR_FLEET_AWS_PROFILE,
OPENCDR_FLEET_ACCOUNT_ID, OPENCDR_FLEET_REGION, and OPENCDR_FLEET_STAGE.
OPENCDR_CONNECTION_MODE overrides the configuration mode. Restart the MCP server
after changing its connection mode or capability profile.
In fleet mode, ambient OPENCDR_API_URL / OPENCDR_API_KEY values are ignored.
Manager identity and fleet contract are checked before requests. A missing agent,
invalid identity, unavailable manager or rejected IAM request fails the operation;
the MCP never falls back to a direct Core connection.
Choose an agent in each Core tool call
Call
opencdr_fleet_statusto verify the manager connection.Call
opencdr_fleet_agents_list; follownext_tokenfor every account.Use the returned
agent_idin any existing Core tool. Examples:
{"tool": "opencdr_rules_list", "arguments": {"agent_id": "member-prod", "kind": "signal"}}{"tool": "opencdr_settings_get", "arguments": {"agent_id": "member-prod", "setting_id": "global"}}Every existing Core tool accepts agent_id: rules, lists, signals, logs,
notifications, integrations/jobs, responder roles and response actions. It is
required in fleet mode and must be omitted for direct Core mode. Different
concurrent calls keep their own agent identity and credentials.
Fleet tools and profiles
Profile | Fleet capabilities, in addition to its Core tools |
| Read tools plus detection handling and operational case updates; no configuration or response operations |
| Manager status, paginated agent inventory, individual agent state, cached configuration, explicit GET fan-out |
| Observer fleet reads plus queueing a fresh poll |
| Operator fleet operations and existing Core IR-role/rollback tools |
| Responder plus registration/update, enable/disable, explicit multi-agent writes and full manager API requests |
administrator is opt-in and never the default. Registry changes and multi-agent
writes carry destructive/security-sensitive MCP annotations. The backend still
requires the corresponding IAM permissions, allow_writes and a scoped Core
operator credential. A client-side profile does not grant AWS permissions.
Fleet-specific tools:
opencdr_fleet_status,opencdr_fleet_agents_list,opencdr_fleet_agent_get.opencdr_fleet_configuration_get: paginated cached configuration, retaining snapshot generation, coverage and stale flags. It is an observation, not live Core state. Registered-ID coverage limits still apply.opencdr_fleet_agent_refresh: queues a poll; inspect timestamps afterwards.opencdr_fleet_agent_register,opencdr_fleet_agent_update: reviewed registration objects. Updates requireexpected_rev; no conflict rebasing/retries.opencdr_fleet_agent_enable,opencdr_fleet_agent_disable: explicit registration revision guards. Disabling retains state and does not revoke API keys.opencdr_fleet_read,opencdr_fleet_invoke: explicit fan-out to 1–8 agents. Multi-agent results are non-atomic. Inspect each target's status, omitted body, error and unknown outcome.all_requests_acceptedreports HTTP acceptance, not evaluator activation;partial_failureprevents treating HTTP 207 as success.opencdr_fleet_request: administrator-only complete Fleet Manager API access.
Agent credentials are prepared outside the MCP with
opencdr-deploy fleet agents register --core-profile ..., fleet agents bootstrap
or hidden-input fleet agents credentials. MCP registration tools accept no API
keys. Infrastructure deployment, reviewed artifacts and retained-table recovery
use OpenCDR Deploy's fleet commands.
No forwarded writes are automatically retried. In fleet mode, list/settings merge tools also return conflicts directly instead of rebasing a write. Inspect Core state before retrying an uncertain response action or partial release. The manager verifies live Core identity before forwarding; cached fleet health is not used as write authorization.
Configure direct Core access
Set the deployed API endpoint and a scoped API key:
export OPENCDR_API_URL="https://example.execute-api.us-east-2.amazonaws.com/dev"
export OPENCDR_API_KEY="..."
export OPENCDR_MCP_PROFILE="observer"Environment variables take precedence over the optional JSON configuration
file at ~/.config/opencdr/mcp.json:
{
"url": "https://example.execute-api.us-east-2.amazonaws.com/dev",
"key": "..."
}Set OPENCDR_CONFIG_FILE to use another file. Protect configuration files that
contain API keys with owner-only permissions.
OpenCDR deployments store a dedicated MCP key in SSM at
/opencdr-<stage>/api-key-mcp and the endpoint at
/opencdr-<stage>/api-url. Consult the OpenCDR Core deployment documentation
for retrieval and key-rotation instructions.
Register
Claude Code example:
claude mcp add opencdr \
--env OPENCDR_API_URL="$OPENCDR_API_URL" \
--env OPENCDR_API_KEY="$OPENCDR_API_KEY" \
--env OPENCDR_MCP_PROFILE=observer \
-- opencdr-mcpThe command can also be started directly:
opencdr-mcpCapability profiles
Profile | Exposed operations |
| Read tools plus status/disposition/assignment/manual SIEM-reference edits with revision and request guards |
| Read status, rules, lists, signals, logs, settings, integrations, IR roles and IR actions |
| Observer operations plus rule/list, integration and settings changes |
| Operator operations plus IR-role changes and IR-action rollback |
| Responder operations plus fleet registry/admin tools when fleet mode is active |
observer is the default. Profiles only reduce which tools an MCP client can
discover; they are not the authorization boundary. The OpenCDR API enforces the
key scopes in direct mode. In fleet mode, Fleet Manager IAM and the scoped Core
keys enforce access. Pair each profile with the least permissions its work needs.
Tool groups
Deployment status
Detection and correlation rules
Core rule schema, candidate validation and side-effect-free fixture evaluation
Rule release planning/application, runtime activation status and rule metrics
Reusable lists
Signals and operational logs
Ingestion integrations
Paginated ingestion jobs and analysis-only job replay
Notification settings
Incident-response roles and action rollback
Mutating operations include MCP safety annotations and use OpenCDR's optimistic concurrency controls where the API supports them.
Core is authoritative for validation, configuration revisions and execution
results. Validation/evaluation and release planning do not change deployed rules,
but require the Core rules scope and the operator, responder or
administrator profile.
Release application can disable or delete managed rules; inspect its plan first.
Core recomputes the release diff at apply time, so a prior plan is not a frozen
approval token. A partial conflict can follow completed writes; the tool error
preserves Core's completion details and does not retry automatically. After an
accepted release, use opencdr_rules_runtime_status until Core reports verified.
List metadata and ingestion-job lists accept next_token; continue while Core
returns a cursor. Replay queues a new analysis run on every call: acceptance is
not completion, and an ambiguous response must not be retried blindly. IR-role
updates accept expected_rev; when omitted, the tool reads a revision once and
guards its write without retrying a conflict.
This package manages agents through the Core API, directly or through the optional Fleet Manager connection. Platform-owned incident cases, assignments, triage and approvals are outside that contract. Direct AWS provisioning and recovery use OpenCDR Deploy. Capability profiles reduce tools, not backend authorization or a customer's independent direct access.
Development
python -m venv .venv
. .venv/bin/activate
python -m pip install -e '.[dev]'
ruff check .
pytest
python -m build
python -m twine check dist/*Releases
GitHub releases publish to PyPI through trusted publishing. The release tag must
exactly match v<project.version>, for example v0.2.0. The pypi GitHub
environment and the PyPI trusted publisher must be configured before publishing
the first release; no long-lived PyPI token is stored in GitHub.
License
Mozilla Public License 2.0. See LICENSE.
Retained detections and reviewed recovery (local source)
opencdr_detection_backfill_status reads a job or pages its outcomes.
opencdr_detection_backfill_update plans or advances a bounded import and requires
an administrator profile plus Core administrator access (including the selected
agent's write permission in Fleet mode). It preserves source IDs and does not
re-evaluate detections or replay external effects. Retained-source scans do not
prove complete history.
For direct delivery consumers, opencdr_detection_consumer_reconcile requires a
completed job/digest, current revision, reason, unique request ID and explicit
accept_unrecoverable=true; consumer status supports audit=true pagination.
Fleet operators instead use administrator-only opencdr_fleet_detection_reconcile
with exact checkpoint generation and registration revision. The original worker
performs recovery; acceptance is not completion. Inspect Fleet detection status.
See the workspace Core docs/detection-backfill.md procedure. These operations
are not yet published or live-accepted; replacement-role and combined recovery
remain unfinished.
Detection handling and triage access: see operator notes.
Operational cases (P2 candidate)
The local candidate adds shared operational cases: Core owns standalone cases,
Fleet owns multi-account cases. Read capabilities.operational_cases == "1.0.0"
before using /cases (Core) or /v1/cases (Fleet). Create, edit, notes, verified
attachments, retained evidence, close/reopen and immutable history use IAM,
revision checks and stable request IDs. Cases track SIEM work; they do not run
investigations or change detection handling. Fleet requires explicit principal
account grants, even for administrators, and never fans out case reads to Core.
Use the owner deployment/test and KPI guide for grants, Deploy commands, limits, failure scenarios and remaining live/retention/migration gates. This candidate is locally tested; it has not been deployed or publicly promoted.
New tools: opencdr_cases_list and opencdr_case_read are read-only;
opencdr_case_mutate requires the triage profile or higher.
opencdr_fleet_case_access requires Fleet administrator authority. These case
tools use the configured case owner directly in both modes. They do not accept a
member proxy selector; attachment payloads identify their source agent explicitly.
P2 case and execution additions (candidate)
opencdr_case_active: read the accessible active case for a detection and full selected account scope. Fleet stays the case authority.opencdr_case_integration: administrator-only trust binding/read for a dedicated connector role. This does not fetch vendor status or impersonate a connector.opencdr_response_outcomes: bounded response/rollback observations and immutable attempt history; in Fleet mode it forwards only to the selected Core.
Connector reports use Deploy with dedicated integration IAM access, not human
MCP profiles. Outcomes can be unknown or partially failed; they do not authorize
replay. New workers preserve original dry-run mode and block legacy rollback
records whose original mode is unknown. See the coordinated Core guide
docs/case-connectors-and-outcomes.md before upgrading workers.
Engine content library (P3 local candidate)
opencdr_library_read reads items, versions, verified stored artifacts, history
and frozen snapshots. opencdr_library_write creates items, changes metadata or
archive state, saves immutable versions and freezes declared dependency pins.
The read tool is available to observers; writing requires the rules/operator
capability. Core requires IAM and content_library: 1.0.0. In Fleet mode these
are central owner operations without an agent selector or member-Core fallback.
Every write needs a stable request ID and reason; item updates/version saves also require the current revision. Unknown outcomes must be retried unchanged. Saved versions are unvalidated; import metadata is caller-declared. These tools never fetch Git, approve, deploy or execute rules. See the coordinated library manual. Hosted SaaS MCP and assistant migration remain separate roadmap work.
P4–P6 local candidate (2026-11-11)
Owner review registry/inbox/decisions and owner-local routing previews are now implemented locally. Fleet also negotiates complete saved-profile/binding inventory with compatible Core agents. These changes are undeployed and are not approval-enforced jobs or automatic case routing. See the coordinated implementation and CLI guide for capabilities, limits, evidence and remaining acceptance gates.
Available Tools
38 toolsopencdr_case_activeBRead-onlyIdempotent
Find the accessible active case for one detection in a complete account scope.
Fleet reads its own index without contacting a member Core. A 404 does not prove global absence: the case can include accounts outside your grants/scope.
In fleet mode this tool uses the Fleet authority directly; Core mode uses standalone Core.
Inputs: agent_id (required), agent_ids (required), detection_id (required).
opencdr_case_extensionsCRead-onlyIdempotent
Read 20 case-owned indicators or historical provider-results.
Uses Fleet authority directly in fleet mode; never executes a lookup.
In fleet mode this tool uses the Fleet authority directly; Core mode uses standalone Core.
Inputs: kind (required), case_id (required), after.
opencdr_case_readARead-onlyIdempotent
Read a case, immutable history, retained evidence, or the signer's account access.
view is case, history, evidence, or access. Status labels track work in a SIEM; they do not execute an investigation or change detection handling.
In fleet mode this tool uses the Fleet authority directly; Core mode uses standalone Core.
Inputs: view, after, limit, case_id, +1 more.
opencdr_cases_listBRead-onlyIdempotent
List operational cases from the configured authority. Scope must include every case account.
Counts apply to this page. Continue even an empty page when next_cursor is set. Fleet requires explicit server-side principal grants; a filter never grants access.
In fleet mode this tool uses the Fleet authority directly; Core mode uses standalone Core.
Inputs: limit, cursor, status, agent_ids.
opencdr_configuration_flagsBRead-onlyIdempotent
Read owner runtime flag types/permissions and the separate Deploy application mechanism.
In fleet mode this tool uses the Fleet authority directly; Core mode uses standalone Core.
Inputs: no named parameters.
opencdr_configuration_ownershipBRead-onlyIdempotent
Read Core local/central bindings; reviewed owner-admin changes transfer control.
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: agent_id.
opencdr_detection_backfill_statusCRead-onlyIdempotent
Inspect a backfill plan/progress or bounded outcomes and skipped-source findings.
A completed retained-source scan does not prove complete history. Use results and next_after to review invalid, expired or conflicting source records.
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: job_id (required), after, limit, results, +1 more.
opencdr_detection_consumer_statusARead-onlyIdempotent
Read this IAM principal's consumer receipt and lag without acknowledging.
Requires direct Core IAM delivery access. Fleet mode owns its worker receipts; inspect Fleet agent detection status instead. Names never select another owner.
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: consumer_id (required), after, audit, limit, +1 more.
opencdr_detection_detailARead-onlyIdempotent
Fetch exact retained detection evidence. Fleet requires an explicit agent ID.
No live member request is used in Fleet mode. Missing/expired evidence and integrity failures remain errors; they are never treated as an empty finding.
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: detection_id (required), agent_id.
opencdr_detection_handlingBRead-onlyIdempotent
Read Core-owned handling or immutable audit history via the configured owner.
Unlike indexed browsing, Fleet forwards this selected-record request to its Core. SIEM references are manual and unverified; investigation remains in the SIEM.
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: detection_id (required), after, limit, history, +1 more.
opencdr_detection_handoff_statusBRead-onlyIdempotent
Read a reviewed consumer handoff plan or permanent acceptance receipt.
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: handoff_id (required), agent_id.
opencdr_detection_recovery_statusBRead-onlyIdempotent
Inspect physical feed identity/digest, or a saved rotation plan/receipt.
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: agent_id, recovery_id.
opencdr_detections_feedARead-onlyIdempotent
Read a bounded page of signals and correlated alerts in durable commit order.
Requires an IAM Core connection advertising detection_feed 1.x. In Fleet mode select one agent_id; this forwards a read, not a fleet-wide central search. Reading does not acknowledge delivery. Retention gaps are returned as errors; never silently reset a cursor. start=latest deliberately skips retained records and cannot be combined with a cursor.
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: limit, start, cursor, agent_id.
opencdr_detections_queryARead-onlyIdempotent
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.
Inputs: kind, limit, source, status, +11 more.
opencdr_integrations_getARead-onlyIdempotent
Read a parser catalog, binding or ingestion jobs, with job-list pagination.
The catalog does not enumerate saved bindings. Pass an integration_id to read a known binding, jobs=True for its job list, and job_id for diagnostics.
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: jobs, job_id, agent_id, next_token, +1 more.
opencdr_ir_actions_getARead-onlyIdempotent
Get a specific executed IR action. Read-only.
Includes rollback_supported and, once a rollback has been attempted, rollback_status ("pending"/"succeeded"/"failed"), rollback_error (set only on failure), and rollback_updated_at. rolled_back mirrors rollback_status == "succeeded" for back-compat; absent rollback_status means no rollback has been attempted yet.
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: detection_id (required), agent_id.
opencdr_ir_actions_listBRead-onlyIdempotent
List executed, rollback-eligible IR actions. Read-only.
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: agent_id, page_size, next_token.
opencdr_ir_roles_getARead-onlyIdempotent
Get the IR role mapping for a 12-digit AWS account id. Read-only.
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: aws_account_id (required), agent_id.
opencdr_ir_roles_listARead-onlyIdempotent
List IR role mappings (which IAM role responder assumes per AWS account). Read-only.
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: agent_id, page_size, next_token.
opencdr_library_evidenceARead-onlyIdempotent
Read retained tests, compilations or legacy mappings and their freshness.
Use views tests (content_id), compilations or mappings (release_id). Omit record_id for a bounded page; select a record to read its exact artifact. Historical passes never imply the latest content, current evaluator or runtime acceptance.
In fleet mode this tool uses the Fleet authority directly; Core mode uses standalone Core.
Inputs: view (required), owner_id (required), after, limit, +1 more.
opencdr_library_readARead-onlyIdempotent
Read owner-wide drafts, immutable versions/history, or frozen release snapshots.
Views: items, item, versions, version, artifact, history, releases, release, manifest. Saved/frozen content is not validated, approved or active runtime content. Pagination uses next_after; versions/history are in ascending numeric order.
In fleet mode this tool uses the Fleet authority directly; Core mode uses standalone Core.
Inputs: view, after, limit, version, +2 more.
opencdr_library_runtime_sourceBRead-onlyIdempotent
Preview a verified Core-local or fresh scoped Fleet snapshot for runtime import.
Returns the exact source document, canonical hash and observation time. This is read-only; pass the returned hash/revision in a separate runtime_import command.
In fleet mode this tool uses the Fleet authority directly; Core mode uses standalone Core.
Inputs: content_id (required), source_revision (required), source_deployment (required).
opencdr_lists_listARead-onlyIdempotent
Read one page of list metadata. Pass next_token to continue.
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: agent_id, page_size, next_token.
opencdr_lists_showARead-onlyIdempotent
Show a list's values. Read-only.
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: list_id (required), agent_id.
opencdr_logs_searchARead-onlyIdempotent
Search audit/CloudTrail logs. Read-only.
Provide exactly ONE selector: service, event_id, or event_name (the backend serves each from a dedicated index and cannot AND-combine them). date_from/date_to (YYYY-MM-DD, UTC, inclusive, max 31-day range) apply ONLY to the service selector and default to the last 7 days; they are ignored for event_id/event_name. Paginated via next_token.
Correlating by source_ip / principal / access_key_id / user_agent / resource / account is not yet supported by the backend -- use event_id to pivot on a specific event.
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: limit, order, date_to, service, +5 more.
opencdr_response_outcomesARead-onlyIdempotent
Read retained response/rollback observations or one attempt's immutable history.
Fleet forwards only this selected Core read. No historical backfill. Failed can include partial effects; unknown requires reconciliation before replay. after is the previous next_after; limit is 1..50. No mutation or replay occurs.
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: detection_id (required), after, limit, agent_id, +1 more.
opencdr_review_executionCRead-onlyIdempotent
Read the durable Core receipt or freshly compare stored/effective state.
Standalone Core only; Fleet uses reviewed distribution jobs.
Inputs: approval_id (required), verify.
opencdr_reviews_readBRead-onlyIdempotent
Read the owner-scoped approval inbox or one exact review and its binding.
Current owner grants filter results. Follow next_after even for an empty page. A registry decision does not execute a mutation or authorize a queued job.
In fleet mode this tool uses the Fleet authority directly; Core mode uses standalone Core.
Inputs: after, limit, approval_id.
opencdr_routing_activationBRead-onlyIdempotent
Read retained owner routing activation, expiry and feed connection status.
In fleet mode this tool uses the Fleet authority directly; Core mode uses standalone Core.
Inputs: approval_id (required).
opencdr_rules_getARead-onlyIdempotent
Get a rule by id. Read-only. kind must be "signal" or "correlation".
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: kind (required), rule_id (required), agent_id.
opencdr_rules_listARead-onlyIdempotent
List detection/correlation rules. Read-only.
kind: "signal" or "correlation" (omit for both; detection lists use opencdr_lists_list). Paginated: pass the returned next_token to continue.
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: kind, agent_id, page_size, next_token.
opencdr_rules_metricsBRead-onlyIdempotent
Read Core's rule/release aggregates. Preserve and inspect partial results.
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: date_to, rule_id, agent_id, date_from, +2 more.
opencdr_rules_runtime_statusARead-onlyIdempotent
Read stored and evaluator-observed generations. Only verified means active.
An accepted write can still be propagating; do not infer activation from a successful upsert or release application.
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: agent_id.
opencdr_rules_schemaARead-onlyIdempotent
Read this agent's rule contract, operators, bounds and response target keys.
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: agent_id.
opencdr_settings_getARead-onlyIdempotent
Get an OpenCDR settings document by id (default: global). Read-only.
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: agent_id, setting_id.
opencdr_signals_searchARead-onlyIdempotent
Search detection signals. Read-only.
Provide exactly ONE selector: severity, event_id, category, or integration_id (the backend serves each from a dedicated index and cannot AND-combine them). date_from/date_to (YYYY-MM-DD, UTC, inclusive, max 31-day range) apply ONLY to the severity selector and default to the last 7 days; they are ignored for event_id/category. Paginated via next_token.
Correlating by source_ip / principal / resource / account / region is not yet supported by the backend -- use event_id to pivot on a specific event.
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: limit, order, date_to, agent_id, +6 more.
opencdr_signals_statsARead-onlyIdempotent
Signal counts by severity for a date range. Read-only.
A dashboard/summary view, not a substitute for opencdr_signals_search's paginated item listing. Defaults to the last 7 days if neither date is given (YYYY-MM-DD, UTC, inclusive; max range 31 days -- the same date-range bound the severity selector of opencdr_signals_search uses). Returns {date_from, date_to, counts: {: , ...}, total}.
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: date_to, agent_id, date_from.
opencdr_statusARead-onlyIdempotent
Check OpenCDR API health. Read-only.
In fleet mode, supply agent_id explicitly. Core mode leaves agent_id unset.
Inputs: agent_id.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 38 tools
The detection/signal family is heavily overlapping: detections_feed, detections_query, detection_detail, signals_search, and signals_stats all read variations of signal/correlation data, and the descriptions spend most of their text trying to carve out subtle distinctions (indexed vs feed vs exact evidence). Similarly review_execution vs reviews_read, and the five status tools (consumer/recovery/handoff/backfill/feed) are hard to tell apart without deep domain knowledge. An agent would frequently misselect within these clusters.
Everything shares the opencdr_ prefix, but the remainder mixes domain_action patterns (rules_list, signals_search, lists_show) with domain_property/domain_noun patterns (detection_handling, configuration_flags, review_execution, response_outcomes, routing_activation). Singular/plural is also inconsistent (cases_list vs case_read, detections_query vs detection_detail), which prevents a fully predictable scheme.
38 tools is well above the 15-tool comfort zone and the scope is sprawling, spanning rules, lists, detections, signals, logs, cases, library, reviews, routing, integrations, settings and IR. Many of the 38 are narrow status/read variants that could be consolidated into parameterized tools.
Read coverage across the domain is broad (rules, cases, signals, logs, cases, IR roles/actions), but essentially every tool is read-only and many descriptions reference mutations handled elsewhere (runtime_import, review queue, upserts, rollback, ACK), leaving dead ends for any write workflow. The surface is a wide inspection layer rather than a complete lifecycle.
Maintenance
Related MCP Connectors
Managed MCP gateway with OAuth, per-agent permissions, shared accounts and activity logs.
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
A managed runtime for custom API integrations. Manage lines, endpoints, keys, logs and DLQ via MCP.
Governed MCP gateway for business apps: roles, previews, approvals and one audit log.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables MCP-capable clients to inspect and manage Keycloak realms, users, clients, roles, and groups with layered security modes, realm allowlisting, protected realms, delete gating, dry-run, and audit logging.871 npm1MIT
- AlicenseNot gradedqualityBmaintenanceEnables managing and observing Technitium DNS Server through MCP, including read-only or read-write tool surfaces, scoped bearer authentication, audit logging, and confirmation gates for destructive operations.MIT
- AlicenseNot gradedqualityBmaintenanceEnables MCP clients such as editors to start and monitor missions, run the self-healing demo, list departments and blueprints, and approve tasks through the backend API. It also lets trusted departments discover and invoke explicitly granted external stdio or Streamable HTTP tools.1MIT
- FlicenseNot gradedqualityCmaintenanceEnables users to aggregate, discover, and route remote MCP tools through a unified endpoint, with category-based access tokens, OAuth authorization, and admin management/analytics for self-hosted infrastructure.-