{
  "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",
      "dns": "loops.grade.anchorterminal.com",
      "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-10-20",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 64.5,
        "grade": "B",
        "agentReady": false,
        "rank": 462,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 12,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 70,
          "maintenance": 83,
          "payments": 30,
          "reliability": 90,
          "schema": 82,
          "security": 46,
          "transparency": 66
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-02"
        },
        "negative": -3,
        "negativeNotes": [
          "2026-09-17. The API changelog says `ccEmail` and `bccEmail` are now rejected when updating campaign email messages, which had accepted them since 19 June, with no advance notice that we could find. The 30 September change putting ungrouped new campaigns in \"Unsorted\", announced that day, is the same kind and folds in. -3 (https://loops.so/docs/api-reference/changelog)"
        ],
        "verdict": "Event and transactional sends take an `Idempotency-Key`, the status page shows no incident touching the API in 90 days, and official SDKs cover four languages. Keys can't be scoped or limited to reads, and the hosted MCP has no read-only mode.",
        "bestFor": "SaaS teams that send lifecycle and product email from one contact list and want an OAuth MCP.",
        "strengths": [
          "No status incident touching the API or sending in the 90 days to 2 November",
          "`Idempotency-Key` on event and transactional sends",
          "Hosted MCP with OAuth, listed in the official MCP registry",
          "Official SDKs for JavaScript, Go, PHP and Ruby, plus a CLI 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, and 60 a minute on content endpoints",
          "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.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 64.5
          }
        ],
        "editorialScores": {
          "ergonomics": 70,
          "maintenance": 83,
          "payments": 30,
          "reliability": 90,
          "schema": 82,
          "security": 46,
          "transparency": 62
        },
        "provenanceScore": 69,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-02",
            "maintenance": "2026-11-02",
            "payments": "2026-11-02",
            "reliability": "2026-11-02",
            "schema": "2026-11-02",
            "security": "2026-11-02",
            "transparency": "2026-11-02"
          },
          "last": "2026-11-02",
          "lastMoved": "2026-11-02",
          "oldest": "2026-11-02",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "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": 69
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/loops.json",
      "live": {
        "slug": "loops",
        "probe": {
          "target": "https://app.loops.so/api/v1",
          "method": "get",
          "lastAt": "2026-11-07T18:20:36.036507662Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 177,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 147,
          "p95ms24h": 298,
          "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": 251,
              "ok": 251
            },
            {
              "date": "2026-10-29",
              "probes": 248,
              "ok": 248
            },
            {
              "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.loops.so",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-07T18:21:20.779193132Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "Loops-so/loops-js",
            "version": "v7.4.0",
            "released": "2026-11-04",
            "seenAt": "2026-11-06T23:41:26.586586114Z"
          },
          {
            "registry": "mcp-registry",
            "name": "io.github.loops-so/loops",
            "version": "1.0.0",
            "seenAt": "2026-11-07T18:16:28.95801333Z"
          },
          {
            "registry": "npm",
            "name": "loops",
            "version": "7.4.0",
            "seenAt": "2026-11-06T23:41:26.318571697Z"
          }
        ],
        "githubStars": 7,
        "npmWeekly": 438268,
        "securityTxt": {
          "url": "https://loops.so/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:01:29.798931242Z"
        },
        "llmsTxt": {
          "url": "https://loops.so/docs/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:32:55.141609832Z"
        },
        "domain": {
          "domain": "loops.so",
          "checkedAt": "2026-11-01T14:16:24.686664116Z"
        },
        "pages": [
          {
            "url": "https://loops.so/docs/api-reference/changelog",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-11-07T14:13:31.579321858Z",
            "changedAt": "2026-10-27T03:49:38.881323751Z",
            "fingerprint": "5094865bd434"
          },
          {
            "url": "https://loops.so/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-07T14:13:35.405463873Z",
            "changedAt": "2026-10-30T05:43:22.426966614Z",
            "fingerprint": "30bb1ac253dc"
          },
          {
            "url": "https://loops.so/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:13:35.991468987Z",
            "changedAt": "2026-10-30T05:43:24.433842662Z",
            "fingerprint": "364848b912ff"
          },
          {
            "url": "https://loops.so/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:13:37.959164515Z",
            "changedAt": "2026-10-31T06:15:52.286730528Z",
            "fingerprint": "14a168c7fc4b"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.loops.so",
          "checkedAt": "2026-11-07T01:45:54.457212135Z",
          "status": "auth",
          "note": "asks for credentials before listing its tools",
          "changedAt": "2026-11-07T01:45:54.457212135Z"
        },
        "github": {
          "repo": "loops-so/loops-js",
          "checkedAt": "2026-11-02T09:01:44.920933763Z",
          "stars": 7,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-19T08:23:50Z",
          "openIssues": 1,
          "openPRs": 1,
          "issuesOpened90d": 0,
          "issuesClosed90d": 0,
          "prsMerged90d": 7,
          "ci": {
            "branch": "main",
            "runs": 22,
            "success": 22,
            "failure": 0,
            "other": 0,
            "latest": "success",
            "latestAt": "2026-10-19T08:24:07Z"
          },
          "replies": {
            "sampled": 6,
            "unanswered": 1,
            "medianDays": 8.1
          }
        },
        "updatedAt": "2026-11-07T18:21:20.779193132Z"
      }
    },
    "answer": "Loops API + MCP scores 64.5 (B) on agent readiness against MailPace's 58.4 (C), and leads in 4 of 7 scored categories. MailPace leads on transparency \u0026 trust.",
    "b": {
      "slug": "mailpace",
      "name": "MailPace",
      "vendor": "OhMySMTP Ltd",
      "vendorUrl": "https://mailpace.com",
      "kind": "http-api",
      "category": "email",
      "summary": "MailPace is a UK transactional email service, formerly OhMySMTP, hosted in the EU. It sends mail through an HTTPS API or SMTP, turns inbound mail into webhooks and has a Domains and Email Status API.",
      "url": "https://www.anchorterminal.com/tools/mailpace",
      "markdownUrl": "https://www.anchorterminal.com/tools/mailpace.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/mailpace.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/mailpace.json",
      "dns": "mailpace.grade.anchorterminal.com",
      "repo": "https://github.com/mailpace/mailpace-mcp",
      "transports": [
        "http"
      ],
      "packages": [
        {
          "registry": "npm",
          "name": "@mailpace/mailpace.js"
        }
      ],
      "auth": "api-key",
      "authNotes": "Each domain has its own server token, sent in the `MailPace-Server-Token` header, which can send from that domain and read its email status. An organisation token in `MailPace-Organization-Token` manages domains and domain tokens through the Domains API, including revoking them. Both are made in the dashboard after a browser signup.",
      "pricing": "paid",
      "pricingNotes": "$10 a month includes 10,000 emails sent or received, then $1 per 1,000, per the Paddle prices the pricing page loads and the comparison pages ($100 for 100,000, $1,000 for 1 million). A free plan of up to 100 emails a month is given on request by email. Paddle is the merchant of record; card, PayPal, Apple Pay or Google Pay.",
      "priceSummary": "$10 / mo",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs repository, the pricing page or the MCP server source (checked 2026-11-06). Payment is by Paddle subscription; the FAQ says crypto isn't accepted.",
        "endpoints": []
      },
      "toolCount": 12,
      "popularity": {
        "githubStars": 1,
        "npmWeekly": 207,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://docs.mailpace.com/",
      "capabilities": [
        "email.send",
        "email.inbound",
        "email.domains",
        "email.analytics"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "smtp",
        "webhooks",
        "idempotency",
        "status-page",
        "sla",
        "eu",
        "mcp",
        "typescript",
        "ruby",
        "go",
        "php"
      ],
      "lastRelease": "2026-10-22",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 58.4,
        "grade": "C",
        "agentReady": false,
        "rank": 750,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 17,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 71,
          "maintenance": 65,
          "payments": 25,
          "reliability": 70,
          "schema": 54,
          "security": 50,
          "transparency": 75
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "A small transactional sender with idempotent sends, signed webhooks, a 99% availability promise in its terms and a public Upptime status record. There is no OpenAPI spec, no published rate limit, no llms.txt, and its MCP server was rewritten on 4 November 2026 but isn't on npm or in the MCP registry yet.",
        "bestFor": "Low-volume transactional mail from EU-hosted infrastructure with idempotent sends and no tracking.",
        "strengths": [
          "Sends accept an `Idempotency-Key` header kept for 24 hours, so a retry after a timeout doesn't send twice",
          "Per-domain server tokens limit a leaked key to one domain, and organisation tokens can create and revoke them by API",
          "Webhooks are signed with Ed25519 and inbound mail is retried five times before it fails",
          "Status page on Upptime with GitHub issues as incident reports, and a 99% monthly availability promise with credits in the terms",
          "Sub-processors and their locations are listed, and mail is kept 30 days plus 7 in backups per the DPA"
        ],
        "weaknesses": [
          "No OpenAPI spec, llms.txt or Markdown docs for agents; the reference is Docusaurus pages",
          "Rate limits aren't published; the docs say they vary by organisation age, plan and history",
          "No free plan without emailing support, and the paid plan starts at $10 a month",
          "MCP server 2.0.0 exists only in the repository; npm and the MCP registry had nothing for it on 6 November 2026",
          "No security.txt, disclosure policy or certification found"
        ],
        "agentNotes": [
          "Send a UUID in `Idempotency-Key` on every `POST /api/v1/send`, and reuse it on a retry; keys last 24 hours and are tied to one token",
          "Use the server token of the sending domain, since the From domain must match the token's domain or the API returns 403",
          "On 429 `You are sending emails too quickly` back off; no Retry-After is documented",
          "Send only transactional mail; marketing and bulk newsletters are prohibited by the docs and terms",
          "Read delivery with `GET /api/v1/domains/:domain_id/emails/:id` using the id the send returned"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 58.4
          }
        ],
        "editorialScores": {
          "ergonomics": 71,
          "maintenance": 65,
          "payments": 25,
          "reliability": 70,
          "schema": 54,
          "security": 50,
          "transparency": 69
        },
        "provenanceScore": 81,
        "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": {
        "http": "curl https://app.mailpace.com/api/v1/send -X POST -H \"Accept: application/json\" -H \"Content-Type: application/json\" -H \"MailPace-Server-Token: $MAILPACE_TOKEN\" -H \"Idempotency-Key: $(uuidgen)\" -d '{\"from\":\"you@yourdomain.com\",\"to\":\"person@example.com\",\"subject\":\"Hello\",\"textbody\":\"Hello\"}'"
      },
      "letme": {
        "capability": "https://letme.dev/email.send",
        "tool": "https://letme.dev/mailpace"
      },
      "area": "communication",
      "unitPrices": [
        {
          "item": "Scaling plan",
          "unit": "month",
          "usd": 10,
          "note": "includes 10,000 emails sent or received"
        },
        {
          "item": "Emails beyond 10,000",
          "unit": "1k-emails",
          "usd": 1
        }
      ],
      "provenance": {
        "legalEntity": "OhMySMTP Ltd",
        "domain": "mailpace.com",
        "domainRegistered": "2022-01-10",
        "endpointOnVendorDomain": true,
        "terms": "https://mailpace.com/terms",
        "privacy": "https://mailpace.com/privacy",
        "statusPage": "https://status.mailpace.com",
        "changelog": "https://mailpace.com/category/changelog",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "The terms and privacy policy name OhMySMTP Ltd, incorporated in England and Wales, company number 13200428. Companies House lists two active directors.",
          "Terms last updated 9 January 2026, privacy policy 30 August 2026, DPA updated in October 2026 per the landing repository.",
          "mailpace.com/robots.txt allows all paths. The terms contain no clause on automated access to the website beyond the usual licence limits.",
          "RDAP gives mailpace.com a registration date of 10 January 2022; the service ran as OhMySMTP before that.",
          "/.well-known/security.txt returns 404 on mailpace.com and app.mailpace.com."
        ],
        "score": 81
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/mailpace.json",
      "live": {
        "slug": "mailpace",
        "vendorStatus": {
          "page": "https://status.mailpace.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-07T04:48:01.553362214Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "@mailpace/mailpace.js",
            "version": "0.1.3",
            "seenAt": "2026-11-06T23:42:02.752996422Z"
          }
        ],
        "githubStars": 1,
        "npmWeekly": 207,
        "securityTxt": {
          "url": "https://mailpace.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:01:07.630537329Z"
        },
        "pages": [
          {
            "url": "https://mailpace.com/category/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:13:40.841899008Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "38f92a159d1b"
          },
          {
            "url": "https://mailpace.com/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:13:45.28058492Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "e6b0fea49c1d"
          },
          {
            "url": "https://mailpace.com/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:13:45.480605157Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "24f1eed01dad"
          }
        ],
        "updatedAt": "2026-11-07T16:01:07.630537329Z"
      }
    },
    "edges": [
      {
        "by": 28,
        "category": "schema",
        "leads": "loops",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "OpenAPI 3.1 in YAML and JSON at app.loops.so, version 1.22.8 on 2 November with 48 paths and 72 operations (25). llms.txt, Markdown copies of every docs page and agent skills for coding agents (10). The reference explains each endpoint. The hosted MCP isn't open source, so we couldn't read its tool definitions (10). Typed inputs in the spec, with ranges such as perPage between 10 and 50 (12). Examples for the API, SDKs and CLI on each examples page, and the spec declares 400, 404, 409, 422 and 429 answers, but the API intro doesn't document the error format (10). Dated API changelog with entries to 20 October, and a versioned spec (15). 25 + 10 + 10 + 12 + 10 + 15 = 82.",
          "b": "No OpenAPI or other machine-readable contract for the HTTPS API. The MCP server's 12 tools have typed zod inputs and output schemas, but that server isn't published yet, so partial credit (8 of 25). llms.txt answers 404 on mailpace.com and docs.mailpace.com, and no Markdown copies are served (0). The reference states what each endpoint does, and the introduction says when not to use it (transactional only, no batch, no static IPs) (12 of 20). Field tables give type, examples and required or optional, with enums for status, sort and direction and the 50-recipient cap in text (9 of 15). Examples in curl and six languages and a full table of error responses with messages, though several listed messages have a broken quote (`{\"error:\"...`) and the send reference says 30 MB where the home page says 25 MB (12 of 15). Version in the path with a promise that an old version runs until a published end-of-life date, and dated changelog posts (13 of 15). Total 54."
        },
        "scores": {
          "a": 82,
          "b": 54
        }
      },
      {
        "by": 20,
        "category": "reliability",
        "leads": "loops",
        "name": "Reliability",
        "reasons": {
          "a": "Statuspage at status.loops.so with components for sending, transactional, API, SMTP relay and webhooks (20). One incident in the 90 days to 2 November, \"Delay in email metric processing\" on 11 September (about 90 minutes, metrics slow to appear in the app, none lost), which doesn't touch the API or sending, so the record reads as clean (30). 10 requests a second per team, and 60 a minute for the content endpoints (15). 429 with x-ratelimit headers and advice to retry with exponential backoff, and an `Idempotency-Key` header on event and transactional sends (15). No SLA found on the pricing page (0). GA (10). 20 + 30 + 15 + 15 + 0 + 10 = 90.",
          "b": "Graded with the hosted lines. A public Upptime status page at status.mailpace.com, driven by the mailpace/status repository, with monitors for the application, SMTP, docs, blog and landing page and GitHub issues as incident reports (20). The 90 days from 8 August hold two incidents, an application outage on 22 September 2026 that the operator put down to an upstream provider returning 5xx (issue open for two minutes), and SMTP down on 2 November 2026 for about 35 minutes, which leaves SMTP at 99.65% for the week. Minor incidents only (20). No rate limit numbers are published; the docs say limits vary by organisation age, plan and history (0). A documented 429 with its message, no Retry-After or backoff guidance, and an `Idempotency-Key` on sends with written retry rules (10 of 15). The terms guarantee 99% monthly availability of the API and dashboard with a 5% credit per 30 minutes (10). The API is at v1 with no beta label (10). Total 70."
        },
        "scores": {
          "a": 90,
          "b": 70
        }
      },
      {
        "by": 18,
        "category": "maintenance",
        "leads": "loops",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "API changelog entries on 20 and 6 October, loops-go v0.8.0 and the Loops CLI v0.13.0 on 20 October (30). Since 4 August, seven changelog entries, loops-js 7.2.0 and 7.3.0, loops-go 0.5.0 to 0.8.0, loops-php 3.3.0 and 3.4.0, loops-rb 2.5.0 and nine CLI tags from v0.10.0 to v0.13.1 (20). Public changelog and support. We couldn't see reply times (10). Official SDKs in four languages, current with the spec, and the MCP is listed in the official registry as io.github.loops-so/loops 1.0.0 (13 August) (15). The SDK runs tests in CI on every push (8). 30 + 20 + 10 + 15 + 8 = 83.",
          "b": "Email Status API documented on 22 October 2026, and the MCP server rewritten as 2.0.0 on 4 November 2026, two days before this check (30). In the 90 days from 8 August, the Q3 changelog post of 31 August, the Email Status docs of 22 October, a mailpace-rails push on 17 October and the MCP rewrite, but only one changelog post (15 of 20). A closed service with email support. Three pull requests to the MCP repository from 2025 have no reply (8 of 15). Not in the official MCP registry (search for mailpace returned nothing on 6 November). The Node library was last pushed in October 2024 and Go in January 2024, while mailpace-rails is current (7 of 15). The MCP server gained CI with tests on 4 November; the older SDKs weren't checked for CI (5 of 10). Total 65."
        },
        "scores": {
          "a": 83,
          "b": 65
        }
      },
      {
        "by": 9,
        "category": "transparency",
        "leads": "mailpace",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Closed service with published terms and an MIT JavaScript SDK (20). The privacy policy (updated 15 May 2025) says customer contact and message data is returned or deleted within 30 days of termination and account data within 12 months, links a DPA, and says aggregated or anonymised data is used for machine learning in the product (22). Dated deprecations, such as List custom fields on 14 January 2025, but a breaking change on 17 September shipped with same-day notice (12). No subprocessor list. The policy names Stripe, Google Analytics, Segment and GitHub and says data goes to the US (8).",
          "b": "Closed hosted service under terms that name OhMySMTP Ltd with its company number. The MCP server, SDKs, landing site and status page are MIT (18 of 30). The privacy policy (30 August 2026), the pricing page and the DPA agree on retention, 30 days in the dashboard and 7 more in backups, 37 days at most (25 of 30). The API reference promises an old version runs until a published end-of-life date, and the terms list dated changes. The terms also say changes apply immediately (8 of 20). Sub-processors listed with purpose and location, Freethought hosting in the EU, Hetzner backups in Germany, AppSignal in Amsterdam, Paddle in the UK and Tutanota in Germany (18 of 20). Total 69."
        },
        "scores": {
          "a": 66,
          "b": 75
        }
      },
      {
        "by": 5,
        "category": "payments",
        "leads": "loops",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No x402, MPP or L402 (0). Paid plans are priced by subscribed contacts on a slider, Growth from $49 a month for up to 5,000 contacts with unlimited sends, re-read on 2 November (10). Free plan of 4,000 sends in any rolling 30 days to 1,000 contacts, with no card (20). Browser signup, no autonomous route (0).",
          "b": "No x402, MPP or L402 (0). $10 a month for 10,000 emails and $1 per 1,000 after, loaded from Paddle on the pricing page and stated in the comparison pages' tables without login (20). A free plan of up to 100 emails a month is available only by emailing support, so it isn't self-serve (5 of 20). Signup, DKIM verification and payment happen in a browser (0). Total 25."
        },
        "scores": {
          "a": 30,
          "b": 25
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Loops (Astrodon Corporation)",
        "b": "OhMySMTP Ltd",
        "name": "Vendor"
      },
      {
        "a": "https://app.loops.so/api/v1",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or 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": "none",
        "b": "12",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "io.github.loops-so/loops",
        "b": "not listed",
        "name": "MCP registry"
      },
      {
        "a": "2026-10-20",
        "b": "2026-10-22",
        "name": "Last release"
      },
      {
        "a": "2025-12-15",
        "b": "2026-01-09",
        "name": "Terms last updated"
      },
      {
        "a": "2025-05-15",
        "b": "2026-08-30",
        "name": "Privacy policy last updated"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "7 stars, 460k npm/wk",
        "b": "1 stars, 207 npm/wk",
        "name": "Popularity"
      },
      {
        "a": "3.5/5 (2)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Loops API + MCP scores 64.5 (B) on agent readiness against MailPace's 58.4 (C), and leads in 4 of 7 scored categories. MailPace leads on transparency \u0026 trust.",
        "question": "Which is better for AI agents, Loops API + MCP or MailPace?"
      },
      {
        "answer": "Loops API + MCP takes an API key or an OAuth sign-in. MailPace needs an API key.",
        "question": "Do Loops API + MCP and MailPace need an API key?"
      },
      {
        "answer": "Loops API + MCP has a hosted endpoint at https://app.loops.so/api/v1. No hosted endpoint is listed for MailPace.",
        "question": "Can an agent call Loops API + MCP and MailPace without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 90 against 70",
          "Schema \u0026 documentation, 82 against 54",
          "Payments \u0026 pricing, 30 against 25",
          "Maintenance \u0026 community, 83 against 65"
        ],
        "also": [
          "A hosted endpoint, with nothing to install",
          "Free to start without a card"
        ],
        "goodFor": "SaaS teams that send lifecycle and product email from one contact list and want an OAuth MCP.",
        "slug": "loops",
        "watchFor": "No scoped or read-only keys, and no read-only MCP mode"
      },
      {
        "aheadOn": [
          "Transparency \u0026 trust, 75 against 66"
        ],
        "also": [
          "No incidents deducted, where Loops API + MCP loses 3 points for them"
        ],
        "goodFor": "Low-volume transactional mail from EU-hosted infrastructure with idempotent sends and no tracking.",
        "slug": "mailpace",
        "watchFor": "No OpenAPI spec, llms.txt or Markdown docs for agents; the reference is Docusaurus pages"
      }
    ],
    "history": {
      "loops": [
        {
          "causes": [
            "evidence",
            "correction"
          ],
          "date": "2026-11-02",
          "delta": 1.7,
          "from": 62.8,
          "fromGrade": "B",
          "to": 64.5,
          "toGrade": "B"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-28",
          "delta": 0.1,
          "from": 62.7,
          "fromGrade": "B",
          "to": 62.8,
          "toGrade": "B"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-08",
          "delta": -0.4,
          "from": 63.1,
          "fromGrade": "B",
          "to": 62.7,
          "toGrade": "B"
        }
      ],
      "mailpace": null
    },
    "job": {
      "capability": "email.send",
      "name": "Sending email"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/ahasend-vs-loops.json",
        "title": "AhaSend API + MCP vs Loops API + MCP",
        "url": "https://www.anchorterminal.com/compare/ahasend-vs-loops"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ahasend-vs-mailpace.json",
        "title": "AhaSend API + MCP vs MailPace",
        "url": "https://www.anchorterminal.com/compare/ahasend-vs-mailpace"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-ses-vs-loops.json",
        "title": "Amazon SES vs Loops API + MCP",
        "url": "https://www.anchorterminal.com/compare/amazon-ses-vs-loops"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-ses-vs-mailpace.json",
        "title": "Amazon SES vs MailPace",
        "url": "https://www.anchorterminal.com/compare/amazon-ses-vs-mailpace"
      },
      {
        "json": "https://www.anchorterminal.com/compare/brevo-vs-loops.json",
        "title": "Brevo API + MCP vs Loops API + MCP",
        "url": "https://www.anchorterminal.com/compare/brevo-vs-loops"
      },
      {
        "json": "https://www.anchorterminal.com/compare/brevo-vs-mailpace.json",
        "title": "Brevo API + MCP vs MailPace",
        "url": "https://www.anchorterminal.com/compare/brevo-vs-mailpace"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-email-service-vs-loops.json",
        "title": "Cloudflare Email Service vs Loops API + MCP",
        "url": "https://www.anchorterminal.com/compare/cloudflare-email-service-vs-loops"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cloudflare-email-service-vs-mailpace.json",
        "title": "Cloudflare Email Service vs MailPace",
        "url": "https://www.anchorterminal.com/compare/cloudflare-email-service-vs-mailpace"
      },
      {
        "json": "https://www.anchorterminal.com/compare/groundmail-vs-loops.json",
        "title": "Groundmail API + MCP vs Loops API + MCP",
        "url": "https://www.anchorterminal.com/compare/groundmail-vs-loops"
      },
      {
        "json": "https://www.anchorterminal.com/compare/groundmail-vs-mailpace.json",
        "title": "Groundmail API + MCP vs MailPace",
        "url": "https://www.anchorterminal.com/compare/groundmail-vs-mailpace"
      },
      {
        "json": "https://www.anchorterminal.com/compare/loops-vs-mailersend.json",
        "title": "Loops API + MCP vs MailerSend",
        "url": "https://www.anchorterminal.com/compare/loops-vs-mailersend"
      },
      {
        "json": "https://www.anchorterminal.com/compare/loops-vs-mailgun.json",
        "title": "Loops API + MCP vs Mailgun API + MCP",
        "url": "https://www.anchorterminal.com/compare/loops-vs-mailgun"
      },
      {
        "json": "https://www.anchorterminal.com/compare/loops-vs-mailjet.json",
        "title": "Loops API + MCP vs Mailjet API + MCP",
        "url": "https://www.anchorterminal.com/compare/loops-vs-mailjet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/loops-vs-mailtrap.json",
        "title": "Loops API + MCP vs Mailtrap Email API + MCP",
        "url": "https://www.anchorterminal.com/compare/loops-vs-mailtrap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/loops-vs-mandrill.json",
        "title": "Loops API + MCP vs Mailchimp Transactional (Mandrill)",
        "url": "https://www.anchorterminal.com/compare/loops-vs-mandrill"
      },
      {
        "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-resend.json",
        "title": "Loops API + MCP vs Resend API + MCP",
        "url": "https://www.anchorterminal.com/compare/loops-vs-resend"
      },
      {
        "json": "https://www.anchorterminal.com/compare/loops-vs-sendgrid.json",
        "title": "Loops API + MCP vs Twilio SendGrid",
        "url": "https://www.anchorterminal.com/compare/loops-vs-sendgrid"
      },
      {
        "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/loops-vs-smtp2go.json",
        "title": "Loops API + MCP vs SMTP2GO API + MCP",
        "url": "https://www.anchorterminal.com/compare/loops-vs-smtp2go"
      },
      {
        "json": "https://www.anchorterminal.com/compare/loops-vs-zoho-zeptomail.json",
        "title": "Loops API + MCP vs Zoho CPaaS (formerly ZeptoMail)",
        "url": "https://www.anchorterminal.com/compare/loops-vs-zoho-zeptomail"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mailersend-vs-mailpace.json",
        "title": "MailerSend vs MailPace",
        "url": "https://www.anchorterminal.com/compare/mailersend-vs-mailpace"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mailgun-vs-mailpace.json",
        "title": "Mailgun API + MCP vs MailPace",
        "url": "https://www.anchorterminal.com/compare/mailgun-vs-mailpace"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mailjet-vs-mailpace.json",
        "title": "Mailjet API + MCP vs MailPace",
        "url": "https://www.anchorterminal.com/compare/mailjet-vs-mailpace"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mailpace-vs-mailtrap.json",
        "title": "MailPace vs Mailtrap Email API + MCP",
        "url": "https://www.anchorterminal.com/compare/mailpace-vs-mailtrap"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mailpace-vs-mandrill.json",
        "title": "MailPace vs Mailchimp Transactional (Mandrill)",
        "url": "https://www.anchorterminal.com/compare/mailpace-vs-mandrill"
      },
      {
        "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-resend.json",
        "title": "MailPace vs Resend API + MCP",
        "url": "https://www.anchorterminal.com/compare/mailpace-vs-resend"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mailpace-vs-sendgrid.json",
        "title": "MailPace vs Twilio SendGrid",
        "url": "https://www.anchorterminal.com/compare/mailpace-vs-sendgrid"
      },
      {
        "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/mailpace-vs-smtp2go.json",
        "title": "MailPace vs SMTP2GO API + MCP",
        "url": "https://www.anchorterminal.com/compare/mailpace-vs-smtp2go"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mailpace-vs-zoho-zeptomail.json",
        "title": "MailPace vs Zoho CPaaS (formerly ZeptoMail)",
        "url": "https://www.anchorterminal.com/compare/mailpace-vs-zoho-zeptomail"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 20,
        "edge": "loops",
        "key": "reliability",
        "loops": 90,
        "mailpace": 70,
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 28,
        "edge": "loops",
        "key": "schema",
        "loops": 82,
        "mailpace": 54,
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 1,
        "edge": "mailpace",
        "key": "ergonomics",
        "loops": 70,
        "mailpace": 71,
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 4,
        "edge": "mailpace",
        "key": "security",
        "loops": 46,
        "mailpace": 50,
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 5,
        "edge": "loops",
        "key": "payments",
        "loops": 30,
        "mailpace": 25,
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 18,
        "edge": "loops",
        "key": "maintenance",
        "loops": 83,
        "mailpace": 65,
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 9,
        "edge": "mailpace",
        "key": "transparency",
        "loops": 66,
        "mailpace": 75,
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Loops API + MCP scores 64.5 (B) on agent readiness against MailPace's 58.4 (C), and leads in 4 of 7 scored categories. MailPace leads on transparency \u0026 trust. Both do sending email.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "loops": "Event and transactional sends take an `Idempotency-Key`, the status page shows no incident touching the API in 90 days, and official SDKs cover four languages. Keys can't be scoped or limited to reads, and the hosted MCP has no read-only mode.",
      "mailpace": "A small transactional sender with idempotent sends, signed webhooks, a 99% availability promise in its terms and a public Upptime status record. There is no OpenAPI spec, no published rate limit, no llms.txt, and its MCP server was rewritten on 4 November 2026 but isn't on npm or in the MCP registry yet."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/loops-vs-mailpace",
    "json": "https://www.anchorterminal.com/compare/loops-vs-mailpace.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/loops-vs-mailpace.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/loops-vs-mailpace.min.md"
  },
  "markdown": "Loops API + MCP scores 64.5 (B) on agent readiness against MailPace's 58.4 (C), and leads in 4 of 7 scored categories. MailPace leads on transparency \u0026 trust. Both do sending email.\n\n- Loops API + MCP: grade B, 64.5/100, rank #462 of 1486. Markdown https://www.anchorterminal.com/tools/loops.md · JSON https://www.anchorterminal.com/api/v1/tools/loops.json\n- MailPace: grade C, 58.4/100, rank #750 of 1486. Markdown https://www.anchorterminal.com/tools/mailpace.md · JSON https://www.anchorterminal.com/api/v1/tools/mailpace.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### Loops API + MCP (B)\n\nGood for: SaaS teams that send lifecycle and product email from one contact list and want an OAuth MCP.\n\nAhead on:\n- Reliability, 90 against 70\n- Schema \u0026 documentation, 82 against 54\n- Payments \u0026 pricing, 30 against 25\n- Maintenance \u0026 community, 83 against 65\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n- Free to start without a card\n\nWatch for: No scoped or read-only keys, and no read-only MCP mode\n\n### MailPace (C)\n\nGood for: Low-volume transactional mail from EU-hosted infrastructure with idempotent sends and no tracking.\n\nAhead on:\n- Transparency \u0026 trust, 75 against 66\n\nAlso in its favour:\n- No incidents deducted, where Loops API + MCP loses 3 points for them\n\nWatch for: No OpenAPI spec, llms.txt or Markdown docs for agents; the reference is Docusaurus pages\n\n\n## Why the edge\n\n### Schema \u0026 documentation: Loops API + MCP +28\n\n- Loops API + MCP (82): OpenAPI 3.1 in YAML and JSON at app.loops.so, version 1.22.8 on 2 November with 48 paths and 72 operations (25). llms.txt, Markdown copies of every docs page and agent skills for coding agents (10). The reference explains each endpoint. The hosted MCP isn't open source, so we couldn't read its tool definitions (10). Typed inputs in the spec, with ranges such as perPage between 10 and 50 (12). Examples for the API, SDKs and CLI on each examples page, and the spec declares 400, 404, 409, 422 and 429 answers, but the API intro doesn't document the error format (10). Dated API changelog with entries to 20 October, and a versioned spec (15). 25 + 10 + 10 + 12 + 10 + 15 = 82.\n- MailPace (54): No OpenAPI or other machine-readable contract for the HTTPS API. The MCP server's 12 tools have typed zod inputs and output schemas, but that server isn't published yet, so partial credit (8 of 25). llms.txt answers 404 on mailpace.com and docs.mailpace.com, and no Markdown copies are served (0). The reference states what each endpoint does, and the introduction says when not to use it (transactional only, no batch, no static IPs) (12 of 20). Field tables give type, examples and required or optional, with enums for status, sort and direction and the 50-recipient cap in text (9 of 15). Examples in curl and six languages and a full table of error responses with messages, though several listed messages have a broken quote (`{\"error:\"...`) and the send reference says 30 MB where the home page says 25 MB (12 of 15). Version in the path with a promise that an old version runs until a published end-of-life date, and dated changelog posts (13 of 15). Total 54.\n\n### Reliability: Loops API + MCP +20\n\n- Loops API + MCP (90): Statuspage at status.loops.so with components for sending, transactional, API, SMTP relay and webhooks (20). One incident in the 90 days to 2 November, \"Delay in email metric processing\" on 11 September (about 90 minutes, metrics slow to appear in the app, none lost), which doesn't touch the API or sending, so the record reads as clean (30). 10 requests a second per team, and 60 a minute for the content endpoints (15). 429 with x-ratelimit headers and advice to retry with exponential backoff, and an `Idempotency-Key` header on event and transactional sends (15). No SLA found on the pricing page (0). GA (10). 20 + 30 + 15 + 15 + 0 + 10 = 90.\n- MailPace (70): Graded with the hosted lines. A public Upptime status page at status.mailpace.com, driven by the mailpace/status repository, with monitors for the application, SMTP, docs, blog and landing page and GitHub issues as incident reports (20). The 90 days from 8 August hold two incidents, an application outage on 22 September 2026 that the operator put down to an upstream provider returning 5xx (issue open for two minutes), and SMTP down on 2 November 2026 for about 35 minutes, which leaves SMTP at 99.65% for the week. Minor incidents only (20). No rate limit numbers are published; the docs say limits vary by organisation age, plan and history (0). A documented 429 with its message, no Retry-After or backoff guidance, and an `Idempotency-Key` on sends with written retry rules (10 of 15). The terms guarantee 99% monthly availability of the API and dashboard with a 5% credit per 30 minutes (10). The API is at v1 with no beta label (10). Total 70.\n\n### Maintenance \u0026 community: Loops API + MCP +18\n\n- Loops API + MCP (83): API changelog entries on 20 and 6 October, loops-go v0.8.0 and the Loops CLI v0.13.0 on 20 October (30). Since 4 August, seven changelog entries, loops-js 7.2.0 and 7.3.0, loops-go 0.5.0 to 0.8.0, loops-php 3.3.0 and 3.4.0, loops-rb 2.5.0 and nine CLI tags from v0.10.0 to v0.13.1 (20). Public changelog and support. We couldn't see reply times (10). Official SDKs in four languages, current with the spec, and the MCP is listed in the official registry as io.github.loops-so/loops 1.0.0 (13 August) (15). The SDK runs tests in CI on every push (8). 30 + 20 + 10 + 15 + 8 = 83.\n- MailPace (65): Email Status API documented on 22 October 2026, and the MCP server rewritten as 2.0.0 on 4 November 2026, two days before this check (30). In the 90 days from 8 August, the Q3 changelog post of 31 August, the Email Status docs of 22 October, a mailpace-rails push on 17 October and the MCP rewrite, but only one changelog post (15 of 20). A closed service with email support. Three pull requests to the MCP repository from 2025 have no reply (8 of 15). Not in the official MCP registry (search for mailpace returned nothing on 6 November). The Node library was last pushed in October 2024 and Go in January 2024, while mailpace-rails is current (7 of 15). The MCP server gained CI with tests on 4 November; the older SDKs weren't checked for CI (5 of 10). Total 65.\n\n### Transparency \u0026 trust: MailPace +9\n\n- Loops API + MCP (66): Closed service with published terms and an MIT JavaScript SDK (20). The privacy policy (updated 15 May 2025) says customer contact and message data is returned or deleted within 30 days of termination and account data within 12 months, links a DPA, and says aggregated or anonymised data is used for machine learning in the product (22). Dated deprecations, such as List custom fields on 14 January 2025, but a breaking change on 17 September shipped with same-day notice (12). No subprocessor list. The policy names Stripe, Google Analytics, Segment and GitHub and says data goes to the US (8).\n- MailPace (75): Closed hosted service under terms that name OhMySMTP Ltd with its company number. The MCP server, SDKs, landing site and status page are MIT (18 of 30). The privacy policy (30 August 2026), the pricing page and the DPA agree on retention, 30 days in the dashboard and 7 more in backups, 37 days at most (25 of 30). The API reference promises an old version runs until a published end-of-life date, and the terms list dated changes. The terms also say changes apply immediately (8 of 20). Sub-processors listed with purpose and location, Freethought hosting in the EU, Hetzner backups in Germany, AppSignal in Amsterdam, Paddle in the UK and Tutanota in Germany (18 of 20). Total 69.\n\n### Payments \u0026 pricing: Loops API + MCP +5\n\n- Loops API + MCP (30): No x402, MPP or L402 (0). Paid plans are priced by subscribed contacts on a slider, Growth from $49 a month for up to 5,000 contacts with unlimited sends, re-read on 2 November (10). Free plan of 4,000 sends in any rolling 30 days to 1,000 contacts, with no card (20). Browser signup, no autonomous route (0).\n- MailPace (25): No x402, MPP or L402 (0). $10 a month for 10,000 emails and $1 per 1,000 after, loaded from Paddle on the pricing page and stated in the comparison pages' tables without login (20). A free plan of up to 100 emails a month is available only by emailing support, so it isn't self-serve (5 of 20). Signup, DKIM verification and payment happen in a browser (0). Total 25.\n\n## Score by category\n\n| Category | Weight | Loops API + MCP | MailPace | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 90 | 70 | Loops API + MCP +20 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 82 | 54 | Loops API + MCP +28 |\n| Agent ergonomics | 13% (16.2 this run) | 70 | 71 | MailPace +1 |\n| Security \u0026 auth | 14% (17.5 this run) | 46 | 50 | MailPace +4 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 30 | 25 | Loops API + MCP +5 |\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) | 66 | 75 | MailPace +9 |\n| Negative events | ≤15 | -3 | 0 | |\n| **Total** | | **64.5 · B** | **58.4 · C** | |\n\n## Facts side by side\n\n| Fact | Loops API + MCP | MailPace |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Loops (Astrodon Corporation) | OhMySMTP Ltd |\n| Hosted endpoint | `https://app.loops.so/api/v1` | no (local only) |\n| Transports | HTTP, Streamable HTTP | HTTP |\n| Auth | OAuth or key | API key |\n| Pricing | Freemium | Paid |\n| x402 | no | no |\n| Licence | MIT | none |\n| Tools exposed | none | 12 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | no |\n| MCP registry | `io.github.loops-so/loops` | not listed |\n| Last release | 2026-10-20 | 2026-10-22 |\n| Terms last updated | 2025-12-15 | 2026-01-09 |\n| Privacy policy last updated | 2025-05-15 | 2026-08-30 |\n| Customer content may train models | yes | not found in the text |\n| Terms restrict automated access | yes | yes |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | yes | not found in the text |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Popularity | 7 stars, 460k npm/wk | 1 stars, 207 npm/wk |\n| Agent reviews | 3.5/5 (2) | none |\n\n## How the scores have moved\n\n### Loops API + MCP\n\n- +1.7 on 2 November 2026: new evidence, correction\n- +0.1 on 28 October 2026: checklist\n- -0.4 on 8 October 2026: checklist\n\n### MailPace\n\nNo score change since it was listed.\n\n## Verdicts\n\n**Loops API + MCP.** Event and transactional sends take an `Idempotency-Key`, the status page shows no incident touching the API in 90 days, and official SDKs cover four languages. Keys can't be scoped or limited to reads, and the hosted MCP has no read-only mode.\n\n**MailPace.** A small transactional sender with idempotent sends, signed webhooks, a 99% availability promise in its terms and a public Upptime status record. There is no OpenAPI spec, no published rate limit, no llms.txt, and its MCP server was rewritten on 4 November 2026 but isn't on npm or in the MCP registry yet.\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### MailPace\n\n1. Send a UUID in `Idempotency-Key` on every `POST /api/v1/send`, and reuse it on a retry; keys last 24 hours and are tied to one token\n2. Use the server token of the sending domain, since the From domain must match the token's domain or the API returns 403\n3. On 429 `You are sending emails too quickly` back off; no Retry-After is documented\n4. Send only transactional mail; marketing and bulk newsletters are prohibited by the docs and terms\n5. Read delivery with `GET /api/v1/domains/:domain_id/emails/:id` using the id the send returned\n\n## Questions\n\n### Which is better for AI agents, Loops API + MCP or MailPace?\n\nLoops API + MCP scores 64.5 (B) on agent readiness against MailPace's 58.4 (C), and leads in 4 of 7 scored categories. MailPace leads on transparency \u0026 trust.\n\n### Do Loops API + MCP and MailPace need an API key?\n\nLoops API + MCP takes an API key or an OAuth sign-in. MailPace needs an API key.\n\n### Can an agent call Loops API + MCP and MailPace without installing anything?\n\nLoops API + MCP has a hosted endpoint at https://app.loops.so/api/v1. No hosted endpoint is listed for MailPace.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/loops-vs-mailpace.json, and with the fewest tokens: https://www.anchorterminal.com/compare/loops-vs-mailpace.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"loops\", \"b\": \"mailpace\"}`. From a terminal: `anchor compare loops mailpace`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/loops.json and https://www.anchorterminal.com/api/v1/tools/mailpace.json\n\n## Other comparisons with Loops API + MCP or MailPace\n\n- [AhaSend API + MCP vs Loops API + MCP](https://www.anchorterminal.com/compare/ahasend-vs-loops.md)\n- [AhaSend API + MCP vs MailPace](https://www.anchorterminal.com/compare/ahasend-vs-mailpace.md)\n- [Amazon SES vs Loops API + MCP](https://www.anchorterminal.com/compare/amazon-ses-vs-loops.md)\n- [Amazon SES vs MailPace](https://www.anchorterminal.com/compare/amazon-ses-vs-mailpace.md)\n- [Brevo API + MCP vs Loops API + MCP](https://www.anchorterminal.com/compare/brevo-vs-loops.md)\n- [Brevo API + MCP vs MailPace](https://www.anchorterminal.com/compare/brevo-vs-mailpace.md)\n- [Cloudflare Email Service vs Loops API + MCP](https://www.anchorterminal.com/compare/cloudflare-email-service-vs-loops.md)\n- [Cloudflare Email Service vs MailPace](https://www.anchorterminal.com/compare/cloudflare-email-service-vs-mailpace.md)\n- [Groundmail API + MCP vs Loops API + MCP](https://www.anchorterminal.com/compare/groundmail-vs-loops.md)\n- [Groundmail API + MCP vs MailPace](https://www.anchorterminal.com/compare/groundmail-vs-mailpace.md)\n- [Loops API + MCP vs MailerSend](https://www.anchorterminal.com/compare/loops-vs-mailersend.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 Mailtrap Email API + MCP](https://www.anchorterminal.com/compare/loops-vs-mailtrap.md)\n- [Loops API + MCP vs Mailchimp Transactional (Mandrill)](https://www.anchorterminal.com/compare/loops-vs-mandrill.md)\n- [Loops API + MCP vs Postmark API + MCP](https://www.anchorterminal.com/compare/loops-vs-postmark.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 SendLayer](https://www.anchorterminal.com/compare/loops-vs-sendlayer.md)\n- [Loops API + MCP vs SMTP2GO API + MCP](https://www.anchorterminal.com/compare/loops-vs-smtp2go.md)\n- [Loops API + MCP vs Zoho CPaaS (formerly ZeptoMail)](https://www.anchorterminal.com/compare/loops-vs-zoho-zeptomail.md)\n- [MailerSend vs MailPace](https://www.anchorterminal.com/compare/mailersend-vs-mailpace.md)\n- [Mailgun API + MCP vs MailPace](https://www.anchorterminal.com/compare/mailgun-vs-mailpace.md)\n- [Mailjet API + MCP vs MailPace](https://www.anchorterminal.com/compare/mailjet-vs-mailpace.md)\n- [MailPace vs Mailtrap Email API + MCP](https://www.anchorterminal.com/compare/mailpace-vs-mailtrap.md)\n- [MailPace vs Mailchimp Transactional (Mandrill)](https://www.anchorterminal.com/compare/mailpace-vs-mandrill.md)\n- [MailPace vs Postmark API + MCP](https://www.anchorterminal.com/compare/mailpace-vs-postmark.md)\n- [MailPace vs Resend API + MCP](https://www.anchorterminal.com/compare/mailpace-vs-resend.md)\n- [MailPace vs Twilio SendGrid](https://www.anchorterminal.com/compare/mailpace-vs-sendgrid.md)\n- [MailPace vs SendLayer](https://www.anchorterminal.com/compare/mailpace-vs-sendlayer.md)\n- [MailPace vs SMTP2GO API + MCP](https://www.anchorterminal.com/compare/mailpace-vs-smtp2go.md)\n- [MailPace vs Zoho CPaaS (formerly ZeptoMail)](https://www.anchorterminal.com/compare/mailpace-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": "Loops API + MCP vs MailPace",
        "url": ""
      }
    ],
    "description": "Loops scores 64.5 (B) to MailPace's 58.4 (C) for sending email. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Loops API + MCP B 64.5",
      "MailPace C 58.4",
      "scores"
    ],
    "h1": "Loops API + MCP vs MailPace",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/loops-vs-mailpace",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Loops vs MailPace for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/loops-vs-mailpace"
  },
  "tokens": {
    "markdown": 4400,
    "slim": 2380
  },
  "version": 1
}
