Skip to main content
Glama

postfix_provider_playbook

Read-only

Recovery playbooks for the big mailbox providers: Gmail / Google Workspace (421 4.7.28 rate limit, 5.7.26-5.7.32 SPF/DKIM/DMARC, PTR, TLS, reputation), Microsoft Outlook.com / Microsoft 365 (S3150 block list with SNDS/JMRP, 5.7.606-649…

Instructions

Recovery playbooks for the big mailbox providers: Gmail / Google Workspace (421 4.7.28 rate limit, 5.7.26-5.7.32 SPF/DKIM/DMARC, PTR, TLS, reputation), Microsoft Outlook.com / Microsoft 365 (S3150 block list with SNDS/JMRP, 5.7.606-649 banned IP, 5.7.511, 4.7.650, SC/DY/OU/RP codes, 5.7.515, 5.7.705-750) and Yahoo / AOL ([TSS04]/[TS*] deferrals, [TSS09], [BL21]/[BL23], 5.7.9). Each playbook says what the code means, whether Postfix will retry or retrying is pointless, ordered steps (Postfix-specific, e.g. a dedicated transport with destination_concurrency_limit = 1 for Gmail 4.7.28; never flush the queue at a throttling receiver), and the provider's official pages. Modes: with no arguments, scans the queue and the mail log (since, default 24h) and returns the playbooks for what is failing here with evidence counts and affected domains; with reply, looks up one pasted SMTP reply without reading the server; with id, returns one playbook. Read-only: it never contacts the providers or changes the queue.

Input Schema

NameRequiredDescriptionDefault
idNoreturn this one playbook, e.g. gmail-4.7.28, microsoft-s3150, yahoo-deferred (see available)
replyNoone SMTP reply or delay reason to look up, as it appears in the log or postqueue (e.g. 'host gmail-smtp-in.l.google.com[...] said: 421-4.7.28 ...'); when set the queue and log are not read
sinceNolog window when scanning the server, e.g. 1h, 24h (default), 7d, or all
domainNorecipient domain of reply, used to recognise the provider when the reply names no host (e.g. outlook.com)
providerNoonly this provider when scanning the server: gmail, microsoft or yahoo

Output Schema

NameRequiredDescriptionDefault
modeYesserver (queue and log were scanned), reply (one reply was looked up) or id (one playbook by id)
lookupNomode reply: provider, code, whether Postfix retries, category, and the playbook (null if none applies)
serverNomode server: playbooks for what is failing, with evidence counts, codes seen and affected domains, most deliveries affected first
playbookNomode id: the playbook
availableNoevery built-in playbook id; included when nothing matched

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.2.1

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, and the description reinforces this with substantive detail: it never contacts providers, never changes the queue, and reply-mode does not read the server. It also discloses the default log window (24h) and what a scan returns (evidence counts, affected domains).

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?

Front-loaded with purpose and provider coverage, then modes, then the read-only guarantee. The enumeration of error codes is dense but is the actual substance of the tool rather than filler; a bulleted mode list would read slightly better than the single running paragraph.

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?

Output schema exists, so return value shape needn't be explained; annotations cover safety. What remains—modes, defaults, evidence produced by a scan, and the no-side-effect guarantee—is all present. Nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100% with good per-parameter examples, so the baseline is 3; the description adds interaction semantics the schema cannot express well—that passing 'reply' suppresses the queue/log read, and that 'since' only applies when scanning. Otherwise it mostly mirrors the schema's parameter intent.

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 resource (recovery playbooks for Gmail/Microsoft/Yahoo SMTP failures) with the exact error codes covered, so an agent can immediately tell it apart from postfix_log_stats or postfix_queue_summary. The three operating modes are named up front.

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

Usage Guidelines5/5

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

Explicit routing: no arguments scans queue+log, 'reply' looks up a pasted SMTP reply without reading the server, 'id' returns a single playbook. This effectively states when to use each mode and what the alternative costs, leaving nothing to inference.

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