{
  "$schema": "https://readbeforerun.ai/schema/entry.schema.json",
  "entry": {
    "id": "google-secops-mcp",
    "name": "Google Security Operations MCP Server",
    "summary": "MCP server for Google Security Operations (Chronicle) with 68 tools for event search, alerts, detection rules, log ingestion and SIEM configuration.",
    "draft": "review",
    "type": "mcp-server",
    "mission": [
      "defensive"
    ],
    "task": [
      "alert-triage",
      "detection-engineering"
    ],
    "domain": [
      "security-operations"
    ],
    "runtime": [
      "mcp-generic",
      "claude-code",
      "gemini-cli",
      "cursor"
    ],
    "tier": "listed",
    "last_checked": "2026-10-21",
    "next_check": "2027-01-19",
    "freshness": "fresh",
    "superseded": false,
    "in_my_kit": null,
    "advice": null,
    "code_shows": "reads credential stores · changes config or installs globally · Approval: unknown",
    "source": {
      "repo": "https://github.com/google/mcp-security",
      "subpath": "server/secops",
      "commit": "ceb703aee136d4ce0b23213bca938133212274b9",
      "version": "secops-v0.7.1",
      "license": "Apache-2.0"
    },
    "install": {
      "skills_cli": null,
      "claude_code": null,
      "upstream": "uvx --from google-secops-mcp secops_mcp",
      "bundled": false
    },
    "scan": {
      "status": "static scan pending (not run)"
    },
    "reach": {
      "method": "reach-v0.1",
      "level": 3,
      "level_source": "static",
      "level_label": "privileged",
      "unknown_axes": 1,
      "verdict": "not-run",
      "badge": "reach 3 · not run yet",
      "long": "reach 3 from code (privileged); lab: not run yet",
      "declared": {
        "fs": 1,
        "net": 1,
        "cred": 3,
        "persist": 2,
        "hitl": 1
      },
      "static": {
        "level": 3,
        "fs": 1,
        "net": 1,
        "exec": 0,
        "cred": 3,
        "persist": 2,
        "hitl": null,
        "unknown": [
          "hitl"
        ]
      },
      "observed": null,
      "surplus": null,
      "fit": null,
      "exports": {
        "aivss": {
          "fs": 0.5,
          "net": 0.5,
          "exec": 0,
          "cred": 1,
          "persist": 0.5,
          "hitl": null
        },
        "usf_risk_tier": "L3"
      }
    },
    "profile": {
      "read_at": "ceb703aee136d4ce0b23213bca938133212274b9",
      "read_on": "2026-10-25",
      "overview": "An MCP server that connects MCP clients to Google's Chronicle Security Operations suite, with tools for event search, alerts, detection rules, log ingestion and SIEM configuration.",
      "purpose": [
        "Gives MCP clients access to Google Security Operations (Chronicle) for threat detection, investigation and hunting.",
        "Performs security operations tasks in Chronicle, including natural-language event search.",
        "Gets data into Chronicle through raw log and UDM event ingestion, custom parsers and feed configuration."
      ],
      "use_cases": [
        {
          "text": "Retrieve and monitor security alerts from Chronicle.",
          "task": "alert-triage"
        },
        {
          "text": "Run detection rules against historical data as retrohunts and track their results.",
          "task": "detection-engineering"
        },
        {
          "text": "Look up IPs, domains, hashes and other indicators against Chronicle log history.",
          "task": "threat-intel-enrichment"
        },
        {
          "text": "Create and deploy rule exclusions to filter false positives and tune detection rules.",
          "task": "detection-engineering"
        }
      ],
      "maturity": null,
      "capabilities": [
        {
          "name": "Security Tools",
          "effects": [
            "reads",
            "changes"
          ],
          "enabled": "default"
        },
        {
          "name": "Log Ingestion Tools",
          "effects": [
            "reads",
            "changes"
          ],
          "enabled": "default"
        },
        {
          "name": "Parser Management Tools",
          "effects": [
            "reads",
            "changes"
          ],
          "enabled": "default"
        },
        {
          "name": "Data Table Management Tools",
          "effects": [
            "reads",
            "changes",
            "deletes"
          ],
          "enabled": "default"
        },
        {
          "name": "Reference List Management Tools",
          "effects": [
            "reads",
            "changes"
          ],
          "enabled": "default"
        },
        {
          "name": "Feed Management Tools",
          "effects": [
            "reads",
            "changes",
            "deletes"
          ],
          "enabled": "default"
        },
        {
          "name": "Curated Rules Management Tools",
          "effects": [
            "reads",
            "changes"
          ],
          "enabled": "default"
        },
        {
          "name": "Rule Exclusions Management Tools",
          "effects": [
            "reads",
            "changes"
          ],
          "enabled": "default"
        },
        {
          "name": "Watchlist Management Tools",
          "effects": [
            "reads",
            "changes",
            "deletes"
          ],
          "enabled": "default"
        },
        {
          "name": "Investigation Management Tools",
          "effects": [
            "reads",
            "changes"
          ],
          "enabled": "default"
        }
      ],
      "effects": [
        "reads",
        "changes",
        "deletes"
      ],
      "runs": "local-process",
      "listens": [],
      "sends_to": [
        {
          "to": "Google SecOps Chronicle API",
          "kind": "vendor-api",
          "when": "always"
        },
        {
          "to": "Gemini in Chronicle",
          "kind": "vendor-api",
          "when": "optional"
        },
        {
          "to": "Chronicle natural-language translation",
          "kind": "vendor-api",
          "when": "optional"
        }
      ],
      "model": "client",
      "needs": [
        {
          "kind": "account",
          "text": "A Google Security Operations (Chronicle) instance, identified by Google Cloud project ID, Chronicle customer ID and region."
        },
        {
          "kind": "credentials",
          "text": "Google Cloud Application Default Credentials by default, set up with gcloud auth application-default login."
        },
        {
          "kind": "credentials",
          "text": "Optionally a service account JSON key file, whose path is read from SECOPS_SA_PATH."
        },
        {
          "kind": "runtime",
          "text": "Python 3.11 or later."
        },
        {
          "kind": "tools",
          "text": "uv (recommended by the author) or pip to install and run the package."
        },
        {
          "kind": "tools",
          "text": "The gcloud CLI to create Application Default Credentials."
        },
        {
          "kind": "authorization",
          "text": "Chronicle API access for the identity in use, listed as a requirement for the integration tests."
        },
        {
          "kind": "setting",
          "text": "CHRONICLE_PROJECT_ID, CHRONICLE_CUSTOMER_ID, CHRONICLE_REGION and SECOPS_SA_PATH are passed through the env block of the MCP client configuration."
        }
      ]
    },
    "urls": {
      "page": "/catalog/google-secops-mcp/",
      "json": "/entries/google-secops-mcp.json",
      "md": "/catalog/google-secops-mcp.md",
      "badge": "/badge/google-secops-mcp.svg"
    }
  },
  "data": {
    "schema_version": "0.5",
    "slug": "google-secops-mcp",
    "name": "Google Security Operations MCP Server",
    "summary": "MCP server for Google Security Operations (Chronicle) with 68 tools for event search, alerts, detection rules, log ingestion and SIEM configuration.",
    "draft": "review",
    "in_my_kit": null,
    "type": "mcp-server",
    "mission": [
      "defensive"
    ],
    "task": [
      "alert-triage",
      "detection-engineering"
    ],
    "domain": [
      "security-operations"
    ],
    "phase": [
      "def:detect",
      "def:respond"
    ],
    "role": [
      "soc"
    ],
    "runtime": [
      "mcp-generic",
      "claude-code",
      "gemini-cli",
      "cursor"
    ],
    "auth": "oauth2",
    "autonomy": null,
    "addresses": [],
    "frameworks": {
      "owasp_ast": [],
      "owasp_asi": [],
      "attack_tactic": [],
      "atlas": []
    },
    "source": {
      "repo": "https://github.com/google/mcp-security",
      "subpath": "server/secops",
      "commit": "ceb703aee136d4ce0b23213bca938133212274b9",
      "version": "secops-v0.7.1",
      "license": "Apache-2.0",
      "manifest": "pyproject.toml",
      "also_listed": {}
    },
    "upstream": {
      "checked_at": "2026-10-21",
      "updated_at": "2026-10-16",
      "current_release": "secops-v0.7.1",
      "archived": false,
      "stars": 535,
      "commit_history": {},
      "releases_since_pin": 0
    },
    "install": {
      "upstream": "uvx --from google-secops-mcp secops_mcp",
      "upstream_evidence": "README.md#L69",
      "bundled": false
    },
    "scan": [
      {
        "tool": "cisco-skill-scanner",
        "version": "not-run",
        "llm_judge": false,
        "date": "2026-10-21",
        "result": "pending"
      }
    ],
    "privileges": {
      "method": "reach-v0.1",
      "declared": {
        "axes": {
          "fs": 1,
          "net": 1,
          "cred": 3,
          "persist": 2,
          "hitl": 1
        },
        "evidence": {
          "fs": "server/secops/README.md#L392-393 the author lets the server read a service-account key file from a path the user sets",
          "net": "server/secops/README.md#L3-4 the author names Google Security Operations as the only service the server talks to",
          "cred": "server/secops/README.md#L383-387 the author makes Google Cloud Application Default Credentials the default, which is the user's cloud credential profile outside the working directory",
          "persist": "server/secops/README.md#L222-228 the author lists tools that create, update, enable, disable and delete feeds, parsers, data tables, reference lists, rule exclusions and watchlists",
          "hitl": "server/secops/README.md#L333-340 the documented pip client configuration pre-approves three read tools"
        }
      },
      "static": {
        "level": 3,
        "axes": {
          "fs": 1,
          "net": 1,
          "exec": 0,
          "cred": 3,
          "persist": 2,
          "hitl": null
        },
        "evidence": {
          "fs": "server/secops/secops_mcp/server.py#L71-73 the server passes a key-file path from SECOPS_SA_PATH to the SDK, which reads it from any location, and writes no local files",
          "net": "server/secops/secops_mcp/server.py#L77-79 all tools reach the network only through the SecOps SDK client for the configured or per-call project, customer and region, and the server runs over stdio only",
          "exec": "none found: patterns exec-v0.1 in 24 files at ceb703a",
          "cred": "server/secops/secops_mcp/server.py#L74-75 without SECOPS_SA_PATH the client is created without explicit credentials and falls back to Application Default Credentials, the user's Google Cloud credential profile",
          "persist": "server/secops/secops_mcp/tools/curated_rules_management.py#L701 one of 27 tools that change SecOps configuration or data with a direct SDK call and no confirmation step",
          "hitl": "no evidence: no approval settings were found in the code, but the search patterns for approvals match several lines, so a zero cannot be written"
        },
        "unknown": [
          "hitl"
        ]
      },
      "min_config": {
        "status": "derived",
        "note": "derived from the code, not tested in the lab; use a dedicated service account with read-only SecOps roles through SECOPS_SA_PATH instead of personal Application Default Credentials, set project, customer and region explicitly because built-in fallback IDs apply otherwise, keep the service account limited to one instance because any call can name another project, and pin google-secops-mcp==0.7.1"
      },
      "override": null,
      "reviews": []
    },
    "status": {
      "tier": "listed",
      "last_checked": "2026-10-21",
      "next_check": "2027-01-19",
      "freshness": "fresh",
      "superseded": false,
      "superseded_by": null,
      "added": "2026-10-21",
      "added_by": "scout"
    },
    "evidence": {
      "runs": [],
      "badge": "/badge/google-secops-mcp.svg"
    },
    "changes": []
  },
  "profile": {
    "schema_version": "0.1",
    "entry": "google-secops-mcp",
    "draft": "review",
    "commit": "ceb703aee136d4ce0b23213bca938133212274b9",
    "read_on": "2026-10-25",
    "check": {
      "date": "2026-10-25",
      "facts": 57,
      "confirmed": 57,
      "verified": 50
    },
    "overview": {
      "text": "An MCP server that connects MCP clients to Google's Chronicle Security Operations suite, with tools for event search, alerts, detection rules, log ingestion and SIEM configuration.",
      "ev": "server/secops/README.md#L3-4 author's own description of the server"
    },
    "purpose": [
      {
        "text": "Gives MCP clients access to Google Security Operations (Chronicle) for threat detection, investigation and hunting.",
        "ev": "README.md#L6 repository README states what the Chronicle server is for"
      },
      {
        "text": "Performs security operations tasks in Chronicle, including natural-language event search.",
        "ev": "server/secops/secops_mcp/server.py#L16-17 module docstring of the server"
      },
      {
        "text": "Gets data into Chronicle through raw log and UDM event ingestion, custom parsers and feed configuration.",
        "ev": "server/secops/README.md#L253-259 data ingestion and parsing tool category"
      }
    ],
    "use_cases": [
      {
        "text": "Retrieve and monitor security alerts from Chronicle.",
        "task": "alert-triage",
        "ev": "server/secops/README.md#L241 documented alert management use"
      },
      {
        "text": "Run detection rules against historical data as retrohunts and track their results.",
        "task": "detection-engineering",
        "ev": "server/secops/README.md#L244 documented threat hunting use"
      },
      {
        "text": "Look up IPs, domains, hashes and other indicators against Chronicle log history.",
        "task": "threat-intel-enrichment",
        "ev": "server/secops/README.md#L242 documented entity analysis use"
      },
      {
        "text": "Create and deploy rule exclusions to filter false positives and tune detection rules.",
        "task": "detection-engineering",
        "ev": "server/secops/README.md#L248 documented rule exclusion use"
      }
    ],
    "not_for": [],
    "capabilities": {
      "coverage": "complete",
      "groups": [
        {
          "name": "Security Tools",
          "does": "Searches events (natural language or UDM), alerts, entities, IoC matches and rules; asks Gemini; runs retrohunts; creates rules and updates alert status and verdict.",
          "effects": [
            "reads",
            "changes"
          ],
          "enabled": "default",
          "ev": "server/secops/secops_mcp/tools/security_alerts.py#L285 do_update_security_alert writes alert fields"
        },
        {
          "name": "Log Ingestion Tools",
          "does": "Ingests raw logs (single or batch) and pre-formatted UDM events into Chronicle and lists the log types available for ingestion.",
          "effects": [
            "reads",
            "changes"
          ],
          "enabled": "default",
          "ev": "server/secops/secops_mcp/tools/log_ingestion.py#L127 ingest_raw_log sends logs to Chronicle"
        },
        {
          "name": "Parser Management Tools",
          "does": "Creates, lists, reads, activates and deactivates log parsers and tests parser code against sample logs.",
          "effects": [
            "reads",
            "changes"
          ],
          "enabled": "default",
          "ev": "server/secops/secops_mcp/tools/parser_management.py#L121 create_parser call"
        },
        {
          "name": "Data Table Management Tools",
          "does": "Creates data tables for use in detection rules, adds and lists rows, and deletes rows by ID.",
          "effects": [
            "reads",
            "changes",
            "deletes"
          ],
          "enabled": "default",
          "ev": "server/secops/secops_mcp/tools/data_table_management.py#L459 delete_data_table_rows call"
        },
        {
          "name": "Reference List Management Tools",
          "does": "Creates, reads and updates reference lists (STRING, CIDR or REGEX) used in detection rules; supplied entries replace the existing ones.",
          "effects": [
            "reads",
            "changes"
          ],
          "enabled": "default",
          "ev": "server/secops/secops_mcp/tools/reference_list_management.py#L324-333 update_reference_list behaviour"
        },
        {
          "name": "Feed Management Tools",
          "does": "Lists, reads, creates, updates, enables, disables and deletes ingestion feeds and generates new feed authentication secrets.",
          "effects": [
            "reads",
            "changes",
            "deletes"
          ],
          "enabled": "default",
          "ev": "server/secops/secops_mcp/tools/feed_management.py#L500 delete_feed call"
        },
        {
          "name": "Curated Rules Management Tools",
          "does": "Lists and reads Google-curated rules, rule sets and detections, and changes rule-set deployment (enabled, precision, alerting).",
          "effects": [
            "reads",
            "changes"
          ],
          "enabled": "default",
          "ev": "server/secops/secops_mcp/tools/curated_rules_management.py#L701 deployment update call"
        },
        {
          "name": "Rule Exclusions Management Tools",
          "does": "Creates, reads, lists and patches rule exclusions, changes their deployment and computes how many events they excluded.",
          "effects": [
            "reads",
            "changes"
          ],
          "enabled": "default",
          "ev": "server/secops/secops_mcp/tools/rule_exclusions.py#L113 create_rule_exclusion call"
        },
        {
          "name": "Watchlist Management Tools",
          "does": "Creates, updates, reads, lists and deletes watchlists that apply risk score multipliers to entities.",
          "effects": [
            "reads",
            "changes",
            "deletes"
          ],
          "enabled": "default",
          "ev": "server/secops/secops_mcp/tools/watchlist_management.py#L302 delete_watchlist call"
        },
        {
          "name": "Investigation Management Tools",
          "does": "Lists and reads investigations, triggers a new investigation for an alert and fetches investigations linked to alerts or cases.",
          "effects": [
            "reads",
            "changes"
          ],
          "enabled": "default",
          "ev": "server/secops/secops_mcp/tools/investigation_management.py#L231 trigger_investigation call"
        }
      ]
    },
    "architecture": {
      "summary": {
        "text": "A Python FastMCP server that the MCP client starts and talks to over stdio; each tool call builds a SecOpsClient from the secops SDK, which calls the Chronicle API in Google Cloud.",
        "ev": "server/secops/secops_mcp/server.py#L94 server runs with stdio transport"
      },
      "runs": {
        "where": "local-process",
        "text": "The MCP client starts the server as a local process (uv, uvx or a bash/pip command) and talks to it over stdio.",
        "ev": "README.md#L165 author states the stdio transport is used"
      },
      "modes": [
        {
          "where": "local-program",
          "mode": "standalone",
          "switch": "uvx --from google-secops-mcp secops_mcp",
          "text": "After installation the package can be started directly with uvx --from google-secops-mcp secops_mcp.",
          "ev": "README.md#L65-69 standalone run command"
        }
      ],
      "parts": [
        {
          "name": "MCP client configuration",
          "zone": "client",
          "does": "mcpServers entry in the client settings that starts the server and passes CHRONICLE_* and SECOPS_SA_PATH environment variables.",
          "ev": "server/secops/README.md#L278 client configuration instruction"
        },
        {
          "name": "secops_mcp server",
          "zone": "machine",
          "does": "Python FastMCP process that registers the SecOps tools and serves them over stdio.",
          "ev": "server/secops/secops_mcp/server.py#L28 FastMCP server object"
        },
        {
          "name": "secops SDK (SecOpsClient)",
          "zone": "machine",
          "does": "Python library the tools call to reach the Chronicle API.",
          "ev": "server/secops/secops_mcp/server.py#L25 SDK import"
        },
        {
          "name": "Google Cloud credentials",
          "zone": "machine",
          "does": "Application Default Credentials from gcloud, or a service account JSON key file named by SECOPS_SA_PATH.",
          "ev": "server/secops/README.md#L392-393 service account option"
        },
        {
          "name": "Chronicle API (Google SecOps)",
          "zone": "outside",
          "does": "Google-hosted SIEM instance, selected by project ID, customer ID and region, that runs every search and change the tools request.",
          "ev": "server/secops/secops_mcp/server.py#L77-78 Chronicle client bound to instance"
        },
        {
          "name": "Gemini in Chronicle",
          "zone": "outside",
          "does": "Model inside SecOps that answers threat intelligence questions sent by get_threat_intel.",
          "ev": "server/secops/secops_mcp/tools/threat_intel.py#L33 tool docstring names the Gemini model"
        }
      ],
      "listens": [],
      "connections": [
        {
          "to": "Google SecOps Chronicle API",
          "kind": "vendor-api",
          "when": "always",
          "what": "Sends queries, rule text, log data and configuration changes to the Chronicle instance and receives events, alerts and settings.",
          "ev": "server/secops/secops_mcp/server.py#L77-79 every tool builds a Chronicle client"
        },
        {
          "to": "Gemini in Chronicle",
          "kind": "vendor-api",
          "when": "optional",
          "what": "get_threat_intel sends the question text to Chronicle's integrated Gemini model and returns its answer.",
          "ev": "server/secops/secops_mcp/tools/threat_intel.py#L78 Gemini call"
        },
        {
          "to": "Chronicle natural-language translation",
          "kind": "vendor-api",
          "when": "optional",
          "what": "search_security_events sends the natural-language query text to Chronicle to translate it into a UDM query.",
          "ev": "server/secops/secops_mcp/tools/security_events.py#L137 natural-language translation call"
        }
      ],
      "model": {
        "who": "client",
        "text": "The AI client's model uses the tools; the repository README names Claude Desktop and the cline.bot VS Code extension as MCP clients.",
        "ev": "README.md#L3 servers are used by MCP clients"
      }
    },
    "needs": [
      {
        "kind": "account",
        "text": "A Google Security Operations (Chronicle) instance, identified by Google Cloud project ID, Chronicle customer ID and region.",
        "ev": "server/secops/README.md#L360-362 instance variables to set"
      },
      {
        "kind": "credentials",
        "text": "Google Cloud Application Default Credentials by default, set up with gcloud auth application-default login.",
        "ev": "server/secops/README.md#L381-387 default authentication method"
      },
      {
        "kind": "credentials",
        "text": "Optionally a service account JSON key file, whose path is read from SECOPS_SA_PATH.",
        "ev": "server/secops/secops_mcp/server.py#L71-73 service account path from environment"
      },
      {
        "kind": "runtime",
        "text": "Python 3.11 or later.",
        "ev": "server/secops/pyproject.toml#L6 Python requirement"
      },
      {
        "kind": "tools",
        "text": "uv (recommended by the author) or pip to install and run the package.",
        "ev": "server/secops/README.md#L282 uv configuration marked recommended"
      },
      {
        "kind": "tools",
        "text": "The gcloud CLI to create Application Default Credentials.",
        "ev": "server/secops/README.md#L387 authentication command"
      },
      {
        "kind": "authorization",
        "text": "Chronicle API access for the identity in use, listed as a requirement for the integration tests.",
        "ev": "server/secops/tests/README.md#L9 test requirements"
      },
      {
        "kind": "setting",
        "text": "CHRONICLE_PROJECT_ID, CHRONICLE_CUSTOMER_ID, CHRONICLE_REGION and SECOPS_SA_PATH are passed through the env block of the MCP client configuration.",
        "ev": "server/secops/README.md#L296-301 env block of the client configuration"
      }
    ],
    "installer": [
      {
        "text": "The repository README installs the google-secops-mcp package with uv tool install and no version pin.",
        "ev": "README.md#L44-48 install command without version pin"
      },
      {
        "text": "The pip client configuration runs /bin/bash -c to install the cloned repository in editable mode with pip install -e . every time the client starts the server.",
        "ev": "server/secops/README.md#L321-324 pip variant command"
      },
      {
        "text": "The uv client configuration runs server.py with uv run from a local clone of the repository and loads variables from an env file given with --env-file.",
        "ev": "server/secops/README.md#L288-294 uv variant arguments"
      },
      {
        "text": "The package declares its dependencies with minimum versions only, for example secops>=0.35.1 and mcp[cli]>=1.26.0,<2.0, so an install picks the newest matching versions.",
        "ev": "server/secops/pyproject.toml#L16-23 dependency list with lower bounds"
      }
    ],
    "limits": [
      {
        "text": "If CHRONICLE_PROJECT_ID or CHRONICLE_CUSTOMER_ID is unset, the server falls back to a hard-coded project number and customer ID instead of stopping with an error.",
        "ev": "server/secops/secops_mcp/server.py#L38-41 hard-coded defaults"
      },
      {
        "text": "Every tool accepts project_id, customer_id and region arguments that override the configured Chronicle instance for that call.",
        "ev": "server/secops/secops_mcp/server.py#L60-63 per-call values take precedence"
      },
      {
        "text": "Without SECOPS_SA_PATH the server creates SecOpsClient() with no explicit credentials, so tools act with whatever default Google credentials the environment provides.",
        "ev": "server/secops/secops_mcp/server.py#L74-75 ADC fallback"
      },
      {
        "text": "delete_feed permanently removes a feed and stops its data ingestion; the author states this cannot be undone.",
        "ev": "server/secops/secops_mcp/tools/feed_management.py#L457-460 delete_feed docstring"
      },
      {
        "text": "When the API returns it, generate_feed_secret adds the newly generated feed secret to the tool result, so the value reaches the MCP client and its model.",
        "ev": "server/secops/secops_mcp/tools/feed_management.py#L567-569 secret copied into result"
      },
      {
        "text": "The server README's pip configuration lists get_ioc_matches, search_security_events and get_security_alerts under autoApprove and get_ioc_matches under alwaysAllow.",
        "ev": "server/secops/README.md#L333-339 pre-approval lists in example config"
      },
      {
        "text": "Tool descriptions suggest follow-up write actions to the model, such as updating alert status with do_update_security_alert after an investigation.",
        "ev": "server/secops/secops_mcp/tools/investigation_management.py#L217-218 next-step text in tool description"
      },
      {
        "text": "The repository README lists Google's fully managed Remote MCP Server for SecOps as the recommended option ahead of this local server.",
        "ev": "README.md#L5 recommendation of the remote server"
      },
      {
        "text": "do_update_security_alert changes an alert's status, priority, severity and verdict, and an empty string clears existing comments or root cause.",
        "ev": "server/secops/secops_mcp/tools/security_alerts.py#L234-239 use cases of the alert update tool, including clearing fields"
      },
      {
        "text": "The search_security_events description tells the model to use findings for response actions such as blocking an IP or isolating a host through SOAR or endpoint MCP tools.",
        "ev": "server/secops/secops_mcp/tools/security_events.py#L91 next-step text in the tool description"
      },
      {
        "text": "ingest_udm_events writes caller-supplied UDM events into Chronicle, and its description names creating synthetic events for testing detection rules or filling data gaps.",
        "ev": "server/secops/secops_mcp/tools/log_ingestion.py#L163 workflow note of the UDM ingestion tool"
      },
      {
        "text": "generate_feed_secret replaces any existing authentication secret of the feed.",
        "ev": "server/secops/secops_mcp/tools/feed_management.py#L520-521 docstring of generate_feed_secret"
      },
      {
        "text": "delete_feed passes the feed ID straight to the Chronicle delete call after building the client; the tool has no confirmation parameter or step in code.",
        "ev": "server/secops/secops_mcp/tools/feed_management.py#L495-500 deletion runs directly after logging and client setup, no confirmation check"
      },
      {
        "text": "generate_feed_secret creates a new secret for an HTTPS push feed, and its description states that this replaces any existing secret.",
        "ev": "server/secops/secops_mcp/tools/feed_management.py#L520-521 tool description says the new secret replaces the old one"
      }
    ],
    "not_found": [
      {
        "field": "maturity",
        "searched": "README.md, server/secops/README.md, server/secops/pyproject.toml, setup.py for preview, experimental, alpha, beta, stable, deprecated, unmaintained"
      },
      {
        "field": "not_for",
        "searched": "README.md, server/secops/README.md, server/secops/tests/README.md for out-of-scope, authorised-use or 'do not use' statements"
      },
      {
        "field": "capability_count",
        "searched": "README.md and server/secops/README.md for an author-stated number of tools"
      },
      {
        "field": "listen",
        "searched": "server/secops/secops_mcp/server.py and all tools/*.py for host, port, bind or HTTP transport; server.run uses transport='stdio'"
      },
      {
        "field": "autonomy",
        "searched": "not applicable: entry type is mcp-server, not agent"
      }
    ]
  },
  "verdict": null,
  "runs": []
}
