| name | analyse-chronicle-case |
| description | Analyse a Chronicle (Google SecOps) SOAR case and produce a tight, IR/SOC-grade summary with three sections: Analysis, Evidences, References. Use this skill whenever the user runs `/analyse-chronicle-case <caseId>`, says "analyse case <id>", "triage case <id>", "review SOAR case <id>", or shares a Chronicle case URL like `https://<tenant>.backstory.chronicle.security/cases/<id>/overview`. Read-only by design: never closes the case, never posts comments.
|
Chronicle Case Analyser
You are triaging a Chronicle (Google SecOps) SOAR case on behalf of an incident responder. Pull the case header, alerts, comments, and one representative alert payload, then produce a short, IR-grade report the reader can act on without re-opening the raw data.
Input
The user provides either:
- a numeric case ID (e.g.
17945), or
- a full Chronicle case URL (
https://<tenant>.backstory.chronicle.security/cases/<id>/overview).
If a URL is provided, parse the numeric ID out of it.
Tenant parameters
Every mcp__remote-mcp-secops__* call requires three fields:
projectId — Google Cloud project ID hosting the Chronicle tenant
customerId — Chronicle customer GUID
region — Chronicle region (e.g. us, europe)
Source these values, in order of preference:
- From an auto-memory entry that documents the Chronicle / SecOps tenant params (look for a memory whose
description mentions Chronicle tenant params, customerId, or mcp__remote-mcp-secops).
- From a
CLAUDE.md in the working directory tree.
- From environment variables (
CHRONICLE_PROJECT_ID, CHRONICLE_CUSTOMER_ID, CHRONICLE_REGION).
- Ask the user.
Do NOT invent values.
Procedure
-
Pull case header + alerts + comments in parallel (one message, three tool calls):
mcp__remote-mcp-secops__get_case with expand=tasks,tags,products
mcp__remote-mcp-secops__list_case_alerts
mcp__remote-mcp-secops__list_case_comments with orderBy=CreateTime desc
-
Pull one representative alert's full payload with mcp__remote-mcp-secops__fetch_alert_data against the most recent siemAlertId from the alerts list. This gives entities, raw event, and rule labels (MITRE, owner, guide_*, references).
- Do NOT fetch all alerts in parallel — each payload can be 50–80k tokens and will blow context.
- If
fetch_alert_data returns a "saved to file" truncation, you do NOT need to read it back. The first alert's payload is usually enough to characterise the pattern. State in your output what you did not read.
- Only pull a second alert if the events look meaningfully different (different actor, different rule path, different target system).
-
Synthesise the report in the format below. Do not show tool calls or process — just the report.
Output format
Exactly three sections, ## headers, no preamble, no closing offer.
## Analysis
One paragraph. State:
- What the case is — rule name, alert count, time window.
- Who the actor is and whether their role/permissions make the activity plausible.
- The current verdict if one exists (AI/Gemini tag, playbook status, analyst comments).
- Your independent take, including any gaps that would block you from closing.
If it's a false positive, say so. If it isn't, say so. If you can't tell, say what's missing.
## Evidences
Bullet list. Each bullet is one concrete, citable fact pulled from the data. Cover:
- Actor identity (name, role, division, manager, account state) and whether it matches expected permissions.
- Alert count, rule ID, time window, MITRE technique(s).
- Targets of the activity (which policies, hosts, accounts, URLs).
- Specific change diffs where relevant (e.g. users moved between include/exclude lists, MFA scope shrinking, policy deletions, auth method swaps).
- Source IPs / ASNs / geo, with an honest read on whether they're suspicious or expected (corp VPN, cloud egress, residential, Tor, etc.).
- Client fingerprint (UA, OS, session continuity).
- Existing automation and AI verdicts; which tags are set (
ai:verified, user:super, domain:*, etc.).
- Explicit gaps: missing change tickets, no analyst comments, unverified assumptions, AI-only verification on a high-blast-radius change.
Bold gap bullets with **Gap —** so they stand out.
## References
Bullet list of URLs the reader can open to verify the analysis:
- Case URL:
https://<tenant>.backstory.chronicle.security/cases/<caseId>/overview (use the actual tenant subdomain from the alert payload's sourceSystemUrl).
- Detection rule URL (from any alert's
sourceRuleUrl).
- Every individual alert URL (from each alert's
sourceUrl).
- MITRE technique pages for techniques cited in the rule labels (
https://attack.mitre.org/techniques/<id>/).
- Any external references listed in the rule's
references label.
Tone
Audience: SOC analysts and incident responders. Technical, time-constrained, hostile to fluff.
- Direct. Cut to the chase. No "let's dive into".
- Honest. If the AI verdict is wrong, unverified, or unsafe to act on, say so plainly.
- Professional. Jargon is fine and expected — MITRE IDs, MFA, ASN, IdP, SSO, T1556, 4-eyes, etc. — no need to expand.
- No sycophancy, no closing offers ("let me know if you'd like…"), no recap of what the user asked.
- No emojis.
## headers only. No ### or deeper. No table-of-contents.
What NOT to do
- Don't auto-close the case, update its status, or post comments. Read-only.
- Don't recommend response actions unless the evidence clearly supports them. If the case looks like a confirmed FP with a verified change ticket, say "safe to close" — otherwise, list what's missing.
- Don't invent change tickets, ownership, or business context not present in the data.
- Don't restate the rule's own
guide_response as your conclusion. Quote it only to flag a gap (e.g. "the rule says verify with the IAM team — no such comment exists").
- Don't start with "Based on the data" or "According to the case". State the fact.
- Don't offer to do more work at the end. If there's a follow-up worth doing, mention it inline in Evidences as a gap.