Skip to content
Development
Skill

/messages

Abnormal Security message analysis: message retrieval, email header inspection, attachments, sender reputation, delivery context, and SPF/DKIM/DMARC authentication results.

From plugin
msp-claude-plugins
52200 skills146 agents200 commands4 MCP

Claude Code

$ npx -y skills add wyre-ai/msp-claude-plugins --skill messages --agent claude-code

SKILL.md

messages.SKILL.md
name: "Abnormal Security Messages"
description: >
  Abnormal Security message analysis: message retrieval, email header
  inspection, attachments, sender reputation, delivery context, and
  SPF/DKIM/DMARC authentication results.
when_to_use: >-
  When performing deep analysis or forensics on an individual email message
  in Abnormal Security. Use when: abnormal message, message analysis, email
  headers, email attachments, sender reputation, spf dkim dmarc, email
  authentication, message metadata, email delivery, abnormal email analysis,
  message inspection, or email forensics.

Abnormal Security Message Analysis

Overview

Abnormal Security provides deep message analysis capabilities beyond basic threat detection. This skill covers message retrieval, header inspection, attachment analysis, sender authentication results, and delivery context. Use it when performing forensic analysis of specific emails or investigating delivery patterns.

Anti-triggers

  • **Where a message went, or why it never arrived** — Abnormal sees

messages only as evidence attached to a detected threat. It has no delivery pipeline, no queue, and no bounce record, so "trace this email" questions belong to the gateway: use `Mimecast Message Tracking`.

  • **Removing the message from inboxes, or putting it back** — that is

the remediation surface; use `Abnormal Security Threats`.

  • **Inspecting a message a gateway is holding** — everything Abnormal

can show was already delivered. Pre-delivery holds are `SpamTitan Quarantine` or `Proofpoint Quarantine`.

Message Field Reference

These are **response** fields describing what Abnormal reports about a message. They are not tool parameters — the only parameters the message tools accept are `threatId` and `messageId`. Availability varies by message and by tenant configuration; treat any single field as best-effort.

Core Message Fields

| Field | Type | Description | |-------|------|-------------| | `abxMessageId` | string | Abnormal's identifier for the message, as returned in the `abnormal_messages_list` response | | `subject` | string | Email subject line | | `fromAddress` | string | From header email address | | `fromName` | string | From header display name | | `toAddresses` | string[] | All To: recipients | | `ccAddresses` | string[] | All CC: recipients | | `bccAddresses` | string[] | All BCC: recipients (if available) | | `sentTime` | datetime | When the email was sent | | `receivedTime` | datetime | When the email was received by Abnormal | | `internetMessageId` | string | RFC 5322 Message-ID header |

Sender Analysis Fields

| Field | Type | Description | |-------|------|-------------| | `senderAddress` | string | Envelope sender address | | `senderName` | string | Sender display name | | `senderDomain` | string | Sender domain | | `senderIpAddress` | string | Originating IP address | | `returnPath` | string | Return-Path header (envelope sender) | | `replyToEmails` | string[] | Reply-To header addresses |

Authentication Fields

| Field | Type | Description | |-------|------|-------------| | `spfResult` | string | SPF check result: pass, fail, softfail, neutral, none | | `dkimResult` | string | DKIM signature result: pass, fail, none | | `dmarcResult` | string | DMARC policy result: pass, fail, none | | `authenticationResults` | string | Full Authentication-Results header |

Attachment Fields

| Field | Type | Description | |-------|------|-------------| | `attachmentCount` | int | Number of attachments | | `attachmentNames` | string[] | Filenames of attachments | | `attachmentTypes` | string[] | MIME types of attachments | | `attachmentSizes` | int[] | Sizes of attachments in bytes |

URL Fields

| Field | Type | Description | |-------|------|-------------| | `urls` | string[] | All URLs found in message body | | `urlCount` | int | Total number of URLs |

Delivery Context

| Field | Type | Description | |-------|------|-------------| | `isRead` | boolean | Whether the recipient has read the email | | `isInternal` | boolean | Whether the email is internal (within org) | | `isExternal` | boolean | Whether the email is from outside the org | | `remediationStatus` | string | Current remediation status |

MCP Tools

Two tools, and both are scoped to a single threat. There is no separate headers tool and no tenant-wide message search — you cannot ask "show me every message from this sender". Every message lookup starts from a `threatId`.

| Tool | Description | Parameters | |------|-------------|------------| | `abnormal_messages_list` | List the messages inside one threat case. Returns message IDs and summary data. | `threatId` (required) | | `abnormal_messages_get` | Full analysis of one message: metadata, headers, URLs, attachments, and AI threat analysis — all in a single payload. | `threatId` (required), `messageId` (required) |

Headers arrive inline, not from a separate call

`abnormal_messages_get` returns the header set as part of its one response, alongside URLs, attachments and the AI analysis. Everything the *Header Analysis Workflow* below asks for comes out of that single call — there is no second, header-only fetch to make, and nothing to page through. The practical consequence is on the other side: one `abnormal_messages_get` pulls the entire substance of a customer's email into context, including recipient addresses and `Authentication-Results`, whether or not you needed the headers. Call it when you intend to do forensics on that message, not to browse.

ID vocabulary

`threatId` is a **UUID string**. `messageId` is the message identifier from the `abnormal_messages_list` response (URL-encoded when sent). Do not confuse either with `caseId`, which `abnormal_cases_get` takes as a **number**.

Tool Usage Examples

**List messages associated with a threat:**

{
  "tool": "abnormal_messages_list",
  "parameters": {
    "threatId": "184def76-3c28-4e1b-9ef0-a5abc123def4"
  }
}
``
Read more
@wyre-technology
Ships withmsp-claude-plugins

One command to supercharge Claude Code for MSP workflows. Then restart Claude Code. That's it. Documentation: mcp.wyre.ai

52200 skills146 agents4 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
52
Star history of wyre-technology/msp-claude-plugins on GitHub, a chart by star-history.com

Other skills on msp-claude-plugins.

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills11d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc13d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react2d252k
@facebook@facebookInstall Skill

Questions about messages.

Which coding agents can use messages?
messages installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.