Skip to main content
Glama

Parse DMARC Aggregate Report

parse_dmarc_report
Read-onlyIdempotent

Parses one DMARC aggregate (RUA) report to show which sources sent mail as your domain, how many messages, and SPF/DKIM alignment. Accepts base64 XML, .gz, or .zip.

Instructions

Use this when the user uploads or pastes a DMARC aggregate (RUA) XML report and asks what it says. Parse ONE DMARC aggregate (RUA) report into readable per-source aggregates: who sent mail as the domain, how much, and what share was SPF/DKIM aligned. Pass the file's bytes base64-encoded in content_base64 (XML, .gz or .zip; up to 2 MiB decoded) with an optional filename. Nothing is stored — the report is parsed and discarded.

Input Schema

NameRequiredDescriptionDefault
filenameNoOptional original attachment filename, recorded in logs only — format detection is content-based, so this changes nothing about parsing.
content_base64YesOne DMARC aggregate (RUA) report file, base64-encoded: the .xml, .xml.gz or .zip attachment exactly as received, up to 2 MiB decoded. Encode the file bytes — do not paste raw XML here.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.2.1
    • addedInput schema / properties / content_base64 / description
      Added value: +"One DMARC aggregate (RUA) report file, base64-encoded: the .xml, .xml.gz or .zip attachment exactly as received, up to 2 MiB decoded. Encode the file bytes — do not paste raw XML here."
    • addedInput schema / properties / filename / description
      Added value: +"Optional original attachment filename, recorded in logs only — format detection is content-based, so this changes nothing about parsing."
  2. First observedv0.1.0

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description still adds genuinely useful behavior the annotations do not: statelessness ('Nothing is stored — the report is parsed and discarded'), accepted input formats, and a 2 MiB decoded ceiling. Malformed-input or error behavior is not covered, keeping it out of the top band.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the usage trigger and then the mechanics. Mostly tight, though the format list and 2 MiB cap partly duplicate what the schema already states, which is minor redundancy rather than bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only parsing tool with no output schema, the description supplies what an agent needs: the trigger, input encoding and formats, size limit, and a summary of the returned per-source alignment data. Nothing essential to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents base64 encoding, accepted formats, the size cap, and the log-only nature of filename. The description largely restates these facts rather than adding syntax or semantics beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (parse) and resource (DMARC aggregate RUA report), then goes further to describe the output shape: per-source aggregates covering sender, volume, and SPF/DKIM alignment share. An agent can distinguish it from unrelated siblings like check_propagation or validate_dmarc_record without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The opening sentence gives an explicit trigger condition (user uploads/pastes a DMARC RUA report and asks what it says), and 'Parse ONE' constrains it to a single report per call. It names no alternative or when-not condition, so it stops short of the top of the scale.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.