{
  "data": {
    "a": {
      "slug": "postmark",
      "name": "Postmark API + MCP",
      "vendor": "Postmark (ActiveCampaign)",
      "vendorUrl": "https://postmarkapp.com",
      "kind": "http-api",
      "category": "email",
      "summary": "Transactional email API with separate broadcast streams, templates, inbound parsing and bounce handling.",
      "url": "https://www.anchorterminal.com/tools/postmark",
      "markdownUrl": "https://www.anchorterminal.com/tools/postmark.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/postmark.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/postmark.json",
      "dns": "postmark.grade.anchorterminal.com",
      "repo": "https://github.com/ActiveCampaign/postmark-mcp",
      "license": "MIT",
      "transports": [
        "http",
        "stdio"
      ],
      "remoteUrl": "https://api.postmarkapp.com",
      "packages": [
        {
          "registry": "npm",
          "name": "postmark"
        },
        {
          "registry": "npm",
          "name": "@activecampaign/postmark-mcp"
        }
      ],
      "auth": "api-key",
      "authNotes": "Server API token in the `X-Postmark-Server-Token` header for sending and per-server calls, and a separate `X-Postmark-Account-Token` for account-level calls. The token `POSTMARK_API_TEST` accepts requests without sending. The MCP server reads the server token from `POSTMARK_SERVER_TOKEN`.",
      "pricing": "freemium",
      "pricingNotes": "Free Developer plan with 100 emails a month, no overages and no expiry. At 10,000 emails a month Basic is $15, Pro $16.50 and Platform $18, with overage $1.80, $1.30 and $1.20 per 1,000. Pro at 125,000 is $126.50 and at 1,500,000 is $852.50. Sent and received emails both count. Dedicated IPs $50 a month from 300,000 emails a month, DMARC monitoring $14 a month per domain (https://postmarkapp.com/pricing).",
      "priceSummary": "$15 / mo",
      "where": "both",
      "x402": {
        "level": "no",
        "evidence": "No x402 support in docs, pricing or MCP README (checked 2026-09-30).",
        "endpoints": []
      },
      "toolCount": 24,
      "popularity": {
        "githubStars": 57,
        "npmWeekly": 1281479,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://postmarkapp.com/developer",
      "llmsTxt": "https://postmarkapp.com/llms.txt",
      "capabilities": [
        "email.send",
        "email.inbound",
        "email.templates",
        "email.domains",
        "email.analytics",
        "email.marketing"
      ],
      "tags": [
        "hosted",
        "freemium",
        "no-card",
        "mcp",
        "llms-txt",
        "typescript",
        "webhooks"
      ],
      "lastRelease": "2026-10-29",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 64.9,
        "grade": "B",
        "agentReady": false,
        "rank": 446,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 10,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 79,
          "maintenance": 80,
          "payments": 40,
          "reliability": 60,
          "schema": 81,
          "security": 63,
          "transparency": 78
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-01"
        },
        "negative": -3,
        "negativeNotes": [
          "2026-08-27: Postmark began testing a webhook endpoint for every selected event when a webhook is created or edited, refusing to save (422, error 1364) until each answers 200, and pausing event types after sustained failures, announced in a product update the day it took effect. Calls that saved before can now fail, including edits without the URL and edits of webhooks with Basic auth, which postmark-python 0.5.0 (29 October) works around, as close's same-day membership rule was read (-3) (https://postmarkapp.com/updates)."
        ],
        "verdict": "24 MCP tools, all with readOnlyHint, destructiveHint and idempotentHint, and descriptions that point to alternatives. No OpenAPI spec, no published request-rate limit and no disclosure policy or security.txt.",
        "bestFor": "Transactional mail where deliverability and a small, well-annotated MCP matter more than a free tier.",
        "strengths": [
          "24 MCP tools, all with readOnlyHint, destructiveHint and idempotentHint, and descriptions that point to alternatives",
          "Prompt-injection guidance and a webhook URL allowlist in the MCP README",
          "45-day retention by default, two named hosting companies and a DPA in the terms",
          "Per-1,000 overage rates published for every plan",
          "Python SDK 0.5.0 (29 October 2026) adds webhook verification and statistics methods"
        ],
        "weaknesses": [
          "No OpenAPI spec and no published request-rate limit",
          "Manual account approval before sending outside your own domains",
          "No SOC 2, ISO 27001, disclosure policy or security.txt found for Postmark itself",
          "Webhooks aren't HMAC-signed",
          "The MCP server runs locally only, its repository has no CI, and npm still serves 2.1.1 from 13 July"
        ],
        "agentNotes": [
          "Install @activecampaign/postmark-mcp, never the unscoped postmark-mcp package",
          "Use the token `POSTMARK_API_TEST` to check a payload without sending",
          "Set `MessageStream` to `outbound` for transactional mail and a broadcast stream for bulk",
          "Set `WEBHOOK_URL_ALLOWLIST` so a misled createWebhook call can't send events to someone else's server",
          "Have a webhook endpoint answer 200 for every selected event before creating it. Postmark tests it and won't save on failure unless `verify=false` is passed"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 64.9
          }
        ],
        "editorialScores": {
          "ergonomics": 79,
          "maintenance": 80,
          "payments": 40,
          "reliability": 60,
          "schema": 81,
          "security": 63,
          "transparency": 69
        },
        "provenanceScore": 87,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-01",
            "maintenance": "2026-11-01",
            "payments": "2026-11-01",
            "reliability": "2026-11-01",
            "schema": "2026-11-01",
            "security": "2026-11-01",
            "transparency": "2026-11-01"
          },
          "last": "2026-11-01",
          "lastMoved": "2026-11-01",
          "oldest": "2026-11-01",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl https://api.postmarkapp.com/email -H \"Accept: application/json\" \\\n  -H \"Content-Type: application/json\" -H \"X-Postmark-Server-Token: $POSTMARK_SERVER_TOKEN\" \\\n  -d '{\"From\":\"sender@example.com\",\"To\":\"receiver@example.com\",\"Subject\":\"Hello\",\"TextBody\":\"Hello\",\"MessageStream\":\"outbound\"}'",
        "config": {
          "mcpServers": {
            "postmark": {
              "args": [
                "-y",
                "@activecampaign/postmark-mcp"
              ],
              "command": "npx",
              "env": {
                "DEFAULT_MESSAGE_STREAM": "outbound",
                "DEFAULT_SENDER_EMAIL": "${DEFAULT_SENDER_EMAIL}",
                "POSTMARK_SERVER_TOKEN": "${POSTMARK_SERVER_TOKEN}"
              }
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/email.send",
        "tool": "https://letme.dev/postmark"
      },
      "area": "communication",
      "unitPrices": [
        {
          "item": "Basic 10k",
          "unit": "month",
          "usd": 15,
          "note": "10,000 emails"
        },
        {
          "item": "Pro 10k",
          "unit": "month",
          "usd": 16.5,
          "note": "10,000 emails"
        },
        {
          "item": "Platform 10k",
          "unit": "month",
          "usd": 18,
          "note": "10,000 emails"
        },
        {
          "item": "Pro 125k",
          "unit": "month",
          "usd": 126.5,
          "note": "125,000 emails"
        },
        {
          "item": "Overage on Basic",
          "unit": "1k-emails",
          "usd": 1.8
        },
        {
          "item": "Overage on Pro",
          "unit": "1k-emails",
          "usd": 1.3
        },
        {
          "item": "Overage on Platform",
          "unit": "1k-emails",
          "usd": 1.2
        },
        {
          "item": "Dedicated IP",
          "unit": "month",
          "usd": 50,
          "note": "per IP, from 300,000 emails a month"
        }
      ],
      "provenance": {
        "legalEntity": "AC PM, LLC",
        "domain": "postmarkapp.com",
        "domainRegistered": "2009-05-25",
        "endpointOnVendorDomain": true,
        "terms": "https://postmarkapp.com/terms-of-service",
        "privacy": "https://www.activecampaign.com/legal/privacy-policy",
        "statusPage": "https://status.postmarkapp.com",
        "changelog": "https://postmarkapp.com/updates",
        "securityTxt": "none",
        "checked": "2026-09-30",
        "notes": [
          "AC PM, LLC is ActiveCampaign's Postmark entity. postmarkapp.com/privacy-policy redirects to ActiveCampaign's privacy policy."
        ],
        "score": 87
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/postmark.json",
      "live": {
        "slug": "postmark",
        "probe": {
          "target": "https://api.postmarkapp.com",
          "method": "get",
          "lastAt": "2026-11-07T18:20:48.124535617Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 665,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 578,
          "p95ms24h": 741,
          "samples24h": 239,
          "samples30d": 7910,
          "days": [
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 268,
              "ok": 268
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-29",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 246
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 185
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 241
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 187
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.postmarkapp.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-07T04:48:37.638832039Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "ActiveCampaign/postmark-mcp",
            "version": "v2.1.1",
            "released": "2026-07-13",
            "seenAt": "2026-11-06T23:57:50.859314295Z"
          },
          {
            "registry": "npm",
            "name": "@activecampaign/postmark-mcp",
            "version": "2.1.1",
            "seenAt": "2026-11-06T23:57:48.844210018Z"
          },
          {
            "registry": "npm",
            "name": "postmark",
            "version": "5.1.0",
            "seenAt": "2026-11-06T23:57:48.635789651Z"
          }
        ],
        "githubStars": 61,
        "npmWeekly": 1639054,
        "securityTxt": {
          "url": "https://postmarkapp.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:00:07.545942518Z"
        },
        "llmsTxt": {
          "url": "https://postmarkapp.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:33:40.325012437Z"
        },
        "domain": {
          "domain": "postmarkapp.com",
          "registered": "2009-05-25",
          "source": "https://rdap.verisign.com/com/v1/domain/postmarkapp.com",
          "checkedAt": "2026-11-01T14:19:02.125095893Z"
        },
        "pages": [
          {
            "url": "https://postmarkapp.com/updates",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:17:12.395632441Z",
            "changedAt": "2026-11-06T13:38:52.528824007Z",
            "fingerprint": "8bebe4130915"
          },
          {
            "url": "https://postmarkapp.com/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-07T14:17:08.198745444Z",
            "changedAt": "2026-11-06T13:38:48.352399805Z",
            "fingerprint": "c9f52994885f"
          },
          {
            "url": "https://www.activecampaign.com/legal/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-07T18:10:31.997529995Z",
            "changedAt": "2026-10-02T15:25:06.170575042Z",
            "fingerprint": "3ba14f859de2"
          },
          {
            "url": "https://postmarkapp.com/terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:17:10.576610704Z",
            "changedAt": "2026-10-14T20:47:00.043036254Z",
            "fingerprint": "97a21c17bf9b"
          }
        ],
        "github": {
          "repo": "activecampaign/postmark-mcp",
          "checkedAt": "2026-11-02T08:27:44.154887198Z",
          "stars": 60,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-26T20:58:36Z",
          "openIssues": 23,
          "openPRs": 13,
          "issuesOpened90d": 2,
          "issuesClosed90d": 0,
          "prsMerged90d": 2,
          "replies": {
            "sampled": 23,
            "unanswered": 23
          }
        },
        "updatedAt": "2026-11-07T18:20:48.124535617Z"
      }
    },
    "answer": "Postmark API + MCP scores 64.9 (B) on agent readiness against SendLayer's 47.7 (D), and leads in every scored category.",
    "b": {
      "slug": "sendlayer",
      "name": "SendLayer",
      "vendor": "SendLayer, LLC",
      "vendorUrl": "https://sendlayer.com",
      "kind": "http-api",
      "category": "email",
      "summary": "SendLayer is a transactional email service from SendLayer, LLC, with an SMTP relay, a REST API for sending and email events, webhooks, SDKs in five languages and a hosted MCP server. It is aimed largely at WordPress and small-business sites.",
      "url": "https://www.anchorterminal.com/tools/sendlayer",
      "markdownUrl": "https://www.anchorterminal.com/tools/sendlayer.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/sendlayer.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/sendlayer.json",
      "dns": "sendlayer.grade.anchorterminal.com",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://mcp.sendlayer.com",
      "packages": [
        {
          "registry": "npm",
          "name": "sendlayer"
        },
        {
          "registry": "pypi",
          "name": "sendlayer"
        }
      ],
      "auth": "api-key",
      "authNotes": "Bearer API key in the `Authorization` header, created per sending domain in the dashboard (one is made when a domain is authorised). Keys can be labelled and deleted; no scopes or read-only keys were found. The hosted MCP server takes the same key in an `x-sendlayer-api-key` or `Authorization` header.",
      "pricing": "paid",
      "pricingNotes": "Plans billed annually. Starter $5 a month for 1,000 emails, Business $15 for 5,000, Growth $25 for 10,000, Scale 20,000+ by quote. A free trial sends up to 200 emails. Accounts that reach their limit are upgraded automatically. 14-day money-back guarantee.",
      "priceSummary": "$5 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs, llms.txt, the OpenAPI file or the pricing page (checked 2026-11-06).",
        "endpoints": []
      },
      "toolCount": 5,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 113,
        "pypiWeekly": 9,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://developers.sendlayer.com/",
      "llmsTxt": "https://developers.sendlayer.com/llms.txt",
      "openapi": "https://developers.sendlayer.com/api-reference/sendlayer.json",
      "capabilities": [
        "email.send",
        "email.analytics",
        "email.domains"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "smtp",
        "webhooks",
        "openapi",
        "llms-txt",
        "mcp",
        "remote-mcp",
        "status-page",
        "typescript",
        "python",
        "php",
        "ruby",
        "go"
      ],
      "lastRelease": "2026-08-21",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 47.7,
        "grade": "D",
        "agentReady": false,
        "rank": 1135,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 19,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 62,
          "maintenance": 40,
          "payments": 20,
          "reliability": 48,
          "schema": 68,
          "security": 38,
          "transparency": 49
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "A small API with an OpenAPI file, llms.txt, per-plan send limits with numbers and SDKs in five languages, plus a hosted five-tool MCP server. Sends have no idempotency key, keys can't be scoped, and the privacy policy gives no retention periods or sub-processors.",
        "bestFor": "Low-volume transactional mail for WordPress and small sites.",
        "strengths": [
          "Send limits per minute, hour and day are published for each plan",
          "OpenAPI file, llms.txt and Markdown copies of every developer page",
          "Official SDKs for Node, Python, PHP, Ruby and Go",
          "Hosted MCP server at mcp.sendlayer.com with five tools for sending, events and webhooks",
          "Numbered error codes with messages for each missing or invalid field"
        ],
        "weaknesses": [
          "No idempotency key on sends, so a retried request can send twice",
          "API keys can't be scoped or made read-only",
          "Status history shows 98 automated outage entries in 90 days with no durations or write-ups",
          "Privacy policy has no date, retention periods, DPA or sub-processor list",
          "No public changelog, SLA, security.txt or disclosure policy found"
        ],
        "agentNotes": [
          "Check the email log with `GET /api/v1/events` before retrying a failed send, since sends have no idempotency key",
          "Keep To and CC at 10 addresses or fewer and BCC at 5, or the API returns error code 20 or 27",
          "Pace sends to the plan's per-minute limit, 50 on Starter and 120 on Business, and back off on 429",
          "Pass the API key in a header to mcp.sendlayer.com; the server answers 405 to anything but POST"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 47.7
          }
        ],
        "editorialScores": {
          "ergonomics": 62,
          "maintenance": 40,
          "payments": 20,
          "reliability": 48,
          "schema": 68,
          "security": 38,
          "transparency": 23
        },
        "provenanceScore": 75,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-06",
            "maintenance": "2026-11-06",
            "payments": "2026-11-06",
            "reliability": "2026-11-06",
            "schema": "2026-11-06",
            "security": "2026-11-06",
            "transparency": "2026-11-06"
          },
          "last": "2026-11-06",
          "oldest": "2026-11-06",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "npm install sendlayer",
        "http": "curl https://console.sendlayer.com/api/v1/email -X POST -H \"Authorization: Bearer $SENDLAYER_API_KEY\" -H \"Content-Type: application/json\" -d '{\"From\":{\"name\":\"You\",\"email\":\"you@yourdomain.com\"},\"To\":[{\"name\":\"Person\",\"email\":\"person@example.com\"}],\"Subject\":\"Hello\",\"ContentType\":\"Text\",\"PlainContent\":\"Hello\"}'",
        "claudeCode": "claude mcp add --scope user --transport http sendlayer-mcp https://mcp.sendlayer.com --header \"Authorization: Bearer YOUR_SENDLAYER_API_KEY\"",
        "config": {
          "mcpServers": {
            "sendlayer": {
              "headers": {
                "x-sendlayer-api-key": "YOUR_SENDLAYER_API_KEY"
              },
              "url": "https://mcp.sendlayer.com"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/email.send",
        "tool": "https://letme.dev/sendlayer"
      },
      "area": "communication",
      "unitPrices": [
        {
          "item": "Starter",
          "unit": "month",
          "usd": 5,
          "note": "1,000 emails a month, billed annually"
        },
        {
          "item": "Business",
          "unit": "month",
          "usd": 15,
          "note": "5,000 emails a month, billed annually"
        },
        {
          "item": "Growth",
          "unit": "month",
          "usd": 25,
          "note": "10,000 emails a month, billed annually"
        }
      ],
      "provenance": {
        "legalEntity": "SendLayer, LLC",
        "domain": "sendlayer.com",
        "domainRegistered": "2015-07-22",
        "endpointOnVendorDomain": true,
        "terms": "https://sendlayer.com/terms-of-service/",
        "privacy": "https://sendlayer.com/privacy-policy/",
        "statusPage": "https://status.sendlayer.com",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "The terms name SendLayer, LLC under Florida law with courts in West Palm Beach. Neither the terms nor the privacy policy carries a date.",
          "The terms contain no clause on automated access to the website.",
          "sendlayer.com/robots.txt disallows only WordPress internals, cart and search paths. developers.sendlayer.com allows all but /_next/ and /cdn-cgi/.",
          "RDAP gives sendlayer.com a registration date of 22 July 2015; the about page says the team started SendLayer in 2022, and the footer copyright runs from 2021.",
          "/.well-known/security.txt returns 404."
        ],
        "score": 75
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/sendlayer.json",
      "live": {
        "slug": "sendlayer",
        "probe": {
          "target": "https://mcp.sendlayer.com",
          "method": "get",
          "lastAt": "2026-11-07T18:20:53.661767075Z",
          "lastOk": true,
          "lastStatus": 405,
          "lastMs": 337,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 332,
          "p95ms24h": 423,
          "samples24h": 200,
          "samples30d": 200,
          "days": [
            {
              "date": "2026-11-06",
              "probes": 13,
              "ok": 13
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 187
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.sendlayer.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-07T04:48:44.410046578Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "sendlayer",
            "version": "1.1.0",
            "seenAt": "2026-11-07T00:04:36.013206716Z"
          },
          {
            "registry": "pypi",
            "name": "sendlayer",
            "version": "1.1.0",
            "released": "2026-08-21",
            "seenAt": "2026-11-07T00:04:36.403864413Z"
          }
        ],
        "npmWeekly": 113,
        "pypiWeekly": 9,
        "securityTxt": {
          "url": "https://sendlayer.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:00:08.464258052Z"
        },
        "llmsTxt": {
          "url": "https://developers.sendlayer.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:33:54.535300528Z"
        },
        "pages": [
          {
            "url": "https://sendlayer.com/privacy-policy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:19:27.507195007Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "1f5bea738989"
          },
          {
            "url": "https://sendlayer.com/terms-of-service/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:19:31.497088663Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "1fbf9877b12a"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.sendlayer.com",
          "checkedAt": "2026-11-07T01:47:41.040426143Z",
          "status": "auth",
          "note": "asks for credentials before listing its tools",
          "changedAt": "2026-11-07T01:47:41.040426143Z"
        },
        "updatedAt": "2026-11-07T18:20:53.661767075Z"
      }
    },
    "edges": [
      {
        "by": 40,
        "category": "maintenance",
        "leads": "postmark",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "postmark-python v0.5.0 was tagged on 29 October 2026 with new webhook verification and statistics methods and a dated CHANGELOG entry (30). Since 3 August, three dated product updates (two on 27 August, one on 23 September) and Python SDK tags v0.3.7 (5 August), v0.4.0 (12 August) and v0.5.0, counted half, so more than three (20). Updates are public and support answers by ticket. The Python SDK merged an outside fix (#39) on 29 October. We couldn't see issue replies (10). Current official SDKs. The Node SDK `postmark` 5.0.0 and 5.1.0 (Bulk API), set as versions in repository commits of 6 and 10 July, are on npm per the registry read on 1 November, though the repository has no tags after 4.0.7, and the Python SDK is current (15). The Python SDK runs tests, CodeQL and a security workflow, but the MCP repository still has no CI, which its CHANGELOG lists as planned (5). 30 + 20 + 10 + 15 + 5 = 80.",
          "b": "The Node and Python SDKs were last released as 1.1.0 on 21 August 2026, 77 days before this check (20). One SDK release in the 90 days and no dated changelog (0 of 20). A closed service with a support form and docs updated through 2026, but no public changelog (5 of 15). Not in the official MCP registry (search for sendlayer returned nothing on 6 November). Official SDKs in five languages (10 of 15). The SDK repositories exist on GitHub under sendlayer; their CI wasn't read (5 of 10). Total 40."
        },
        "scores": {
          "a": 80,
          "b": 40
        }
      },
      {
        "by": 29,
        "category": "transparency",
        "leads": "postmark",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Closed service with published terms and an MIT MCP server (20). Message content and metadata deleted after 45 days, retention adjustable up to 365 days on Pro and Platform, suppressions kept indefinitely, and a DPA with standard contractual clauses, re-read on 1 November (26). No deprecation policy or dated deprecation notices found (5). Two named hosting companies, Deft near Chicago and AWS, US hosting only, with change notifications per the 1 October check (18). 20 + 26 + 5 + 18 = 69.",
          "b": "Closed service with terms naming SendLayer, LLC under Florida law (15 of 30). The privacy policy is undated, says data is kept as long as the account is active or as needed, and names no retention periods, DPA or processors; only the pricing page gives log retention per plan (8 of 30). No deprecation policy or dated notices (0). No sub-processors or data locations disclosed (0). Total 23."
        },
        "scores": {
          "a": 78,
          "b": 49
        }
      },
      {
        "by": 25,
        "category": "security",
        "leads": "postmark",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "Server tokens limited to one server and a separate account token for account-level calls, plus IP allowlisting for API sending since 27 August and 2FA on every plan since 23 September. No per-scope tokens (22). A server token can't reach other servers, the MCP annotations let clients confirm writes, and `WEBHOOK_URL_ALLOWLIST` limits where createWebhook can point (12). The MCP README names the prompt-injection risk and the controls (dedicated token, client approval, the allowlist). Bounce dumps carry text from remote servers (12). Message activity kept 45 days, and the MCP writes one JSON log line per call with addresses masked (12). The security page, re-read on 1 November, names a SOC 1 data centre, payments through Stripe and regular audits by security firms, but no SOC 2 or ISO 27001 of Postmark's own, no disclosure policy, and /.well-known/security.txt answered 404. That's below mailersend and contactsplus (8 each, a disclosure policy with discretionary bounties) (5). 22 + 12 + 12 + 12 + 5 = 63.",
          "b": "Plain revocable API keys per domain, several allowed, sent in a header; no scopes, expiry or rotation feature beyond creating and deleting keys (20 of 30). No read-only key or approval step (0 of 20). The API returns event data, not received mail (10 of 15). Email logs kept 3, 15 or 30 days by plan, and no log of API calls was found (8 of 15). No security.txt (404), disclosure policy, bug bounty or certification found (0 of 20). Total 38."
        },
        "scores": {
          "a": 63,
          "b": 38
        }
      },
      {
        "by": 20,
        "category": "payments",
        "leads": "postmark",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No x402, MPP or L402 (0). Prices and per-1,000 overage ($1.80, $1.30, $1.20) published without login, re-read on 1 November (20). Developer plan of 100 emails a month with no card (20). Browser signup and a manual account review before sending outside your own domains (0). 0 + 20 + 20 + 0 = 40.",
          "b": "No x402, MPP or L402 (0). Plan prices are public but only as annual plans, with no per-email overage price; accounts are upgraded automatically at the limit (10 of 20). A free trial of 200 emails is offered through checkout; whether it needs a card couldn't be read, since robots.txt disallows the add-to-cart URLs (10 of 20). A person signs up and authorises a domain in a browser (0). Total 20."
        },
        "scores": {
          "a": 40,
          "b": 20
        }
      },
      {
        "by": 17,
        "category": "ergonomics",
        "leads": "postmark",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "24 tools and no toolsets, counted in the source on 1 November (15). count and offset with the 10,000 cap stated in the descriptions, filters on searches, and a truncation notice when listTemplates hits 100 (17). Over 40 documented error codes, and startup errors name the missing variable and link to the fix (18). Every tool carries readOnlyHint, destructiveHint and idempotentHint, with 12 read-only and the deletes flagged destructive. No idempotency key for sends (15). DEFAULT_SENDER_EMAIL and DEFAULT_MESSAGE_STREAM cut required fields, and there are official Node and Python SDKs (14). 15 + 17 + 18 + 15 + 14 = 79.",
          "b": "Small responses and five MCP tools (18 of 25). Events filter by start and end date, event type and message ID, with an offset and a count (15 of 20). Errors are JSON with a numbered code and message per field, and documented (14 of 20). No idempotency key on sends, and the MCP annotations can't be read (0 of 20). A send needs from, to, subject, content type and content; official SDKs for Node, Python, PHP, Ruby and Go (15). Total 62."
        },
        "scores": {
          "a": 79,
          "b": 62
        }
      },
      {
        "by": 13,
        "category": "schema",
        "leads": "postmark",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "No OpenAPI spec for the REST API. Every one of the 24 MCP tools has a typed Zod schema, so half (15). llms.txt of about 1,100 lines with code samples, per the 1 October check (10). MCP descriptions state the purpose and point to the right alternative, such as 'Use sendBatch to send multiple distinct messages' (16). Typed inputs with email validation, a 50-recipient cap and the 22 bounce types as an enum (13). More than 40 JSON error codes grouped by area, with examples, re-read on 1 November (14). Dated product updates and a semver CHANGELOG for the MCP server, but no API versioning (13). 15 + 10 + 16 + 13 + 14 + 13 = 81.",
          "b": "OpenAPI file at developers.sendlayer.com/api-reference/sendlayer.json (version 1.0.1) covering four paths, send, events and webhooks (25). llms.txt and Markdown copies of every developer page (10). Operation summaries say what each call does; nothing says when not to use one, and the hosted MCP server's tool definitions aren't public (10 of 20). Parameters are typed but without enums or limits, and the event filter is a free string (7 of 15). Code samples in five languages and a table of 35 error codes, but the spec documents only 200 responses (11 of 15). Version in the path and in the spec, with no public changelog (5 of 15). Total 68."
        },
        "scores": {
          "a": 81,
          "b": 68
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Postmark (ActiveCampaign)",
        "b": "SendLayer, LLC",
        "name": "Vendor"
      },
      {
        "a": "https://api.postmarkapp.com",
        "b": "https://mcp.sendlayer.com",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, stdio",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "MIT",
        "b": "none",
        "name": "Licence"
      },
      {
        "a": "24",
        "b": "5",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-29",
        "b": "2026-08-21",
        "name": "Last release"
      },
      {
        "a": "2024-12-10",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "2026-10-01",
        "b": "no date given",
        "name": "Privacy policy last updated"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "57 stars, 1.3M npm/wk",
        "b": "113 npm/wk, 9 PyPI/wk",
        "name": "Popularity"
      },
      {
        "a": "3/5 (2)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Postmark API + MCP scores 64.9 (B) on agent readiness against SendLayer's 47.7 (D), and leads in every scored category.",
        "question": "Which is better for AI agents, Postmark API + MCP or SendLayer?"
      },
      {
        "answer": "Both need an API key.",
        "question": "Do Postmark API + MCP and SendLayer need an API key?"
      },
      {
        "answer": "Yes. Postmark API + MCP has a hosted endpoint at https://api.postmarkapp.com and SendLayer at https://mcp.sendlayer.com.",
        "question": "Can an agent call Postmark API + MCP and SendLayer without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 60 against 48",
          "Schema \u0026 documentation, 81 against 68",
          "Agent ergonomics, 79 against 62",
          "Security \u0026 auth, 63 against 38",
          "Payments \u0026 pricing, 40 against 20",
          "Maintenance \u0026 community, 80 against 40",
          "Transparency \u0026 trust, 78 against 49"
        ],
        "also": [
          "Runs on your own machine",
          "Free to start without a card"
        ],
        "goodFor": "Transactional mail where deliverability and a small, well-annotated MCP matter more than a free tier.",
        "slug": "postmark",
        "watchFor": "No OpenAPI spec and no published request-rate limit"
      },
      {
        "aheadOn": null,
        "also": [
          "No incidents deducted, where Postmark API + MCP loses 3 points for them"
        ],
        "goodFor": "Low-volume transactional mail for WordPress and small sites.",
        "slug": "sendlayer",
        "watchFor": "No idempotency key on sends, so a retried request can send twice"
      }
    ],
    "history": {
      "postmark": [
        {
          "causes": [
            "product",
            "event"
          ],
          "date": "2026-11-01",
          "delta": -1.6,
          "from": 66.5,
          "fromGrade": "B",
          "to": 64.9,
          "toGrade": "B"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0,
          "from": 66.5,
          "fromGrade": "B",
          "to": 66.5,
          "toGrade": "B"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-08",
          "delta": -0.2,
          "from": 66.7,
          "fromGrade": "B",
          "to": 66.5,
          "toGrade": "B"
        }
      ],
      "sendlayer": null
    },
    "job": {
      "capability": "email.send",
      "name": "Sending email"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/ahasend-vs-postmark.json",
        "title": "AhaSend API + MCP vs Postmark API + MCP",
        "url": "https://www.anchorterminal.com/compare/ahasend-vs-postmark"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ahasend-vs-sendlayer.json",
        "title": "AhaSend API + MCP vs SendLayer",
        "url": "https://www.anchorterminal.com/compare/ahasend-vs-sendlayer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-ses-vs-postmark.json",
        "title": "Amazon SES vs Postmark API + MCP",
        "url": "https://www.anchorterminal.com/compare/amazon-ses-vs-postmark"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-ses-vs-sendlayer.json",
        "title": "Amazon SES vs SendLayer",
        "url": "https://www.anchorterminal.com/compare/amazon-ses-vs-sendlayer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/brevo-vs-postmark.json",
        "title": "Brevo API + MCP vs Postmark API + MCP",
        "url": "https://www.anchorterminal.com/compare/brevo-vs-postmark"
      },
      {
        "json": "https://www.anchorterminal.com/compare/brevo-vs-sendlayer.json",
        "title": "Brevo API + MCP vs SendLayer",
        "url": "https://www.anchorterminal.com/compare/brevo-vs-sendlayer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-email-service-vs-postmark.json",
        "title": "Cloudflare Email Service vs Postmark API + MCP",
        "url": "https://www.anchorterminal.com/compare/cloudflare-email-service-vs-postmark"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-email-service-vs-sendlayer.json",
        "title": "Cloudflare Email Service vs SendLayer",
        "url": "https://www.anchorterminal.com/compare/cloudflare-email-service-vs-sendlayer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/groundmail-vs-postmark.json",
        "title": "Groundmail API + MCP vs Postmark API + MCP",
        "url": "https://www.anchorterminal.com/compare/groundmail-vs-postmark"
      },
      {
        "json": "https://www.anchorterminal.com/compare/groundmail-vs-sendlayer.json",
        "title": "Groundmail API + MCP vs SendLayer",
        "url": "https://www.anchorterminal.com/compare/groundmail-vs-sendlayer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/loops-vs-postmark.json",
        "title": "Loops API + MCP vs Postmark API + MCP",
        "url": "https://www.anchorterminal.com/compare/loops-vs-postmark"
      },
      {
        "json": "https://www.anchorterminal.com/compare/loops-vs-sendlayer.json",
        "title": "Loops API + MCP vs SendLayer",
        "url": "https://www.anchorterminal.com/compare/loops-vs-sendlayer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mailersend-vs-postmark.json",
        "title": "MailerSend vs Postmark API + MCP",
        "url": "https://www.anchorterminal.com/compare/mailersend-vs-postmark"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mailersend-vs-sendlayer.json",
        "title": "MailerSend vs SendLayer",
        "url": "https://www.anchorterminal.com/compare/mailersend-vs-sendlayer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mailgun-vs-postmark.json",
        "title": "Mailgun API + MCP vs Postmark API + MCP",
        "url": "https://www.anchorterminal.com/compare/mailgun-vs-postmark"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mailgun-vs-sendlayer.json",
        "title": "Mailgun API + MCP vs SendLayer",
        "url": "https://www.anchorterminal.com/compare/mailgun-vs-sendlayer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mailjet-vs-postmark.json",
        "title": "Mailjet API + MCP vs Postmark API + MCP",
        "url": "https://www.anchorterminal.com/compare/mailjet-vs-postmark"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mailjet-vs-sendlayer.json",
        "title": "Mailjet API + MCP vs SendLayer",
        "url": "https://www.anchorterminal.com/compare/mailjet-vs-sendlayer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mailpace-vs-postmark.json",
        "title": "MailPace vs Postmark API + MCP",
        "url": "https://www.anchorterminal.com/compare/mailpace-vs-postmark"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mailpace-vs-sendlayer.json",
        "title": "MailPace vs SendLayer",
        "url": "https://www.anchorterminal.com/compare/mailpace-vs-sendlayer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mailtrap-vs-postmark.json",
        "title": "Mailtrap Email API + MCP vs Postmark API + MCP",
        "url": "https://www.anchorterminal.com/compare/mailtrap-vs-postmark"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mailtrap-vs-sendlayer.json",
        "title": "Mailtrap Email API + MCP vs SendLayer",
        "url": "https://www.anchorterminal.com/compare/mailtrap-vs-sendlayer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mandrill-vs-postmark.json",
        "title": "Mailchimp Transactional (Mandrill) vs Postmark API + MCP",
        "url": "https://www.anchorterminal.com/compare/mandrill-vs-postmark"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mandrill-vs-sendlayer.json",
        "title": "Mailchimp Transactional (Mandrill) vs SendLayer",
        "url": "https://www.anchorterminal.com/compare/mandrill-vs-sendlayer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/postmark-vs-resend.json",
        "title": "Postmark API + MCP vs Resend API + MCP",
        "url": "https://www.anchorterminal.com/compare/postmark-vs-resend"
      },
      {
        "json": "https://www.anchorterminal.com/compare/postmark-vs-sendgrid.json",
        "title": "Postmark API + MCP vs Twilio SendGrid",
        "url": "https://www.anchorterminal.com/compare/postmark-vs-sendgrid"
      },
      {
        "json": "https://www.anchorterminal.com/compare/postmark-vs-smtp2go.json",
        "title": "Postmark API + MCP vs SMTP2GO API + MCP",
        "url": "https://www.anchorterminal.com/compare/postmark-vs-smtp2go"
      },
      {
        "json": "https://www.anchorterminal.com/compare/postmark-vs-zoho-zeptomail.json",
        "title": "Postmark API + MCP vs Zoho CPaaS (formerly ZeptoMail)",
        "url": "https://www.anchorterminal.com/compare/postmark-vs-zoho-zeptomail"
      },
      {
        "json": "https://www.anchorterminal.com/compare/resend-vs-sendlayer.json",
        "title": "Resend API + MCP vs SendLayer",
        "url": "https://www.anchorterminal.com/compare/resend-vs-sendlayer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/sendgrid-vs-sendlayer.json",
        "title": "Twilio SendGrid vs SendLayer",
        "url": "https://www.anchorterminal.com/compare/sendgrid-vs-sendlayer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/sendlayer-vs-smtp2go.json",
        "title": "SendLayer vs SMTP2GO API + MCP",
        "url": "https://www.anchorterminal.com/compare/sendlayer-vs-smtp2go"
      },
      {
        "json": "https://www.anchorterminal.com/compare/sendlayer-vs-zoho-zeptomail.json",
        "title": "SendLayer vs Zoho CPaaS (formerly ZeptoMail)",
        "url": "https://www.anchorterminal.com/compare/sendlayer-vs-zoho-zeptomail"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 12,
        "edge": "postmark",
        "key": "reliability",
        "name": "Reliability",
        "postmark": 60,
        "sendlayer": 48,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 13,
        "edge": "postmark",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "postmark": 81,
        "sendlayer": 68,
        "weight": 13
      },
      {
        "by": 17,
        "edge": "postmark",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "postmark": 79,
        "sendlayer": 62,
        "weight": 13
      },
      {
        "by": 25,
        "edge": "postmark",
        "key": "security",
        "name": "Security \u0026 auth",
        "postmark": 63,
        "sendlayer": 38,
        "weight": 14
      },
      {
        "by": 20,
        "edge": "postmark",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "postmark": 40,
        "sendlayer": 20,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 40,
        "edge": "postmark",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "postmark": 80,
        "sendlayer": 40,
        "weight": 7
      },
      {
        "by": 29,
        "edge": "postmark",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "postmark": 78,
        "sendlayer": 49,
        "weight": 7
      }
    ],
    "summary": "Postmark API + MCP scores 64.9 (B) on agent readiness against SendLayer's 47.7 (D), and leads in every scored category. Both do sending email.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "postmark": "24 MCP tools, all with readOnlyHint, destructiveHint and idempotentHint, and descriptions that point to alternatives. No OpenAPI spec, no published request-rate limit and no disclosure policy or security.txt.",
      "sendlayer": "A small API with an OpenAPI file, llms.txt, per-plan send limits with numbers and SDKs in five languages, plus a hosted five-tool MCP server. Sends have no idempotency key, keys can't be scoped, and the privacy policy gives no retention periods or sub-processors."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/postmark-vs-sendlayer",
    "json": "https://www.anchorterminal.com/compare/postmark-vs-sendlayer.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/postmark-vs-sendlayer.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/postmark-vs-sendlayer.min.md"
  },
  "markdown": "Postmark API + MCP scores 64.9 (B) on agent readiness against SendLayer's 47.7 (D), and leads in every scored category. Both do sending email.\n\n- Postmark API + MCP: grade B, 64.9/100, rank #446 of 1486. Markdown https://www.anchorterminal.com/tools/postmark.md · JSON https://www.anchorterminal.com/api/v1/tools/postmark.json\n- SendLayer: grade D, 47.7/100, rank #1135 of 1486. Markdown https://www.anchorterminal.com/tools/sendlayer.md · JSON https://www.anchorterminal.com/api/v1/tools/sendlayer.json\n- Best email delivery APIs for AI agents: https://www.anchorterminal.com/best/email/index.md\n- All 174 email comparisons: https://www.anchorterminal.com/compare/email/index.md\n\n## Which one, for what\n\n### Postmark API + MCP (B)\n\nGood for: Transactional mail where deliverability and a small, well-annotated MCP matter more than a free tier.\n\nAhead on:\n- Reliability, 60 against 48\n- Schema \u0026 documentation, 81 against 68\n- Agent ergonomics, 79 against 62\n- Security \u0026 auth, 63 against 38\n- Payments \u0026 pricing, 40 against 20\n- Maintenance \u0026 community, 80 against 40\n- Transparency \u0026 trust, 78 against 49\n\nAlso in its favour:\n- Runs on your own machine\n- Free to start without a card\n\nWatch for: No OpenAPI spec and no published request-rate limit\n\n### SendLayer (D)\n\nGood for: Low-volume transactional mail for WordPress and small sites.\n\nAlso in its favour:\n- No incidents deducted, where Postmark API + MCP loses 3 points for them\n\nWatch for: No idempotency key on sends, so a retried request can send twice\n\n\n## Why the edge\n\n### Maintenance \u0026 community: Postmark API + MCP +40\n\n- Postmark API + MCP (80): postmark-python v0.5.0 was tagged on 29 October 2026 with new webhook verification and statistics methods and a dated CHANGELOG entry (30). Since 3 August, three dated product updates (two on 27 August, one on 23 September) and Python SDK tags v0.3.7 (5 August), v0.4.0 (12 August) and v0.5.0, counted half, so more than three (20). Updates are public and support answers by ticket. The Python SDK merged an outside fix (#39) on 29 October. We couldn't see issue replies (10). Current official SDKs. The Node SDK `postmark` 5.0.0 and 5.1.0 (Bulk API), set as versions in repository commits of 6 and 10 July, are on npm per the registry read on 1 November, though the repository has no tags after 4.0.7, and the Python SDK is current (15). The Python SDK runs tests, CodeQL and a security workflow, but the MCP repository still has no CI, which its CHANGELOG lists as planned (5). 30 + 20 + 10 + 15 + 5 = 80.\n- SendLayer (40): The Node and Python SDKs were last released as 1.1.0 on 21 August 2026, 77 days before this check (20). One SDK release in the 90 days and no dated changelog (0 of 20). A closed service with a support form and docs updated through 2026, but no public changelog (5 of 15). Not in the official MCP registry (search for sendlayer returned nothing on 6 November). Official SDKs in five languages (10 of 15). The SDK repositories exist on GitHub under sendlayer; their CI wasn't read (5 of 10). Total 40.\n\n### Transparency \u0026 trust: Postmark API + MCP +29\n\n- Postmark API + MCP (78): Closed service with published terms and an MIT MCP server (20). Message content and metadata deleted after 45 days, retention adjustable up to 365 days on Pro and Platform, suppressions kept indefinitely, and a DPA with standard contractual clauses, re-read on 1 November (26). No deprecation policy or dated deprecation notices found (5). Two named hosting companies, Deft near Chicago and AWS, US hosting only, with change notifications per the 1 October check (18). 20 + 26 + 5 + 18 = 69.\n- SendLayer (49): Closed service with terms naming SendLayer, LLC under Florida law (15 of 30). The privacy policy is undated, says data is kept as long as the account is active or as needed, and names no retention periods, DPA or processors; only the pricing page gives log retention per plan (8 of 30). No deprecation policy or dated notices (0). No sub-processors or data locations disclosed (0). Total 23.\n\n### Security \u0026 auth: Postmark API + MCP +25\n\n- Postmark API + MCP (63): Server tokens limited to one server and a separate account token for account-level calls, plus IP allowlisting for API sending since 27 August and 2FA on every plan since 23 September. No per-scope tokens (22). A server token can't reach other servers, the MCP annotations let clients confirm writes, and `WEBHOOK_URL_ALLOWLIST` limits where createWebhook can point (12). The MCP README names the prompt-injection risk and the controls (dedicated token, client approval, the allowlist). Bounce dumps carry text from remote servers (12). Message activity kept 45 days, and the MCP writes one JSON log line per call with addresses masked (12). The security page, re-read on 1 November, names a SOC 1 data centre, payments through Stripe and regular audits by security firms, but no SOC 2 or ISO 27001 of Postmark's own, no disclosure policy, and /.well-known/security.txt answered 404. That's below mailersend and contactsplus (8 each, a disclosure policy with discretionary bounties) (5). 22 + 12 + 12 + 12 + 5 = 63.\n- SendLayer (38): Plain revocable API keys per domain, several allowed, sent in a header; no scopes, expiry or rotation feature beyond creating and deleting keys (20 of 30). No read-only key or approval step (0 of 20). The API returns event data, not received mail (10 of 15). Email logs kept 3, 15 or 30 days by plan, and no log of API calls was found (8 of 15). No security.txt (404), disclosure policy, bug bounty or certification found (0 of 20). Total 38.\n\n### Payments \u0026 pricing: Postmark API + MCP +20\n\n- Postmark API + MCP (40): No x402, MPP or L402 (0). Prices and per-1,000 overage ($1.80, $1.30, $1.20) published without login, re-read on 1 November (20). Developer plan of 100 emails a month with no card (20). Browser signup and a manual account review before sending outside your own domains (0). 0 + 20 + 20 + 0 = 40.\n- SendLayer (20): No x402, MPP or L402 (0). Plan prices are public but only as annual plans, with no per-email overage price; accounts are upgraded automatically at the limit (10 of 20). A free trial of 200 emails is offered through checkout; whether it needs a card couldn't be read, since robots.txt disallows the add-to-cart URLs (10 of 20). A person signs up and authorises a domain in a browser (0). Total 20.\n\n### Agent ergonomics: Postmark API + MCP +17\n\n- Postmark API + MCP (79): 24 tools and no toolsets, counted in the source on 1 November (15). count and offset with the 10,000 cap stated in the descriptions, filters on searches, and a truncation notice when listTemplates hits 100 (17). Over 40 documented error codes, and startup errors name the missing variable and link to the fix (18). Every tool carries readOnlyHint, destructiveHint and idempotentHint, with 12 read-only and the deletes flagged destructive. No idempotency key for sends (15). DEFAULT_SENDER_EMAIL and DEFAULT_MESSAGE_STREAM cut required fields, and there are official Node and Python SDKs (14). 15 + 17 + 18 + 15 + 14 = 79.\n- SendLayer (62): Small responses and five MCP tools (18 of 25). Events filter by start and end date, event type and message ID, with an offset and a count (15 of 20). Errors are JSON with a numbered code and message per field, and documented (14 of 20). No idempotency key on sends, and the MCP annotations can't be read (0 of 20). A send needs from, to, subject, content type and content; official SDKs for Node, Python, PHP, Ruby and Go (15). Total 62.\n\n### Schema \u0026 documentation: Postmark API + MCP +13\n\n- Postmark API + MCP (81): No OpenAPI spec for the REST API. Every one of the 24 MCP tools has a typed Zod schema, so half (15). llms.txt of about 1,100 lines with code samples, per the 1 October check (10). MCP descriptions state the purpose and point to the right alternative, such as 'Use sendBatch to send multiple distinct messages' (16). Typed inputs with email validation, a 50-recipient cap and the 22 bounce types as an enum (13). More than 40 JSON error codes grouped by area, with examples, re-read on 1 November (14). Dated product updates and a semver CHANGELOG for the MCP server, but no API versioning (13). 15 + 10 + 16 + 13 + 14 + 13 = 81.\n- SendLayer (68): OpenAPI file at developers.sendlayer.com/api-reference/sendlayer.json (version 1.0.1) covering four paths, send, events and webhooks (25). llms.txt and Markdown copies of every developer page (10). Operation summaries say what each call does; nothing says when not to use one, and the hosted MCP server's tool definitions aren't public (10 of 20). Parameters are typed but without enums or limits, and the event filter is a free string (7 of 15). Code samples in five languages and a table of 35 error codes, but the spec documents only 200 responses (11 of 15). Version in the path and in the spec, with no public changelog (5 of 15). Total 68.\n\n## Score by category\n\n| Category | Weight | Postmark API + MCP | SendLayer | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 60 | 48 | Postmark API + MCP +12 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 81 | 68 | Postmark API + MCP +13 |\n| Agent ergonomics | 13% (16.2 this run) | 79 | 62 | Postmark API + MCP +17 |\n| Security \u0026 auth | 14% (17.5 this run) | 63 | 38 | Postmark API + MCP +25 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 40 | 20 | Postmark API + MCP +20 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 80 | 40 | Postmark API + MCP +40 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 78 | 49 | Postmark API + MCP +29 |\n| Negative events | ≤15 | -3 | 0 | |\n| **Total** | | **64.9 · B** | **47.7 · D** | |\n\n## Facts side by side\n\n| Fact | Postmark API + MCP | SendLayer |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Postmark (ActiveCampaign) | SendLayer, LLC |\n| Hosted endpoint | `https://api.postmarkapp.com` | `https://mcp.sendlayer.com` |\n| Transports | HTTP, stdio | HTTP, Streamable HTTP |\n| Auth | API key | API key |\n| Pricing | Freemium | Paid |\n| x402 | no | no |\n| Licence | MIT | none |\n| Tools exposed | 24 | 5 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-10-29 | 2026-08-21 |\n| Terms last updated | 2024-12-10 | no date given |\n| Privacy policy last updated | 2026-10-01 | no date given |\n| Customer content may train models | yes | not found in the text |\n| Terms restrict automated access | yes | not found in the text |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | not found in the text | yes |\n| Arbitration or class-action waiver | yes | not found in the text |\n| Popularity | 57 stars, 1.3M npm/wk | 113 npm/wk, 9 PyPI/wk |\n| Agent reviews | 3/5 (2) | none |\n\n## How the scores have moved\n\n### Postmark API + MCP\n\n- -1.6 on 1 November 2026: product, negative event\n- no change on 27 October 2026: checklist\n- -0.2 on 8 October 2026: checklist\n\n### SendLayer\n\nNo score change since it was listed.\n\n## Verdicts\n\n**Postmark API + MCP.** 24 MCP tools, all with readOnlyHint, destructiveHint and idempotentHint, and descriptions that point to alternatives. No OpenAPI spec, no published request-rate limit and no disclosure policy or security.txt.\n\n**SendLayer.** A small API with an OpenAPI file, llms.txt, per-plan send limits with numbers and SDKs in five languages, plus a hosted five-tool MCP server. Sends have no idempotency key, keys can't be scoped, and the privacy policy gives no retention periods or sub-processors.\n\n## Before you call either\n\n### Postmark API + MCP\n\n1. Install @activecampaign/postmark-mcp, never the unscoped postmark-mcp package\n2. Use the token `POSTMARK_API_TEST` to check a payload without sending\n3. Set `MessageStream` to `outbound` for transactional mail and a broadcast stream for bulk\n4. Set `WEBHOOK_URL_ALLOWLIST` so a misled createWebhook call can't send events to someone else's server\n5. Have a webhook endpoint answer 200 for every selected event before creating it. Postmark tests it and won't save on failure unless `verify=false` is passed\n\n### SendLayer\n\n1. Check the email log with `GET /api/v1/events` before retrying a failed send, since sends have no idempotency key\n2. Keep To and CC at 10 addresses or fewer and BCC at 5, or the API returns error code 20 or 27\n3. Pace sends to the plan's per-minute limit, 50 on Starter and 120 on Business, and back off on 429\n4. Pass the API key in a header to mcp.sendlayer.com; the server answers 405 to anything but POST\n\n## Questions\n\n### Which is better for AI agents, Postmark API + MCP or SendLayer?\n\nPostmark API + MCP scores 64.9 (B) on agent readiness against SendLayer's 47.7 (D), and leads in every scored category.\n\n### Do Postmark API + MCP and SendLayer need an API key?\n\nBoth need an API key.\n\n### Can an agent call Postmark API + MCP and SendLayer without installing anything?\n\nYes. Postmark API + MCP has a hosted endpoint at https://api.postmarkapp.com and SendLayer at https://mcp.sendlayer.com.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/postmark-vs-sendlayer.json, and with the fewest tokens: https://www.anchorterminal.com/compare/postmark-vs-sendlayer.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"postmark\", \"b\": \"sendlayer\"}`. From a terminal: `anchor compare postmark sendlayer`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/postmark.json and https://www.anchorterminal.com/api/v1/tools/sendlayer.json\n\n## Other comparisons with Postmark API + MCP or SendLayer\n\n- [AhaSend API + MCP vs Postmark API + MCP](https://www.anchorterminal.com/compare/ahasend-vs-postmark.md)\n- [AhaSend API + MCP vs SendLayer](https://www.anchorterminal.com/compare/ahasend-vs-sendlayer.md)\n- [Amazon SES vs Postmark API + MCP](https://www.anchorterminal.com/compare/amazon-ses-vs-postmark.md)\n- [Amazon SES vs SendLayer](https://www.anchorterminal.com/compare/amazon-ses-vs-sendlayer.md)\n- [Brevo API + MCP vs Postmark API + MCP](https://www.anchorterminal.com/compare/brevo-vs-postmark.md)\n- [Brevo API + MCP vs SendLayer](https://www.anchorterminal.com/compare/brevo-vs-sendlayer.md)\n- [Cloudflare Email Service vs Postmark API + MCP](https://www.anchorterminal.com/compare/cloudflare-email-service-vs-postmark.md)\n- [Cloudflare Email Service vs SendLayer](https://www.anchorterminal.com/compare/cloudflare-email-service-vs-sendlayer.md)\n- [Groundmail API + MCP vs Postmark API + MCP](https://www.anchorterminal.com/compare/groundmail-vs-postmark.md)\n- [Groundmail API + MCP vs SendLayer](https://www.anchorterminal.com/compare/groundmail-vs-sendlayer.md)\n- [Loops API + MCP vs Postmark API + MCP](https://www.anchorterminal.com/compare/loops-vs-postmark.md)\n- [Loops API + MCP vs SendLayer](https://www.anchorterminal.com/compare/loops-vs-sendlayer.md)\n- [MailerSend vs Postmark API + MCP](https://www.anchorterminal.com/compare/mailersend-vs-postmark.md)\n- [MailerSend vs SendLayer](https://www.anchorterminal.com/compare/mailersend-vs-sendlayer.md)\n- [Mailgun API + MCP vs Postmark API + MCP](https://www.anchorterminal.com/compare/mailgun-vs-postmark.md)\n- [Mailgun API + MCP vs SendLayer](https://www.anchorterminal.com/compare/mailgun-vs-sendlayer.md)\n- [Mailjet API + MCP vs Postmark API + MCP](https://www.anchorterminal.com/compare/mailjet-vs-postmark.md)\n- [Mailjet API + MCP vs SendLayer](https://www.anchorterminal.com/compare/mailjet-vs-sendlayer.md)\n- [MailPace vs Postmark API + MCP](https://www.anchorterminal.com/compare/mailpace-vs-postmark.md)\n- [MailPace vs SendLayer](https://www.anchorterminal.com/compare/mailpace-vs-sendlayer.md)\n- [Mailtrap Email API + MCP vs Postmark API + MCP](https://www.anchorterminal.com/compare/mailtrap-vs-postmark.md)\n- [Mailtrap Email API + MCP vs SendLayer](https://www.anchorterminal.com/compare/mailtrap-vs-sendlayer.md)\n- [Mailchimp Transactional (Mandrill) vs Postmark API + MCP](https://www.anchorterminal.com/compare/mandrill-vs-postmark.md)\n- [Mailchimp Transactional (Mandrill) vs SendLayer](https://www.anchorterminal.com/compare/mandrill-vs-sendlayer.md)\n- [Postmark API + MCP vs Resend API + MCP](https://www.anchorterminal.com/compare/postmark-vs-resend.md)\n- [Postmark API + MCP vs Twilio SendGrid](https://www.anchorterminal.com/compare/postmark-vs-sendgrid.md)\n- [Postmark API + MCP vs SMTP2GO API + MCP](https://www.anchorterminal.com/compare/postmark-vs-smtp2go.md)\n- [Postmark API + MCP vs Zoho CPaaS (formerly ZeptoMail)](https://www.anchorterminal.com/compare/postmark-vs-zoho-zeptomail.md)\n- [Resend API + MCP vs SendLayer](https://www.anchorterminal.com/compare/resend-vs-sendlayer.md)\n- [Twilio SendGrid vs SendLayer](https://www.anchorterminal.com/compare/sendgrid-vs-sendlayer.md)\n- [SendLayer vs SMTP2GO API + MCP](https://www.anchorterminal.com/compare/sendlayer-vs-smtp2go.md)\n- [SendLayer vs Zoho CPaaS (formerly ZeptoMail)](https://www.anchorterminal.com/compare/sendlayer-vs-zoho-zeptomail.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-07",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Postmark API + MCP vs SendLayer",
        "url": ""
      }
    ],
    "description": "Postmark scores 64.9 (B) to SendLayer's 47.7 (D) for sending email. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Postmark API + MCP B 64.9",
      "SendLayer D 47.7",
      "scores"
    ],
    "h1": "Postmark API + MCP vs SendLayer",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/postmark-vs-sendlayer",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Postmark vs SendLayer for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/postmark-vs-sendlayer"
  },
  "tokens": {
    "markdown": 4450,
    "slim": 2480
  },
  "version": 1
}
