{"serverId":"mcp-registry/io.github.dmarc-examiner/mcp","tools":[{"name":"check_dmarc","fixed":{"name":"check_dmarc","description":"Inspect the public DMARC record at _dmarc.<domain>. The domain does not need to belong to your organization. Returns parsed policy and rua/ruf addresses.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain"],"properties":{"domain":{"type":"string","description":"Domain to inspect — does not need to belong to your organization."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":126,"tokensAfter":126},{"name":"create_domain","fixed":{"name":"create_domain","description":"Add a new domain to the organization. Response includes the reporting_email and dmarc_record values to publish in DNS. May return 402 if the plan domain limit has been reached.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["name"],"properties":{"name":{"type":"string","description":"Domain name to monitor (e.g. \"example.com\"). Stored lowercased."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":132,"tokensAfter":132},{"name":"create_webhook","fixed":{"name":"create_webhook","description":"Create a new webhook endpoint. URL must start with https://. Returns 422 if the organization has reached its webhook limit.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["url","name"],"properties":{"url":{"type":"string","description":"HTTPS URL events will be POSTed to"},"name":{"type":"string","description":"Human-readable label"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":127,"tokensAfter":127},{"name":"delete_domain","fixed":{"name":"delete_domain","description":"Remove a domain from monitoring. Soft-deletes; historical reports remain accessible.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain_id"],"properties":{"domain_id":{"type":"string","description":"Domain UUID"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":94,"tokensAfter":94},{"name":"delete_webhook","fixed":{"name":"delete_webhook","description":"Delete a webhook endpoint permanently.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["webhook_id"],"properties":{"webhook_id":{"type":"string","description":"Webhook UUID"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":82,"tokensAfter":82},{"name":"export_report_csv","fixed":{"name":"export_report_csv","description":"Export a DMARC report as CSV","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["report_id"],"properties":{"report_id":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":72,"tokensAfter":72},{"name":"get_domain","fixed":{"name":"get_domain","description":"Get details of a specific domain","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain_id"],"properties":{"domain_id":{"type":"string","description":"Domain UUID"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":79,"tokensAfter":79},{"name":"get_forensic_report","fixed":{"name":"get_forensic_report","description":"Get the full detail of a forensic (RUF) report by UUID, including the raw failed message envelope.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["report_id"],"properties":{"report_id":{"type":"string","description":"Forensic report UUID"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":102,"tokensAfter":102},{"name":"get_forensic_reports_statistics","fixed":{"name":"get_forensic_reports_statistics","description":"Aggregated forensic-report counters grouped by auth failure type, delivery result, source IP (with geolocation) and reported domain.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":81,"tokensAfter":81},{"name":"get_forensic_reports_summary","fixed":{"name":"get_forensic_reports_summary","description":"Summary of forensic activity in the last 7 days — useful for daily digest views.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":66,"tokensAfter":66},{"name":"get_report","fixed":{"name":"get_report","description":"Get details of a specific DMARC report","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["report_id"],"properties":{"report_id":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":72,"tokensAfter":72},{"name":"get_report_statistics","fixed":{"name":"get_report_statistics","description":"Get statistics for a specific DMARC report","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["report_id"],"properties":{"report_id":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":77,"tokensAfter":77},{"name":"list_alerts","fixed":{"name":"list_alerts","description":"List alerts for your organization","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"page":{"type":"number"},"status":{"type":"string"},"per_page":{"type":"number"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":79,"tokensAfter":79},{"name":"list_domains","fixed":{"name":"list_domains","description":"List all monitored domains in your organization","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"page":{"type":"number"},"per_page":{"type":"number"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":75,"tokensAfter":75},{"name":"list_forensic_reports","fixed":{"name":"list_forensic_reports","description":"List DMARC RUF (forensic) reports with optional filtering and pagination. Returns 403 if the plan does not include forensic reports (Pro plan and above).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"page":{"type":"number"},"date_to":{"type":"string","description":"Inclusive upper bound on arrival_date"},"per_page":{"type":"number"},"date_from":{"type":"string","description":"Inclusive lower bound on arrival_date (ISO 8601 / \"YYYY-MM-DD HH:MM:SS\")"},"domain_id":{"type":"string","description":"Filter by domain UUID"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":182,"tokensAfter":182},{"name":"list_reports","fixed":{"name":"list_reports","description":"List DMARC reports for your organization","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"page":{"type":"number"},"domain":{"type":"string"},"date_to":{"type":"string"},"per_page":{"type":"number"},"date_from":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":97,"tokensAfter":97},{"name":"list_webhooks","fixed":{"name":"list_webhooks","description":"List webhook endpoints configured for the organization. Returns 403 if the plan does not include advanced alerting (Pro and above).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":76,"tokensAfter":76},{"name":"update_webhook","fixed":{"name":"update_webhook","description":"Update a webhook. Any combination of url, name and is_active may be provided; URL must remain HTTPS.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["webhook_id"],"properties":{"url":{"type":"string","description":"New HTTPS URL"},"name":{"type":"string","description":"New label"},"is_active":{"type":"boolean","description":"Enable/disable delivery without losing config"},"webhook_id":{"type":"string","description":"Webhook UUID"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":154,"tokensAfter":154}],"toolsChanged":18,"tokensSaved":0,"todo":[{"tool":"dismiss_alert","params":["alert_id"]},{"tool":"export_report_csv","params":["report_id"]},{"tool":"get_report","params":["report_id"]},{"tool":"get_report_statistics","params":["report_id"]},{"tool":"list_alerts","params":["page","status","per_page"]},{"tool":"list_domains","params":["page","per_page"]},{"tool":"list_forensic_reports","params":["page","per_page"]},{"tool":"list_reports","params":["page","domain","date_to","per_page","date_from"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}