Skip to content

io.inboxguard/email-deliverability

by inboxguard.io · remote · no sign-in to list tools · v1.2.0 · published by io.inboxguard

Scan and fix a domain's email deliverability (SPF, DKIM, DMARC, MTA-STS, BIMI, DNS blocklists).

Deletes · 2Changes · 9

28 tools: 2 can delete or cancel things, 9 change things and 17 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http email-deliverability https://mcp.inboxguard.io/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "scan_domain" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The description's first verb is "run": a word for a change.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

28 tools

Deletes or cancels 2Claude Code: deny
  • apply_dns_fixApply a DNS fix plan to a tracked domain by publishing records at the connected registrar.No findings

    Why it is in this group

    • The name "apply_dns_fix" says "apply": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Apply a DNS fix plan to a tracked domain by publishing records at the connected registrar. DESTRUCTIVE: it creates/updates/deletes DNS records. Two-step by design — first call get_dns_fix_plan, then pass its `connectionId` and `ops` here verbatim. The server re-derives the diff from the latest scan and rejects any op that no longer matches, so an agent can never apply arbitrary records. Requires an owner/admin API key with write or full scope. Re-scan afterward to confirm the fix.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
    • title: Apply the DNS fix plan
  • remove_domainStop monitoring a domain and delete it (and its scan history) from the account.No findings

    Why it is in this group

    • The name "remove_domain" says "remove": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Stop monitoring a domain and delete it (and its scan history) from the account. DESTRUCTIVE and not reversible. Requires an owner/admin API key with write or full scope. (To ADD a domain, run scan_domain with this API key — authenticated scans auto-track the domain.)

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
    • title: Remove a monitored domain
Changes things 9Claude Code: ask
  • check_blocklistsCheck a domain (apex + MX-host IPs) against supported DNS blocklists and return listings, targets checked, and issues (authoritative-side queries; no public-resolver false positive…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Check a domain (apex + MX-host IPs) against supported DNS blocklists and return listings, targets checked, and issues (authoritative-side queries; no public-resolver false positives).

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • title: Check DNS blocklists
  • connect_inbox_placementStore the org's seed-list inbox-placement provider + API key (provider: 'mailreach' or 'glockapps'; GlockApps also needs projectId).No findings

    Why it is in this group

    • The description's first verb is "store": a word for a change.
    Description, as the server wrote it
    Store the org's seed-list inbox-placement provider + API key (provider: 'mailreach' or 'glockapps'; GlockApps also needs projectId). Enables start_inbox_placement_test. Requires an owner/admin API key with write or full scope.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
    • title: Connect an inbox-placement provider
  • connect_sndsStore this org's Microsoft SNDS (Smart Network Data Services) automated-data-access key so InboxGuard syncs per-IP Outlook/Hotmail reputation daily.No findings

    Why it is in this group

    • The description's first verb is "store": a word for a change.
    Description, as the server wrote it
    Store this org's Microsoft SNDS (Smart Network Data Services) automated-data-access key so InboxGuard syncs per-IP Outlook/Hotmail reputation daily. Get the key from the SNDS Automated Data Access page (https://sendersupport.olc.protection.outlook.com/snds/). Requires an owner/admin API key with write or full scope. Data appears within ~24h of the first sync.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
    • title: Connect Microsoft SNDS
  • create_notification_channelCreate a channel that InboxGuard alerts are delivered to: webhook (HMAC-signed), Slack, Microsoft Teams, PagerDuty, SMS, or email.No findings

    Why it is in this group

    • The name "create_notification_channel" says "create": a word for a change.
    Description, as the server wrote it
    Create a channel that InboxGuard alerts are delivered to: webhook (HMAC-signed), Slack, Microsoft Teams, PagerDuty, SMS, or email. Returns the channel id, and for kind=webhook the `signing_secret` used to verify deliveries. Requires an owner/admin API key with write or full scope.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
    • title: Create a notification channel
  • resolve_alertMark an alert resolved (or reopen it with resolved=false).No findings

    Why it is in this group

    • The name "resolve_alert" says "resolve": a word for reading.
    • The description's first verb is "mark": a word for a change.
    Description, as the server wrote it
    Mark an alert resolved (or reopen it with resolved=false). Requires an API key with write/full scope. Resolving an already-resolved alert is a no-op.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • title: Resolve alert
  • scan_domainRun a full email-deliverability scan (SPF, DKIM, DMARC, MTA-STS, TLS-RPT, MX TLS, BIMI, DNS blocklists) for a domain and return a 0-100 score with per-check findings.1 finding

    Why it is in this group

    • The description's first verb is "run": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "scan_domain" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The description's first verb is "run": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Run a full email-deliverability scan (SPF, DKIM, DMARC, MTA-STS, TLS-RPT, MX TLS, BIMI, DNS blocklists) for a domain and return a 0-100 score with per-check findings. A check can come back `not_applicable` (does not apply to this domain, e.g. MTA-STS on a domain with no MX — excluded from the score, not a failure) or `unverified` (could not be determined this scan, e.g. DKIM behind an ESP with a random per-tenant selector like Amazon SES Easy DKIM — never treat as a failure). `scoreSubtitle` explains the denominator when anything was excluded. Runs at your plan tier (full blocklist set on paid plans) and saves the scan to the domain history in your account.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • title: Scan domain deliverability
  • scan_domains_batchQueue an asynchronous batch scan of up to 50 domains and get a jobId immediately (avoids the 30s per-call limit).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Queue an asynchronous batch scan of up to 50 domains and get a jobId immediately (avoids the 30s per-call limit). Poll get_scan_job with the jobId until status is succeeded/partial/failed to read per-domain scores. Requires an API key with write or full scope. These scans are NOT added to monitoring or saved to history.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
    • title: Batch-scan domains (async)
  • start_inbox_placement_testStart a seed-list inbox-placement test.No findings

    Why it is in this group

    • The name "start_inbox_placement_test" says "start": a word for a change.
    Description, as the server wrote it
    Start a seed-list inbox-placement test. Returns a testId, the seed addresses to mail your campaign to, and (if the provider requires it) a header to insert. After sending to the seeds, poll get_inbox_placement_test for the Inbox/Spam/Missing verdict. Requires inbox-placement to be connected and an owner/admin API key with write or full scope.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
    • title: Start an inbox-placement test
Only reads 17Claude Code: allow
  • analyze_headersRe-verify SPF, DKIM, DMARC, and ARC from a raw RFC 5322 email (full message or just the headers block).No findings

    Why it is in this group

    • The name "analyze_headers" says "analyze": a word for reading.
    Description, as the server wrote it
    Re-verify SPF, DKIM, DMARC, and ARC from a raw RFC 5322 email (full message or just the headers block). Returns InboxGuard's independent verdict (`ours`), the sender's own Authentication-Results (`theirs`), whether they `agree`, and parsed envelope/headers — useful for spotting forged or mismatched auth results. No account needed.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • title: Analyze raw email headers
  • get_deliverability_reportReturn a structured deliverability report for a tracked domain: the latest score + letter grade + `scoreSubtitle` (explains the denominator when a check was excluded, e.g.No findings

    Why it is in this group

    • The name "get_deliverability_report" says "get": a word for reading.
    Description, as the server wrote it
    Return a structured deliverability report for a tracked domain: the latest score + letter grade + `scoreSubtitle` (explains the denominator when a check was excluded, e.g. "80/100 · scored on 65 of 83 applicable points · 1 check unverified"), each check's status (pass/warn/fail/unverified/not_applicable — `not_applicable` means the check doesn't apply to this domain and `unverified` means it couldn't be checked this scan; neither is a failure), the top issues to fix, blocklist count, and DMARC policy. Includes `pdfUrl` — the same auth-gated endpoint that returns a branded one-page PDF (send your bearer token). Use this to summarize a domain's posture or hand a client a report.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • title: Get a deliverability report
  • get_deliverability_scoreReturn the overall deliverability score and letter grade for a domain (runs a fresh scan).No findings

    Why it is in this group

    • The name "get_deliverability_score" says "get": a word for reading.
    Description, as the server wrote it
    Return the overall deliverability score and letter grade for a domain (runs a fresh scan).

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • title: Get deliverability score
  • get_dmarc_summarySummarize ingested DMARC aggregate (RUA) reports for a domain tracked in your InboxGuard account: report volume, pass rate, top sending sources, and the rua inbox to publish.No findings

    Why it is in this group

    • The name "get_dmarc_summary" says "get": a word for reading.
    Description, as the server wrote it
    Summarize ingested DMARC aggregate (RUA) reports for a domain tracked in your InboxGuard account: report volume, pass rate, top sending sources, and the rua inbox to publish. The domain must already be added to the account, and the plan must include DMARC ingest.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • title: Get DMARC summary
  • get_dns_fix_planCompute the exact DNS-record changes needed to fix a tracked domain's deliverability, based on its latest scan and the org's connected registrar (Cloudflare/Route 53/GoDaddy/Namech…No findings

    Why it is in this group

    • The name "get_dns_fix_plan" says "get": a word for reading.
    Description, as the server wrote it
    Compute the exact DNS-record changes needed to fix a tracked domain's deliverability, based on its latest scan and the org's connected registrar (Cloudflare/Route 53/GoDaddy/Namecheap). Read-only — nothing changes. Returns the `ops` to pass verbatim to apply_dns_fix, plus `manualReview` items that need a human decision (SPF sender list, DKIM keys, BIMI logo). Requires the domain to be tracked, a scan to exist, and a registrar connection covering the zone.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • title: Preview the DNS fix plan
  • get_domainFull detail for one tracked domain: the domain record, the latest scan with all per-check findings (spf, dmarc, dkim, ptr, mta_sts, tls_rpt, mx_tls, blocklist), recent score histor…No findings

    Why it is in this group

    • The name "get_domain" says "get": a word for reading.
    Description, as the server wrote it
    Full detail for one tracked domain: the domain record, the latest scan with all per-check findings (spf, dmarc, dkim, ptr, mta_sts, tls_rpt, mx_tls, blocklist), recent score history, open/recent alerts, and Google Postmaster stats when connected.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • title: Get domain detail
  • get_inbox_placement_statusReport whether a seed-list inbox-placement provider is connected for the org, which provider, and how many tests have run.No findings

    Why it is in this group

    • The name "get_inbox_placement_status" says "get": a word for reading.
    Description, as the server wrote it
    Report whether a seed-list inbox-placement provider is connected for the org, which provider, and how many tests have run. Lists the supported providers when not connected.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • title: Get inbox-placement status
  • get_inbox_placement_testPoll a seed-list inbox-placement test by testId.No findings

    Why it is in this group

    • The name "get_inbox_placement_test" says "get": a word for reading.
    Description, as the server wrote it
    Poll a seed-list inbox-placement test by testId. Returns status (running/completed/failed) and, once measured, the Inbox/Spam/Missing counts and inbox-placement score (0–100). Call after sending your campaign to the seed addresses from start_inbox_placement_test.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • title: Get an inbox-placement test
  • get_portfolioOrg-wide deliverability rollup across every monitored domain: average score + overall grade, the grade distribution (how many domains are A/B/C/D/F/unscored), total open alerts, th…No findings

    Why it is in this group

    • The name "get_portfolio" says "get": a word for reading.
    Description, as the server wrote it
    Org-wide deliverability rollup across every monitored domain: average score + overall grade, the grade distribution (how many domains are A/B/C/D/F/unscored), total open alerts, the domains needing attention (lowest score / open alerts first), and a per-client-group breakdown. Use this for an at-a-glance portfolio health summary across an agency or multi-domain account.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • title: Get the domain portfolio rollup
  • get_scan_jobPoll an async batch scan started with scan_domains_batch: returns status (queued/running/succeeded/partial/failed), completed count, and per-domain results (domain, ok, score, grad…No findings

    Why it is in this group

    • The name "get_scan_job" says "get": a word for reading.
    Description, as the server wrote it
    Poll an async batch scan started with scan_domains_batch: returns status (queued/running/succeeded/partial/failed), completed count, and per-domain results (domain, ok, score, grade) as they finish.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • title: Get batch-scan job
  • get_snds_ip_statsReturn the latest per-IP reputation from Microsoft SNDS for the org's sending IPs: filter result (GREEN/YELLOW/RED), complaint-rate band, spam-trap hits, message volume, and curren…No findings

    Why it is in this group

    • The name "get_snds_ip_stats" says "get": a word for reading.
    Description, as the server wrote it
    Return the latest per-IP reputation from Microsoft SNDS for the org's sending IPs: filter result (GREEN/YELLOW/RED), complaint-rate band, spam-trap hits, message volume, and current block status. Requires SNDS to be connected (see connect_snds / get_snds_status).

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • title: Get Microsoft SNDS per-IP stats
  • get_snds_statusReport whether Microsoft SNDS is connected for the org, the last sync time + status, how many sending IPs are tracked, and how many are currently blocked by Outlook/Hotmail.No findings

    Why it is in this group

    • The name "get_snds_status" says "get": a word for reading.
    Description, as the server wrote it
    Report whether Microsoft SNDS is connected for the org, the last sync time + status, how many sending IPs are tracked, and how many are currently blocked by Outlook/Hotmail. Use before get_snds_ip_stats to confirm the integration is live.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • title: Get Microsoft SNDS status
  • list_alertsList the account's deliverability alerts (score drops, check failures, blocklist listings).No findings

    Why it is in this group

    • The name "list_alerts" says "list": a word for reading.
    Description, as the server wrote it
    List the account's deliverability alerts (score drops, check failures, blocklist listings). Defaults to open alerts only.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • title: List alerts
  • list_domainsList the account's tracked domains with latest scan score, last scan time, and open alert count.No findings

    Why it is in this group

    • The name "list_domains" says "list": a word for reading.
    Description, as the server wrote it
    List the account's tracked domains with latest scan score, last scan time, and open alert count.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • title: List tracked domains
  • list_inbox_placement_testsList recent seed-list inbox-placement tests for the org (most recent first) with their status and Inbox/Spam/Missing scores.No findings

    Why it is in this group

    • The name "list_inbox_placement_tests" says "list": a word for reading.
    Description, as the server wrote it
    List recent seed-list inbox-placement tests for the org (most recent first) with their status and Inbox/Spam/Missing scores.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • title: List inbox-placement tests
  • list_registrar_connectionsList the registrar accounts (Cloudflare, Route 53, GoDaddy, Namecheap) connected to the org — provider, verification, last-used time — plus the supported providers.No findings

    Why it is in this group

    • The name "list_registrar_connections" says "list": a word for reading.
    Description, as the server wrote it
    List the registrar accounts (Cloudflare, Route 53, GoDaddy, Namecheap) connected to the org — provider, verification, last-used time — plus the supported providers. Use this to check whether the detect-and-fix loop (get_dns_fix_plan / apply_dns_fix) is available before attempting it.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • title: List registrar connections
  • list_scansList recent scans (id, domain, run time, score) across all tracked domains, or for one domain when a name is given.No findings

    Why it is in this group

    • The name "list_scans" says "list": a word for reading.
    Description, as the server wrote it
    List recent scans (id, domain, run time, score) across all tracked domains, or for one domain when a name is given.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • title: List scan history

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.2.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http email-deliverability https://mcp.inboxguard.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__email-deliverability__get_deliverability_score",
      "mcp__email-deliverability__get_dmarc_summary",
      "mcp__email-deliverability__list_domains",
      "mcp__email-deliverability__get_domain",
      "mcp__email-deliverability__list_alerts",
      "mcp__email-deliverability__list_scans",
      "mcp__email-deliverability__get_dns_fix_plan",
      "mcp__email-deliverability__analyze_headers",
      "mcp__email-deliverability__get_scan_job",
      "mcp__email-deliverability__list_registrar_connections",
      "mcp__email-deliverability__get_snds_status",
      "mcp__email-deliverability__get_snds_ip_stats",
      "mcp__email-deliverability__get_inbox_placement_status",
      "mcp__email-deliverability__get_inbox_placement_test",
      "mcp__email-deliverability__list_inbox_placement_tests",
      "mcp__email-deliverability__get_deliverability_report",
      "mcp__email-deliverability__get_portfolio"
    ],
    "ask": [
      "mcp__email-deliverability__scan_domain",
      "mcp__email-deliverability__check_blocklists",
      "mcp__email-deliverability__resolve_alert",
      "mcp__email-deliverability__scan_domains_batch",
      "mcp__email-deliverability__create_notification_channel",
      "mcp__email-deliverability__create_share_link",
      "mcp__email-deliverability__connect_snds",
      "mcp__email-deliverability__connect_inbox_placement",
      "mcp__email-deliverability__start_inbox_placement_test"
    ],
    "deny": [
      "mcp__email-deliverability__apply_dns_fix",
      "mcp__email-deliverability__remove_domain"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as email-deliverability. Review it before you use it.