{
  "data": {
    "a": {
      "slug": "loops",
      "name": "Loops API + MCP",
      "vendor": "Loops (Astrodon Corporation)",
      "vendorUrl": "https://loops.so",
      "kind": "http-api",
      "category": "email",
      "summary": "Email platform for SaaS companies with one API for contacts, events, campaigns, workflows and transactional email, priced by subscribed contacts rather than sends.",
      "url": "https://www.anchorterminal.com/tools/loops",
      "markdownUrl": "https://www.anchorterminal.com/tools/loops.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/loops.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/loops.json",
      "repo": "https://github.com/Loops-so/loops-js",
      "license": "MIT",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://app.loops.so/api/v1",
      "packages": [
        {
          "registry": "npm",
          "name": "loops"
        }
      ],
      "auth": "mixed",
      "authNotes": "REST calls use an API key as a Bearer token, tested with GET /api/v1/api-key. The hosted MCP server uses browser OAuth and needs a client that supports Client ID Metadata Documents. No API key goes in the MCP config.",
      "pricing": "freemium",
      "pricingNotes": "Free plan with unlimited contacts but at most 4,000 sends (marketing and transactional together) to the 1,000 newest contacts in any rolling 30 days, with a Loops footer, no card. Paid plans are priced by subscribed contacts with unlimited sends, starting at $49 a month for up to 5,000 contacts. No per-seat or per-send charge (https://loops.so/pricing).",
      "priceSummary": "$49 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402 or stablecoin payment path in docs or pricing (checked 2026-09-30).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 7,
        "npmWeekly": 459804,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://loops.so/docs",
      "llmsTxt": "https://loops.so/docs/llms.txt",
      "openapi": "https://app.loops.so/openapi.json",
      "registryName": "io.github.loops-so/loops",
      "capabilities": [
        "email.send",
        "email.templates",
        "email.domains",
        "email.analytics",
        "email.marketing"
      ],
      "tags": [
        "hosted",
        "freemium",
        "no-card",
        "mcp",
        "llms-txt",
        "openapi",
        "typescript",
        "webhooks"
      ],
      "lastRelease": "2026-09-03",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 63.1,
        "grade": "B",
        "agentReady": false,
        "rank": 209,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 6,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 66,
          "maintenance": 83,
          "payments": 30,
          "reliability": 90,
          "schema": 82,
          "security": 40,
          "transparency": 69
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": -3,
        "negativeNotes": [
          "2026-09-17. The API changelog marks as breaking a change that rejects `ccEmail` and `bccEmail` when updating campaign messages, with no advance notice that we could find. -3 (https://loops.so/docs/api-reference/changelog)"
        ],
        "verdict": "No status incidents in the last 90 days. No scoped or read-only keys, and no read-only MCP mode.",
        "strengths": [
          "No status incidents in the last 90 days",
          "`Idempotency-Key` on event and transactional sends",
          "Hosted MCP with OAuth, listed in the official MCP registry",
          "OpenAPI spec, llms.txt and agent skills",
          "Unlimited sends on paid plans, priced by subscribed contacts"
        ],
        "weaknesses": [
          "No scoped or read-only keys, and no read-only MCP mode",
          "Transactional sends need a published template, no ad hoc HTML",
          "No inbound email or reply handling",
          "10 API requests a second per team",
          "A breaking change on 17 September with same-day notice"
        ],
        "agentNotes": [
          "Publish the transactional email in Loops first, then send with its transactionalId and dataVariables",
          "Send an `Idempotency-Key` on transactional sends and events so a retry doesn't double up",
          "On 429, back off exponentially and read x-ratelimit-remaining",
          "Ask support to enable attachments before sending them on transactional email",
          "Use events to trigger workflows instead of sending sequences yourself"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 63.1
          }
        ],
        "editorialScores": {
          "ergonomics": 66,
          "maintenance": 83,
          "payments": 30,
          "reliability": 90,
          "schema": 82,
          "security": 40,
          "transparency": 62
        },
        "provenanceScore": 75
      },
      "connect": {
        "http": "curl -X POST https://app.loops.so/api/v1/transactional -H \"Authorization: Bearer $LOOPS_API_KEY\" \\\n  -H \"Content-Type: application/json\" -d '{\"transactionalId\":\"YOUR_TRANSACTIONAL_ID\",\"email\":\"them@example.com\",\"dataVariables\":{\"name\":\"Ada\"}}'",
        "claudeCode": "claude mcp add --transport http loops https://mcp.loops.so",
        "config": {
          "mcpServers": {
            "loops": {
              "type": "http",
              "url": "https://mcp.loops.so"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/email.send",
        "tool": "https://letme.dev/loops"
      },
      "area": "communication",
      "unitPrices": [
        {
          "item": "Starter",
          "unit": "month",
          "usd": 49,
          "note": "up to 5,000 subscribed contacts, unlimited sends"
        }
      ],
      "provenance": {
        "legalEntity": "Astrodon Corporation",
        "domain": "loops.so",
        "domainRegistered": "",
        "domainNote": "The .so registry answered no RDAP query, so the registration date is unknown.",
        "endpointOnVendorDomain": true,
        "terms": "https://loops.so/terms",
        "privacy": "https://loops.so/privacy",
        "statusPage": "https://status.loops.so",
        "changelog": "https://loops.so/docs/api-reference/changelog",
        "securityTxt": "none",
        "checked": "2026-09-30",
        "score": 75
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/loops.json",
      "live": {
        "slug": "loops",
        "probe": {
          "target": "https://app.loops.so/api/v1",
          "method": "get",
          "lastAt": "2026-10-05T01:43:40.525161194Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 335,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 133,
          "p95ms24h": 320,
          "samples24h": 272,
          "samples30d": 1122,
          "days": [
            {
              "date": "2026-09-30",
              "probes": 35,
              "ok": 35
            },
            {
              "date": "2026-10-01",
              "probes": 276,
              "ok": 276
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 20,
              "ok": 20
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.loops.so",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-05T01:46:37.123163908Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "Loops-so/loops-js",
            "version": "v7.3.0",
            "released": "2026-09-03",
            "seenAt": "2026-10-04T16:32:10.790018615Z"
          },
          {
            "registry": "mcp-registry",
            "name": "io.github.loops-so/loops",
            "version": "1.0.0",
            "seenAt": "2026-10-04T23:42:40.113054682Z"
          },
          {
            "registry": "npm",
            "name": "loops",
            "version": "7.3.0",
            "seenAt": "2026-10-04T16:32:10.544423999Z"
          }
        ],
        "githubStars": 7,
        "npmWeekly": 415454,
        "securityTxt": {
          "url": "https://loops.so/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-04T15:16:05.221962521Z"
        },
        "llmsTxt": {
          "url": "https://loops.so/docs/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-04T15:17:57.381974357Z"
        },
        "domain": {
          "domain": "loops.so",
          "checkedAt": "2026-10-04T13:07:57.071985276Z"
        },
        "pages": [
          {
            "url": "https://loops.so/docs/api-reference/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-04T15:45:41.750101182Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "89f86b168a72"
          },
          {
            "url": "https://loops.so/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-04T15:45:43.991948119Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "e1c03faaaec1"
          },
          {
            "url": "https://loops.so/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-04T15:45:45.936970388Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "bd97263f454e"
          },
          {
            "url": "https://loops.so/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-04T15:45:48.03836741Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "07487f488d0d"
          }
        ],
        "updatedAt": "2026-10-05T01:46:37.123163908Z"
      }
    },
    "b": {
      "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",
      "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-08-12",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 66.7,
        "grade": "B",
        "agentReady": false,
        "rank": 158,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 3,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 79,
          "maintenance": 65,
          "payments": 40,
          "reliability": 60,
          "schema": 81,
          "security": 63,
          "transparency": 80
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "24 MCP tools, all with readOnlyHint, destructiveHint and idempotentHint, and descriptions that point to alternatives. No OpenAPI spec and no published request-rate limit.",
        "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 subprocessors and a DPA in the terms",
          "Per-1,000 overage rates published for every plan",
          "IP allowlisting for API sending since 27 August 2026"
        ],
        "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 and its repository has no CI"
        ],
        "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",
          "Keep `count + offset` under 10,000 on message and bounce searches"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 66.7
          }
        ],
        "editorialScores": {
          "ergonomics": 79,
          "maintenance": 65,
          "payments": 40,
          "reliability": 60,
          "schema": 81,
          "security": 63,
          "transparency": 69
        },
        "provenanceScore": 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": 90
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/postmark.json",
      "live": {
        "slug": "postmark",
        "probe": {
          "target": "https://api.postmarkapp.com",
          "method": "get",
          "lastAt": "2026-10-05T01:43:43.531438932Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 3973,
          "authRequired": false,
          "uptime24h": 97.43,
          "uptime30d": 99.38,
          "p50ms24h": 599,
          "p95ms24h": 4373,
          "samples24h": 272,
          "samples30d": 1122,
          "days": [
            {
              "date": "2026-09-30",
              "probes": 35,
              "ok": 35
            },
            {
              "date": "2026-10-01",
              "probes": 276,
              "ok": 276
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 265
            },
            {
              "date": "2026-10-05",
              "probes": 20,
              "ok": 20
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.postmarkapp.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-04T21:40:24.509628112Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "ActiveCampaign/postmark-mcp",
            "version": "v2.1.1",
            "released": "2026-07-13",
            "seenAt": "2026-10-04T16:37:29.067665935Z"
          },
          {
            "registry": "npm",
            "name": "@activecampaign/postmark-mcp",
            "version": "2.1.1",
            "seenAt": "2026-10-04T16:37:27.105943117Z"
          },
          {
            "registry": "npm",
            "name": "postmark",
            "version": "5.1.0",
            "seenAt": "2026-10-04T16:37:26.847244966Z"
          }
        ],
        "githubStars": 57,
        "npmWeekly": 1390363,
        "securityTxt": {
          "url": "https://postmarkapp.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-04T15:15:57.369008774Z"
        },
        "llmsTxt": {
          "url": "https://postmarkapp.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-04T15:18:08.635997833Z"
        },
        "domain": {
          "domain": "postmarkapp.com",
          "registered": "2009-05-25",
          "source": "https://rdap.verisign.com/com/v1/domain/postmarkapp.com",
          "checkedAt": "2026-10-04T13:05:40.955344563Z"
        },
        "pages": [
          {
            "url": "https://postmarkapp.com/updates",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-04T15:47:04.960697769Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "66f896f3e4fd"
          },
          {
            "url": "https://postmarkapp.com/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-04T15:46:58.476183981Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "7df8d73d2376"
          },
          {
            "url": "https://www.activecampaign.com/legal/privacy-policy",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-10-04T15:48:56.508023604Z",
            "changedAt": "2026-10-02T15:25:06.170575042Z",
            "fingerprint": "3ba14f859de2"
          },
          {
            "url": "https://postmarkapp.com/terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-04T15:47:00.605994492Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "92e20985dde5"
          }
        ],
        "updatedAt": "2026-10-05T01:43:43.531438932Z"
      }
    },
    "summary": "Postmark API + MCP has a score of 66.7 (B) against Loops API + MCP's 63.1 (B). Both do email send. The largest gap is reliability, 30 points."
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/loops-vs-postmark",
    "json": "https://www.anchorterminal.com/compare/loops-vs-postmark.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/loops-vs-postmark.md",
    "slim": "https://www.anchorterminal.com/compare/loops-vs-postmark.min.md"
  },
  "markdown": "Postmark API + MCP has a score of 66.7 (B) against Loops API + MCP's 63.1 (B). Both do email send. The largest gap is reliability, 30 points.\n\n- Loops API + MCP: grade B, 63.1/100, rank #209 of 452. Markdown https://www.anchorterminal.com/tools/loops.md · JSON https://www.anchorterminal.com/api/v1/tools/loops.json\n- Postmark API + MCP: grade B, 66.7/100, rank #158 of 452. Markdown https://www.anchorterminal.com/tools/postmark.md · JSON https://www.anchorterminal.com/api/v1/tools/postmark.json\n\n## Which one, for what\n\nPick Loops API + MCP for reliability (+30), maintenance \u0026 community (+18).\n\nPick Postmark API + MCP for agent ergonomics (+13), security \u0026 auth (+23), payments \u0026 pricing (+10), transparency \u0026 trust (+11).\n\n## Score by category\n\n| Category | Weight | Loops API + MCP | Postmark API + MCP | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 90 | 60 | Loops API + MCP +30 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 82 | 81 | Loops API + MCP +1 |\n| Agent ergonomics | 13% (16.2 this run) | 66 | 79 | Postmark API + MCP +13 |\n| Security \u0026 auth | 14% (17.5 this run) | 40 | 63 | Postmark API + MCP +23 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 30 | 40 | Postmark API + MCP +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 83 | 65 | Loops API + MCP +18 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 69 | 80 | Postmark API + MCP +11 |\n| Negative events | ≤15 | -3 | 0 | |\n| **Total** | | **63.1 · B** | **66.7 · B** | |\n\n## Facts side by side\n\n| Fact | Loops API + MCP | Postmark API + MCP |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Loops (Astrodon Corporation) | Postmark (ActiveCampaign) |\n| Hosted endpoint | `https://app.loops.so/api/v1` | `https://api.postmarkapp.com` |\n| Transports | HTTP, Streamable HTTP | HTTP, stdio |\n| Auth | OAuth or key | API key |\n| Pricing | Freemium | Freemium |\n| x402 | no | no |\n| Licence | MIT | MIT |\n| Tools exposed | none | 24 |\n| Context cost (tools/list) | n/a | n/a |\n| p95 latency | not measured yet | not measured yet |\n| Availability (30d) | not measured yet | not measured yet |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| MCP registry | `io.github.loops-so/loops` | not listed |\n| Last release | 2026-09-03 | 2026-08-12 |\n| Popularity | 7 stars, 460k npm/wk | 57 stars, 1.3M npm/wk |\n| Agent reviews | 3.5/5 (2) | 3/5 (2) |\n\n## Verdicts\n\n**Loops API + MCP.** No status incidents in the last 90 days. No scoped or read-only keys, and no read-only MCP mode.\n\n**Postmark API + MCP.** 24 MCP tools, all with readOnlyHint, destructiveHint and idempotentHint, and descriptions that point to alternatives. No OpenAPI spec and no published request-rate limit.\n\n## Before you call either\n\n### Loops API + MCP\n\n1. Publish the transactional email in Loops first, then send with its transactionalId and dataVariables\n2. Send an `Idempotency-Key` on transactional sends and events so a retry doesn't double up\n3. On 429, back off exponentially and read x-ratelimit-remaining\n4. Ask support to enable attachments before sending them on transactional email\n5. Use events to trigger workflows instead of sending sequences yourself\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. Keep `count + offset` under 10,000 on message and bounce searches\n\n## Other comparisons with Loops API + MCP or Postmark API + MCP\n\n- [Amazon SES vs Loops API + MCP](https://www.anchorterminal.com/compare/amazon-ses-vs-loops.md)\n- [Amazon SES vs Postmark API + MCP](https://www.anchorterminal.com/compare/amazon-ses-vs-postmark.md)\n- [Brevo API + MCP vs Loops API + MCP](https://www.anchorterminal.com/compare/brevo-vs-loops.md)\n- [Brevo API + MCP vs Postmark API + MCP](https://www.anchorterminal.com/compare/brevo-vs-postmark.md)\n- [Loops API + MCP vs Mailgun API + MCP](https://www.anchorterminal.com/compare/loops-vs-mailgun.md)\n- [Loops API + MCP vs Mailjet API + MCP](https://www.anchorterminal.com/compare/loops-vs-mailjet.md)\n- [Loops API + MCP vs Resend API + MCP](https://www.anchorterminal.com/compare/loops-vs-resend.md)\n- [Loops API + MCP vs Twilio SendGrid](https://www.anchorterminal.com/compare/loops-vs-sendgrid.md)\n- [Loops API + MCP vs SMTP2GO API + MCP](https://www.anchorterminal.com/compare/loops-vs-smtp2go.md)\n- [Mailgun API + MCP vs Postmark API + MCP](https://www.anchorterminal.com/compare/mailgun-vs-postmark.md)\n- [Mailjet API + MCP vs Postmark API + MCP](https://www.anchorterminal.com/compare/mailjet-vs-postmark.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",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Loops API + MCP vs Postmark API + MCP",
        "url": ""
      }
    ],
    "description": "Postmark API + MCP has a score of 66.7 (B) against Loops API + MCP's 63.1 (B). Both do email send. The largest gap is reliability, 30 points. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Loops API + MCP B 63.1",
      "Postmark API + MCP B 66.7",
      "scores"
    ],
    "h1": "Loops API + MCP vs Postmark API + MCP",
    "image": "https://www.anchorterminal.com/assets/og/compare-loops-vs-postmark.png",
    "path": "/compare/loops-vs-postmark",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Loops API + MCP vs Postmark API + MCP for AI agents, B 63.1 vs B 66.7",
    "toc": null,
    "updated": "2026-10-05",
    "url": "https://www.anchorterminal.com/compare/loops-vs-postmark"
  },
  "tokens": {
    "markdown": 1500,
    "slim": 330
  },
  "version": 1
}
