Claude Skill

Abnormal Security Cases

Abnormal Security abuse mailbox cases: user-reported email submissions, case statuses and judgments, the case lifecycle, bulk and remediation actions, and phishing simulation handling.

LLM Mart · 0 points · 0 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download wyre-ai-msp-claude-plugins-msp-claude-plugins_abnormal_abnormal-security_skills_cases-147da75.zip · 3 KB
Part of wyre-ai/msp-claude-plugins — 48 skills

Install

skills CLI npx skills add https://github.com/WYRE-AI/msp-claude-plugins/tree/main/msp-claude-plugins/abnormal/abnormal-security/skills/cases
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install wyre-ai-msp-claude-plugins@llmmart
Git git clone https://github.com/WYRE-AI/msp-claude-plugins.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole wyre-ai/msp-claude-plugins collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

Abnormal Security Abuse Mailbox Cases

Overview

Abnormal Security's Abuse Mailbox automatically processes user-reported suspicious emails. When users forward or report emails to a designated abuse mailbox address, Abnormal analyzes the reported message and creates a case with an AI-generated judgment. This skill covers case lifecycle, triage workflows, remediation actions, and bulk operations.

Anti-triggers

  • A compromised mailbox rather than a reported email — sign-in anomalies, new inbox rules, and session revocation have no surface on this server at all; investigate identity in the M365 tenant, use cipp-users.
  • Threats Abnormal found on its own — no user reported them, so no case exists; use Abnormal Security Threats.
  • User-reported phishing in a different platform — IRONSCALES runs its own report-to-incident loop from its Outlook and Gmail add-ins, with separate IDs and its own classification verbs; use IRONSCALES Incidents.
  • A user who reported a simulated phish — campaign reporting rates belong to the training platform; use KnowBe4 Phishing.

Case Lifecycle

User Reports Email
       |
       v
  Case Created (status: Open)
       |
       v
  AI Analysis (judgment generated)
       |
       +---> Malicious   ---> Auto-Remediate (if configured)
       |
       +---> Suspicious  ---> Analyst Review Required
       |
       +---> Spam         ---> Auto-Dismiss (if configured)
       |
       +---> Safe         ---> Auto-Dismiss (if configured)
       |
       v
  Analyst Action
       |
       +---> Remediate (quarantine/delete across org)
       |
       +---> Mark Not Spam (release to inbox)
       |
       +---> Dismiss (close case, no action)
       |
       v
  Case Closed (status: Done)

Case Field Reference

Core Fields

Field Type Description
caseId number Unique case identifier — numeric, unlike threatId
severity string Severity level of the case
affectedEmployee string Email address of the user who reported
firstReported datetime When the case was first reported

Judgment Fields

Field Type Description
overallStatus string Case status: Open, Acknowledged, Done
judgmentStatus string AI judgment: Malicious, Spam, Safe, No Action Needed
customerVisibleTime datetime When the case became visible in portal

Reported Message Fields

Field Type Description
reportedMessage.subject string Subject of the reported email
reportedMessage.senderAddress string Sender of the reported email
reportedMessage.senderName string Display name of the sender
reportedMessage.recipientAddress string Recipient of the reported email
reportedMessage.receivedTime datetime When the reported email was received
reportedMessage.attackType string Detected attack type (if malicious)

Case Judgments

Judgment Description Recommended Action
Malicious Confirmed threat (BEC, phishing, malware) Remediate across organization
Spam Unsolicited bulk email, marketing Dismiss or move to junk
Safe Legitimate email, no threat detected Dismiss, notify user it is safe
No Action Needed Phishing simulation or already remediated Dismiss

MCP Tools

The cases domain is read-only. Two tools, both GETs. There is no tool that changes a case's state, assigns it to an analyst, dismisses it, or closes it. Case state changes happen in the Abnormal portal, not through this server — an agent can read and reason about a case, then it has to hand the actual disposition to a human in the UI.

Tool Description Parameters
abnormal_cases_list List cases pageSize (default 100, max 100), pageNumber (1-indexed), filter (OData string)
abnormal_cases_get Get one case by ID caseId (required, number)

There is no date-range parameter. Narrow by time through the OData filter string: createdTime gt 2026-03-01T00:00:00Z.

ID vocabulary

caseId is a number — 12345, not "12345". The neighbouring threatId used by abnormal_threats_get is a UUID string. Both are called "the ID" in conversation and they are not interchangeable; a threat UUID passed to abnormal_cases_get is a type error, not a lookup miss.

The one action this server can take on the mail behind a case is message remediation, and it is reached through the threat, not the case: abnormal_remediation_manage needs a threatId and a messageId, and a caseId is neither.

Tool Usage Examples

List cases from this month:

{
  "tool": "abnormal_cases_list",
  "parameters": {
    "filter": "createdTime gt 2026-03-01T00:00:00Z",
    "pageSize": 25
  }
}

Get case details:

{
  "tool": "abnormal_cases_get",
  "parameters": {
    "caseId": 12345
  }
}

Triage Workflows

Standard Triage Workflow

  1. List open cases - Get all cases with overallStatus eq 'Open'
  2. Sort by severity - Address critical and high severity first
  3. Review AI judgment:
    • If Malicious: verify and remediate across organization
    • If Spam: dismiss or move to junk
    • If Safe: dismiss and respond to reporter
    • If No Action Needed: dismiss (likely phishing simulation)
  4. Decide - produce the disposition and the evidence for it
  5. Hand off - the case's own state (Open → Acknowledged → Done) can only be changed in the Abnormal portal. If mail still needs pulling from inboxes, that runs through the threat: abnormal_messages_list then abnormal_remediation_manage per message.

Bulk Triage Workflow

  1. Filter cases by judgment - Start with cases judged as Malicious
  2. Review Suspicious - Manually review cases without clear judgment
  3. Batch the read, not the write - paginate abnormal_cases_list to build the full picture in one pass. There is no bulk case action to follow it with; dispositions are entered in the portal one at a time.

Escalation Criteria

Escalate a case when:

  • Multiple users report the same email
  • The reported email impersonates an executive
  • The email contains active malware or ransomware
  • Credentials may have been entered on a phishing page
  • The sender is a known vendor or partner (supply chain risk)

Case Actions — where they actually happen

The dispositions below are portal actions. None of them is an MCP tool, and none can be driven from this server.

Disposition Effect Where
Remediate Remove the email from recipients' inboxes Abnormal portal — or, per message, via abnormal_remediation_manage on the underlying threat
Mark not spam Release email back to inbox Abnormal portal only
Dismiss Close case without action Abnormal portal only

The gap matters for automation design: an agent can fully triage the queue from abnormal_cases_list and abnormal_cases_get, but the case stays Open until a human touches the portal. Write the handoff into the workflow rather than assuming the agent closed anything.

Error Handling

Common API Errors

Code Message Resolution
400 Invalid filter Check OData filter syntax
401 Unauthorized Check API token
403 Insufficient permissions Token needs abuse mailbox scope
404 Case not found Verify the case ID — and that you passed a numeric caseId, not a threat UUID
429 Rate limited Wait and retry

Best Practices

  1. Triage daily - Review abuse mailbox cases at least once per day
  2. Trust the AI judgment - Abnormal's accuracy is high; use it to prioritize
  3. Remediate every message, not "the case" - remediation is per message on the underlying threat; loop abnormal_remediation_manage and confirm each one, or you will leave the campaign half-pulled
  4. Respond to reporters - Let users know their report was reviewed
  5. Track phishing simulation reports - Monitor security awareness training effectiveness
  6. Correlate with threats - Check if reported emails match known threat campaigns
  7. Monitor false positive rate - High FP rates may indicate policy tuning needed

Related Skills

Files (msp-claude-plugins)
  • SKILL.md 9.1 KB
    ---
    name: "Abnormal Security Cases"
    description: >
      Abnormal Security abuse mailbox cases: user-reported email submissions,
      case statuses and judgments, the case lifecycle, bulk and remediation
      actions, and phishing simulation handling.
    when_to_use: >-
      When triaging or remediating user-reported suspicious emails in the
      Abnormal Security abuse mailbox. Use when: abnormal case, abuse mailbox,
      user reported email, reported phishing, case triage, case review, abnormal
      cases, abuse case management, phishing report, user submission, case
      remediation, or case judgment.
    ---
    
    # Abnormal Security Abuse Mailbox Cases
    
    ## Overview
    
    Abnormal Security's Abuse Mailbox automatically processes user-reported suspicious emails. When users forward or report emails to a designated abuse mailbox address, Abnormal analyzes the reported message and creates a case with an AI-generated judgment. This skill covers case lifecycle, triage workflows, remediation actions, and bulk operations.
    
    ## Anti-triggers
    
    - **A compromised mailbox rather than a reported email** — sign-in
      anomalies, new inbox rules, and session revocation have no surface on
      this server at all; investigate identity in the M365 tenant, use
      `cipp-users`.
    - **Threats Abnormal found on its own** — no user reported them, so no
      case exists; use `Abnormal Security Threats`.
    - **User-reported phishing in a different platform** — IRONSCALES runs
      its own report-to-incident loop from its Outlook and Gmail add-ins,
      with separate IDs and its own classification verbs; use
      `IRONSCALES Incidents`.
    - **A user who reported a simulated phish** — campaign reporting rates
      belong to the training platform; use `KnowBe4 Phishing`.
    
    ## Case Lifecycle
    
    ```
    User Reports Email
           |
           v
      Case Created (status: Open)
           |
           v
      AI Analysis (judgment generated)
           |
           +---> Malicious   ---> Auto-Remediate (if configured)
           |
           +---> Suspicious  ---> Analyst Review Required
           |
           +---> Spam         ---> Auto-Dismiss (if configured)
           |
           +---> Safe         ---> Auto-Dismiss (if configured)
           |
           v
      Analyst Action
           |
           +---> Remediate (quarantine/delete across org)
           |
           +---> Mark Not Spam (release to inbox)
           |
           +---> Dismiss (close case, no action)
           |
           v
      Case Closed (status: Done)
    ```
    
    ## Case Field Reference
    
    ### Core Fields
    
    | Field | Type | Description |
    |-------|------|-------------|
    | `caseId` | number | Unique case identifier — numeric, unlike `threatId` |
    | `severity` | string | Severity level of the case |
    | `affectedEmployee` | string | Email address of the user who reported |
    | `firstReported` | datetime | When the case was first reported |
    
    ### Judgment Fields
    
    | Field | Type | Description |
    |-------|------|-------------|
    | `overallStatus` | string | Case status: Open, Acknowledged, Done |
    | `judgmentStatus` | string | AI judgment: Malicious, Spam, Safe, No Action Needed |
    | `customerVisibleTime` | datetime | When the case became visible in portal |
    
    ### Reported Message Fields
    
    | Field | Type | Description |
    |-------|------|-------------|
    | `reportedMessage.subject` | string | Subject of the reported email |
    | `reportedMessage.senderAddress` | string | Sender of the reported email |
    | `reportedMessage.senderName` | string | Display name of the sender |
    | `reportedMessage.recipientAddress` | string | Recipient of the reported email |
    | `reportedMessage.receivedTime` | datetime | When the reported email was received |
    | `reportedMessage.attackType` | string | Detected attack type (if malicious) |
    
    ## Case Judgments
    
    | Judgment | Description | Recommended Action |
    |----------|-------------|-------------------|
    | **Malicious** | Confirmed threat (BEC, phishing, malware) | Remediate across organization |
    | **Spam** | Unsolicited bulk email, marketing | Dismiss or move to junk |
    | **Safe** | Legitimate email, no threat detected | Dismiss, notify user it is safe |
    | **No Action Needed** | Phishing simulation or already remediated | Dismiss |
    
    ## MCP Tools
    
    **The cases domain is read-only.** Two tools, both GETs. There is no tool
    that changes a case's state, assigns it to an analyst, dismisses it, or
    closes it. Case state changes happen in the Abnormal portal, not through
    this server — an agent can read and reason about a case, then it has to
    hand the actual disposition to a human in the UI.
    
    | Tool | Description | Parameters |
    |------|-------------|------------|
    | `abnormal_cases_list` | List cases | `pageSize` (default 100, max 100), `pageNumber` (1-indexed), `filter` (OData string) |
    | `abnormal_cases_get` | Get one case by ID | `caseId` (required, **number**) |
    
    There is no date-range parameter. Narrow by time through the OData
    `filter` string: `createdTime gt 2026-03-01T00:00:00Z`.
    
    ### ID vocabulary
    
    `caseId` is a **number** — `12345`, not `"12345"`. The neighbouring
    `threatId` used by `abnormal_threats_get` is a **UUID string**. Both are
    called "the ID" in conversation and they are not interchangeable; a
    threat UUID passed to `abnormal_cases_get` is a type error, not a lookup
    miss.
    
    The one action this server *can* take on the mail behind a case is
    message remediation, and it is reached through the threat, not the case:
    `abnormal_remediation_manage` needs a `threatId` and a `messageId`, and a
    `caseId` is neither.
    
    ### Tool Usage Examples
    
    **List cases from this month:**
    ```json
    {
      "tool": "abnormal_cases_list",
      "parameters": {
        "filter": "createdTime gt 2026-03-01T00:00:00Z",
        "pageSize": 25
      }
    }
    ```
    
    **Get case details:**
    ```json
    {
      "tool": "abnormal_cases_get",
      "parameters": {
        "caseId": 12345
      }
    }
    ```
    
    ## Triage Workflows
    
    ### Standard Triage Workflow
    
    1. **List open cases** - Get all cases with `overallStatus eq 'Open'`
    2. **Sort by severity** - Address critical and high severity first
    3. **Review AI judgment:**
       - If Malicious: verify and remediate across organization
       - If Spam: dismiss or move to junk
       - If Safe: dismiss and respond to reporter
       - If No Action Needed: dismiss (likely phishing simulation)
    4. **Decide** - produce the disposition and the evidence for it
    5. **Hand off** - the case's own state (Open → Acknowledged → Done) can
       only be changed in the Abnormal portal. If mail still needs pulling
       from inboxes, that runs through the threat:
       `abnormal_messages_list` then `abnormal_remediation_manage` per
       message.
    
    ### Bulk Triage Workflow
    
    1. **Filter cases by judgment** - Start with cases judged as Malicious
    2. **Review Suspicious** - Manually review cases without clear judgment
    3. **Batch the read, not the write** - paginate `abnormal_cases_list` to
       build the full picture in one pass. There is no bulk case action to
       follow it with; dispositions are entered in the portal one at a time.
    
    ### Escalation Criteria
    
    Escalate a case when:
    - Multiple users report the same email
    - The reported email impersonates an executive
    - The email contains active malware or ransomware
    - Credentials may have been entered on a phishing page
    - The sender is a known vendor or partner (supply chain risk)
    
    ## Case Actions — where they actually happen
    
    The dispositions below are portal actions. None of them is an MCP tool,
    and none can be driven from this server.
    
    | Disposition | Effect | Where |
    |-------------|--------|-------|
    | Remediate | Remove the email from recipients' inboxes | Abnormal portal — or, per message, via `abnormal_remediation_manage` on the underlying threat |
    | Mark not spam | Release email back to inbox | Abnormal portal only |
    | Dismiss | Close case without action | Abnormal portal only |
    
    The gap matters for automation design: an agent can fully triage the
    queue from `abnormal_cases_list` and `abnormal_cases_get`, but the case
    stays Open until a human touches the portal. Write the handoff into the
    workflow rather than assuming the agent closed anything.
    
    ## Error Handling
    
    ### Common API Errors
    
    | Code | Message | Resolution |
    |------|---------|------------|
    | 400 | Invalid filter | Check OData filter syntax |
    | 401 | Unauthorized | Check API token |
    | 403 | Insufficient permissions | Token needs abuse mailbox scope |
    | 404 | Case not found | Verify the case ID — and that you passed a numeric `caseId`, not a threat UUID |
    | 429 | Rate limited | Wait and retry |
    
    ## Best Practices
    
    1. **Triage daily** - Review abuse mailbox cases at least once per day
    2. **Trust the AI judgment** - Abnormal's accuracy is high; use it to prioritize
    3. **Remediate every message, not "the case"** - remediation is per message on the underlying threat; loop `abnormal_remediation_manage` and confirm each one, or you will leave the campaign half-pulled
    4. **Respond to reporters** - Let users know their report was reviewed
    5. **Track phishing simulation reports** - Monitor security awareness training effectiveness
    6. **Correlate with threats** - Check if reported emails match known threat campaigns
    7. **Monitor false positive rate** - High FP rates may indicate policy tuning needed
    
    ## Related Skills
    
    - [Abnormal Threats](../threats/SKILL.md) - Threat detection and analysis
    - [Abnormal Messages](../messages/SKILL.md) - Message analysis
    - [Abnormal API Patterns](../api-patterns/SKILL.md) - API authentication and usage
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related