Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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. |
Expand All @@ -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.<domain>` 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
Expand Down
8 changes: 4 additions & 4 deletions src/tools/definitions/account.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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: {
Expand All @@ -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.<domain> (keeps SES-routed sends SPF-aligned) and DMARC when present - before calling verify_sending_domain.",
inputSchema: {
type: "object",
properties: {
Expand Down Expand Up @@ -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: {
Expand All @@ -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: {
Expand Down
10 changes: 5 additions & 5 deletions src/tools/output-schemas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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: {
Expand Down Expand Up @@ -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.<domain>) 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.<domain>) 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."
Expand Down