Investigate a Case + external tools

SkillSecurity

Use when enriching and verifying case artifacts with external threat

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Investigate a Case + external tools skill

What this skill tells your AI

The instructions your AI receives, as published by dandye/adk_runbooks in skills/investigation/investigate-case-external-tools/SKILL.md and read by ahel’s review.

Using SecOps, GTI, and Okta. Start with a Case (anomalous login Alerts). Find the entities involved and look up any related indicators. Find any users involved and look up Okta information to determine any suspicious characteristics. If confident in disposition, disable that User. Finally, provide a report about any identified activity for security analyst consumption.

Uses tools:

  • List Cases
  • Get Alerts in a Case
  • Entity Lookup
  • GTI Lookup
  • Event Search
  • OKTA user information
  • OKTA action"
  • Common Steps: {doc}common_steps/find_relevant_soar_case </run_books/common_steps/find_relevant_soar_case>

ADK Graph-Based Workflow Diagram

graph TD
    START(["START"]) --> extract_ext_payload_node["1. extract_ext_payload_node<br/><i>(Extract Case Payload)</i>"]
    extract_ext_payload_node --> query_external_tool_node["2. query_external_tool_node<br/><i>(Query External Tool Intel)</i>"]
    query_external_tool_node --> external_tool_router{"3. external_tool_router<br/><i>(Event.actions.route)</i>"}

    external_tool_router -- "ESCALATE_TIER2" --> handle_escalate_external_branch["4a. handle_escalate_external_branch<br/><i>(Escalate to Tier 2)</i>"]
    external_tool_router -- "CLOSE_BENIGN" --> handle_close_external_branch["4b. handle_close_external_branch<br/><i>(Close Case as Benign)</i>"]

    handle_escalate_external_branch --> document_external_report_node["5. document_external_report_node<br/><i>(SOAR Comment & Report Summary)</i>"]
    handle_close_external_branch --> document_external_report_node

Sequence Diagram

sequenceDiagram
    participant User
    participant AutomatedAgent as Automated Agent (MCP Client)
    participant SOAR as secops-soar
    participant SIEM as secops-mcp
    participant GTI as gti-mcp
    participant Okta as okta-mcp
    participant FindCase as skills/common/find-relevant-soar-case/SKILL.md

    User->>AutomatedAgent: Investigate Case Y (Anomalous Login)
    AutomatedAgent->>SOAR: list_alerts_by_case(case_id=Y)
    SOAR-->>AutomatedAgent: Alerts for Case Y (Entities: User U, IP I, Host H...)
    Note over AutomatedAgent: Store identified entities (IDENTIFIED_ENTITIES = [U, I, H...])
    loop For each relevant Entity Ei in IDENTIFIED_ENTITIES
        AutomatedAgent->>SIEM: lookup_entity(entity_value=Ei)
        SIEM-->>AutomatedAgent: SIEM context for Ei
        AutomatedAgent->>GTI: get_file_report/get_domain_report/get_ip_address_report(entity=Ei)
        GTI-->>AutomatedAgent: GTI context for Ei
        AutomatedAgent->>SIEM: search_security_events(text="Events involving entity Ei", hours_back=...)
        SIEM-->>AutomatedAgent: Related UDM events for Ei
    end
    Note over AutomatedAgent: Check for related SOAR cases
    AutomatedAgent->>FindCase: Execute(Input: SEARCH_TERMS=IDENTIFIED_ENTITIES, CASE_STATUS_FILTER="Opened")
    FindCase-->>AutomatedAgent: Results: RELATED_SOAR_CASES
    Note over AutomatedAgent: Identify primary user entity (User U)
    AutomatedAgent->>Okta: lookup_okta_user(user=U)
    Okta-->>AutomatedAgent: Okta user details for User U
    Note over AutomatedAgent: Analyze Okta details for suspicious activity/characteristics
    AutomatedAgent->>User: Confirm: "Okta user U shows suspicious activity. Disable user? (Yes/No)"
    User->>AutomatedAgent: Response (e.g., "Yes")
    alt Disable User Confirmed
        AutomatedAgent->>Okta: disable_okta_user(user=U)
        Okta-->>AutomatedAgent: Disable confirmation
    end
    Note over AutomatedAgent: Synthesize all findings (incl. related cases) into a report summary
    AutomatedAgent->>SOAR: post_case_comment(case_id=Y, comment="Investigation Summary: Anomalous login for User U from IP I. GTI/SIEM checks performed. Related Cases: ${RELATED_SOAR_CASES}. Okta details reviewed. User disabled due to suspicious activity. Findings: [...]")
    SOAR-->>AutomatedAgent: Comment confirmation
    AutomatedAgent->>AutomatedAgent: attempt_completion(result="Completed investigation for Case Y. User U potentially disabled. Summary posted as comment.")

Rubrics

The following rubric is used to evaluate the execution of this Triage/Response runbook by an LLM agent.

Grading Scale (0-100 Points)

CriteriaPointsDescription
Context & Enrichment25Correctly extracted entities and enriched them with relevant context (GTI, SIEM).
Analysis & Decision25Analyzed the enriched data to make a sound decision (FP/TP, Escalate/Close).
Action Execution20Performed the required response actions (e.g., isolation, containment) correctly.
Documentation15Clearly documented findings and actions in the case/ticket.
Operational Artifacts15Produced required artifacts: Sequence diagram, execution metadata (date/cost), and summary.

Evaluation Criteria Details

1. Context & Enrichment (25 Points)
  • 10 pts: Accurately extracted key entities (IPs, users, hashes) from the input.
  • 15 pts: Performed necessary enrichment (e.g., enrich_ioc) to gather reputation and history.
2. Analysis & Decision (25 Points)
  • 15 pts: Interpreted the context correctly to determine the nature of the alert.
  • 10 pts: Reached a logical conclusion or next step (e.g., "Escalate to Tier 2" or "Isolate Host").
3. Action Execution (20 Points)
  • 10 pts: Called the correct tools to perform response actions (if applicable) or investigative steps.
  • 10 pts: Verified the success of actions or handled errors appropriately.
4. Documentation (15 Points)
  • 15 pts: Posted a comprehensive comment or update to the SOAR case summarizing the triage.
5. Operational Artifacts (15 Points)
  • 5 pts: Sequence Diagram: Produced a Mermaid sequence diagram visualizing the steps taken.
  • 5 pts: Execution Metadata: Recorded the date, duration, and estimated token cost.
  • 5 pts: Summary Report: Generated a concise summary of the actions and outcomes.

Signals

GitHub stars
84
Forks
14
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
investigate-case-external-tools
Source
github.com/dandye/adk_runbooks