From e6728010ab29fede61a21030f5eb2b2b643d9e66 Mon Sep 17 00:00:00 2001 From: polnikale Date: Thu, 6 Aug 2026 09:01:40 +0300 Subject: [PATCH] Document SES envelope alignment in MCP --- README.md | 11 ++++++++--- src/tools/definitions/account.ts | 8 ++++---- src/tools/output-schemas.ts | 10 +++++----- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 0116de6..1d85eb4 100644 --- a/README.md +++ b/README.md @@ -245,10 +245,10 @@ This server currently exposes 191 MCP tools. | `list_api_keys` | List company API keys as non-secret metadata for safe identification and cleanup. | | `revoke_api_key` | Permanently revoke an exact company API key by ID after checking it with `list_api_keys`. | | `delete_api_key` | Compatibility alias for `revoke_api_key`. | -| `list_websites` | List sending domains with stored aggregate, SPF, DKIM, and MAIL FROM status. | -| `add_sending_domain` | Add a sending domain and return its cohort-specific DNS setup records. | +| `list_websites` | List sending domains with DNS/readiness state and per-transport SPF alignment. | +| `add_sending_domain` | Add a sending domain and return its cohort-specific DNS setup records, including the SES envelope pair when present. | | `add_website` | Compatibility alias for `add_sending_domain`. | -| `check_website` | Read a sending domain's stored SPF, DKIM, MAIL FROM, and aggregate verification details. | +| `check_website` | Read stored SPF, DKIM, MAIL FROM, SES-envelope, aggregate verification, and transport-alignment details. | | `verify_sending_domain` | Run a fresh sending-domain DNS/provider verification and return current status and diagnostics. | | `list_integrations` | List connected integrations with connection and sync health, without returning credentials. | | `get_tracking_settings` | Read open, click, unsubscribe, attribution, UTM, click-domain, and reply-tracking settings. | @@ -273,6 +273,11 @@ legacy domains can return Amazon SES MAIL FROM and inbound-reply records. If verification is attempted before creation, the error points back to `add_sending_domain` with the requested domain. +Unified domains can also return an `envelope.` SPF/MX pair for +SES-routed messages. Publish both records. The website response includes +`spfAlignment` with separate SES and MTA verdicts; a non-null warning means +SES delivery still works but currently falls back to a non-aligned envelope. + For Shopify, call `get_integration_pixel` before relying on product views, cart activity, or browse-abandonment triggers. The result is read live from Shopify because merchants can remove the pixel independently. If diff --git a/src/tools/definitions/account.ts b/src/tools/definitions/account.ts index 8128afc..4bc2fa5 100644 --- a/src/tools/definitions/account.ts +++ b/src/tools/definitions/account.ts @@ -664,7 +664,7 @@ The response shows 'companies' (all available) and 'selectedCompanyId' (currentl { name: "list_websites", description: - "List configured sending domains with separate DNS verification, selected home-transport readiness, and SPF, DKIM, and MAIL FROM status", + "List configured sending domains with separate DNS verification, selected home-transport readiness, SPF, DKIM, and MAIL FROM status, and per-transport SPF alignment (spfAlignment.warning means SES-routed sends deliver but are not SPF-aligned)", inputSchema: { type: "object", properties: { @@ -684,7 +684,7 @@ The response shows 'companies' (all available) and 'selectedCompanyId' (currentl { name: "add_sending_domain", description: - "Add and configure a sending domain. Publish every cohort-specific DNS record returned, including DMARC when present, before calling verify_sending_domain.", + "Add and configure a sending domain. Publish every cohort-specific DNS record returned - including the SES envelope pair at envelope. (keeps SES-routed sends SPF-aligned) and DMARC when present - before calling verify_sending_domain.", inputSchema: { type: "object", properties: { @@ -724,7 +724,7 @@ The response shows 'companies' (all available) and 'selectedCompanyId' (currentl { name: "check_website", description: - "Read a sending domain's separate DNS verification, selected home-transport readiness, and SPF, DKIM, MAIL FROM diagnostics. Use verify_sending_domain to run a fresh DNS check.", + "Read a sending domain's separate DNS verification, selected home-transport readiness, SPF, DKIM, MAIL FROM diagnostics, and spfAlignment. A spfAlignment.warning means SES-routed sends deliver but are NOT SPF-aligned; publish the sesEnvelope records to fix it. Use verify_sending_domain to run a fresh DNS check.", inputSchema: { type: "object", properties: { @@ -744,7 +744,7 @@ The response shows 'companies' (all available) and 'selectedCompanyId' (currentl { name: "verify_sending_domain", description: - "Run a fresh DNS check for a configured sending domain and return DNS verification separately from selected home-transport readiness. A DNS-verified domain may still be activating in SES.", + "Run a fresh DNS check for a configured sending domain and return DNS verification separately from selected home-transport readiness. A DNS-verified domain may still be activating in SES, and a spfAlignment.warning means SES-routed sends are not SPF-aligned until the sesEnvelope records verify.", inputSchema: { type: "object", properties: { diff --git a/src/tools/output-schemas.ts b/src/tools/output-schemas.ts index 37b44e7..178d373 100644 --- a/src/tools/output-schemas.ts +++ b/src/tools/output-schemas.ts @@ -322,7 +322,7 @@ export const outputPropertiesByToolName: Record< }, list_websites: { websites: resourceListOutputProperty( - "sending domain, including DNS verification and readyToSend home-transport readiness" + "sending domain, including DNS verification, readyToSend home-transport readiness, and spfAlignment (per-transport SPF alignment with a warning when SES-routed sends are unaligned)" ), }, list_integrations: { @@ -540,24 +540,24 @@ export const outputPropertiesByToolName: Record< }, add_website: { website: resourceOutputProperty( - "Sending domain with its cohort-specific DNS records. Publish every returned record, including DMARC when present." + "Sending domain with its cohort-specific DNS records. Publish every returned record, including the SES envelope pair (envelope.) and DMARC when present." ), }, add_sending_domain: { website: resourceOutputProperty( - "Sending domain with its cohort-specific DNS records. Publish every returned record, including DMARC when present." + "Sending domain with its cohort-specific DNS records. Publish every returned record, including the SES envelope pair (envelope.) and DMARC when present." ), }, check_website: { website: resourceOutputProperty( - "sending domain with separate DNS verification and readyToSend home-transport readiness" + "sending domain with separate DNS verification, readyToSend home-transport readiness, the sesEnvelope record pair, and spfAlignment (per-transport SPF alignment; its warning means SES-routed sends are NOT SPF-aligned even though they still deliver)" ), ready: booleanOutputProperty("Whether the sender website is ready."), status: stringOutputProperty("Current processing or verification status."), }, verify_sending_domain: { website: resourceOutputProperty( - "Sending domain with current DNS verification, readyToSend home-transport readiness, SPF, DKIM, and MAIL FROM details." + "Sending domain with current DNS verification, readyToSend home-transport readiness, SPF, DKIM, MAIL FROM, sesEnvelope, and spfAlignment details. A spfAlignment.warning means SES-routed sends are not SPF-aligned yet." ), verified: booleanOutputProperty( "Whether the sending domain passed the fresh DNS verification check. This does not by itself mean SES or MTA is ready."