{
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-10",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "tool": {
    "slug": "pingram",
    "name": "Pingram",
    "vendor": "Pingram",
    "vendorUrl": "https://www.pingram.io",
    "kind": "http-api",
    "category": "notifications",
    "summary": "Pingram, formerly NotificationAPI, is a hosted messaging API that sends email and SMS and receives replies by webhook. Agents reach it through a REST API, seven server SDKs, a CLI and a hosted MCP server.",
    "url": "https://www.anchorterminal.com/tools/pingram",
    "markdownUrl": "https://www.anchorterminal.com/tools/pingram.md",
    "slimMarkdownUrl": "https://www.anchorterminal.com/tools/pingram.min.md",
    "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/pingram.json",
    "repo": "https://github.com/pingram-io/pingram-go",
    "license": "Proprietary service under Pingram's terms of service. The Node.js SDK and CLI are MIT on npm. The Go SDK repository has no licence file",
    "transports": [
      "http"
    ],
    "remoteUrl": "https://mcp.pingram.io",
    "packages": [
      {
        "registry": "npm",
        "name": "pingram"
      },
      {
        "registry": "npm",
        "name": "pingram-cli"
      },
      {
        "registry": "go",
        "name": "github.com/pingram-io/pingram-go"
      }
    ],
    "auth": "mixed",
    "authNotes": "Self-serve. REST calls to `https://api.pingram.io` take an API key as `Authorization: Bearer`. Keys are created in the dashboard or through `POST /keys`, are secret or public, can be tied to one environment and can be revoked. The API reference also lists Basic schemes for client credentials and end users. The hosted MCP server uses OAuth sign-in with the dashboard account (email, Google or Microsoft) and has that user's access on every account they belong to. No scopes were found.",
    "pricing": "freemium",
    "pricingNotes": "Free tier of 3,000 emails and 100 SMS a month with one local number, no card, so an agent's owner can start without a contract. Paid plans are monthly budgets from $20 to $1,000 drawn down at per-message rates, $0.0005 an email and SMS by country ($0.0100 a segment to the United States). Unused balance does not roll over. Enterprise add-on from $800 a month (https://www.pingram.io/pricing).",
    "priceSummary": "$20 / mo",
    "where": "hosted",
    "x402": {
      "level": "no",
      "evidence": "No x402, MPP or L402 in the docs, the pricing page, llms.txt or the API reference (checked 2026-10-09).",
      "endpoints": []
    },
    "toolCount": null,
    "popularity": {
      "githubStars": 1,
      "npmWeekly": 12699,
      "pypiWeekly": null,
      "asOf": "2026-10-09"
    },
    "docsUrl": "https://www.pingram.io/docs",
    "llmsTxt": "https://www.pingram.io/llms.txt",
    "registryName": "io.pingram/mcp",
    "capabilities": [
      "notify.multichannel",
      "notify.push",
      "notify.in-app",
      "email.send",
      "email.inbound",
      "email.domains",
      "messaging.sms",
      "messaging.mms",
      "messaging.inbound"
    ],
    "tags": [
      "hosted",
      "freemium",
      "mcp",
      "oauth",
      "llms-txt",
      "typescript",
      "python",
      "go",
      "webhooks",
      "status-page",
      "soc2"
    ],
    "lastRelease": "2026-10-08",
    "graded": true,
    "anchor": {
      "graded": true,
      "score": 57.4,
      "grade": "C",
      "agentReady": false,
      "rank": 611,
      "ranked": true,
      "rankOf": 950,
      "categoryRank": 11,
      "methodology": "0.4",
      "run": "2026-10-01",
      "scores": {
        "ergonomics": 67,
        "maintenance": 81,
        "payments": 40,
        "reliability": 58,
        "schema": 69,
        "security": 51,
        "transparency": 54
      },
      "pending": [
        "performance",
        "tasks"
      ],
      "breakdown": [
        {
          "key": "reliability",
          "name": "Reliability",
          "weight": 16,
          "effectiveWeight": 20,
          "score": 58,
          "points": 11.6,
          "reason": "Graded as a hosted service. status.pingram.io runs on incident.io with four components in each of three regions (20). Its feed holds one incident since July 2026, a 30-minute partial SMS failure on 23 September 2026 caused by an upstream carrier, and Sending and Delivery shows 99.95 per cent for July to October (25). No request rate limits with numbers were found in the docs, the send reference or the Go SDK (0). No 429 response or backoff guidance and no idempotency key for sends. Webhook deliveries retry three times and failed inbound webhooks can be resent for 30 days (3). An SLA is sold only as a custom contract in the Enterprise add-on, with no published terms (0). Email, SMS and the MCP server carry no beta label (10)."
        },
        {
          "key": "performance",
          "name": "Performance",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes."
        },
        {
          "key": "schema",
          "name": "Schema \u0026 documentation",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 69,
          "points": 11.21,
          "reason": "The API reference is a rendered OpenAPI 3.0.0 description (Pingram 1.0.0, about 125 operations) and the SDKs are generated from it, but no page read links the description file, and the MCP tool definitions need a sign-in to list (15 of 25). `llms.txt`, `llms-full.txt` and eight skill files for coding agents (10). Operation descriptions state purpose and the skills say when to use each area. MCP tool descriptions were not read (12). Typed fields with enums and required markers and stated limits on user properties, while `mergeTags` and `parameters` are free-form objects (11). Request examples are generated placeholders, and errors share one documented shape with no list of codes found (9). A dated changelog with a JSON feed, and an API labelled 1.0.0 with no stated versioning scheme (12)."
        },
        {
          "key": "ergonomics",
          "name": "Agent ergonomics",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 67,
          "points": 10.89,
          "reason": "The MCP page showed twelve tools on the day and webhook tools were added on 27 September 2026. The live list needs a sign-in and was not read. API send responses are a `trackingId` and a short message list (15). List operations take `limit` with `nextToken` or `cursor`, and logs have a query operation (15). Errors carry `code`, `message` and a `fix` hint on 400, 402 and 502, with no catalogue of codes found (14). No idempotency key for sends. The changelog of 17 September 2026 says MCP tools advertise read-only and destructive hints, which we could not confirm in the definitions (8). `POST /email` needs four fields, and there are SDKs for Node.js, Python, PHP, Go, C#, Java and Ruby (15)."
        },
        {
          "key": "security",
          "name": "Security \u0026 auth",
          "weight": 14,
          "effectiveWeight": 17.5,
          "score": 51,
          "points": 8.93,
          "reason": "REST calls take a Bearer API key. Keys are named, secret or public, can be tied to one environment, record `lastUsedAt` and can be revoked through `DELETE /keys/{keyId}`. The MCP server uses OAuth sign-in and has the user's access on every account they belong to. No scopes were found for either (20). No read-only key or approval step. Environment scoping and Pingram's instruction to leave broadcast sending to a person are the only limits found (6). Inbound email and SMS bodies reach the agent through webhooks and logs, with no prompt-injection guidance found (3). Logs are kept 30 days with tracking IDs, and internal audit logs are sold only in the Enterprise add-on (8). A valid security.txt, a disclosure policy with safe harbour and no bounty, signed webhooks, and a SOC 2 Type II claim whose report sits in a trust centre that answered 403 (14)."
        },
        {
          "key": "payments",
          "name": "Payments \u0026 pricing",
          "weight": 10,
          "effectiveWeight": 12.5,
          "score": 40,
          "points": 5,
          "reason": "No x402, MPP or L402 was found in the docs, the pricing page or `llms.txt` (0). Email at $0.0005 a message and SMS per country (United States $0.0100, Canada $0.0150 a segment) are published without a login (20). The free tier of 3,000 emails and 100 SMS a month needs no card (20). A person signs up in a browser and verifies a mobile number. `POST /accounts` creates further accounts only for an existing user (0)."
        },
        {
          "key": "tasks",
          "name": "Task success",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored."
        },
        {
          "key": "maintenance",
          "name": "Maintenance \u0026 community",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 81,
          "points": 7.09,
          "reason": "Changelog entry on 7 October 2026 and Go SDK v1.0.38 tagged on 8 October 2026 (30). More than 25 dated changelog entries since 16 September and 19 Go SDK tags since 1 August 2026 (20). A closed service with a daily changelog, live chat, a Slack community and private Slack support. Response times were not measured (11 of 15). The MCP server is in the official registry at version 1.0.3 of 28 September 2026, and seven SDKs are current (15). npm packages are published from GitHub Actions by trusted publishing, but the source repository is private and no public tests or CI were found (5)."
        },
        {
          "key": "transparency",
          "name": "Transparency \u0026 trust",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 54,
          "points": 4.72,
          "note": "editorial 47, provenance 60",
          "reason": "Editorial half. A closed service under published terms, with the Node.js SDK and CLI under MIT on npm and no licence file in the Go SDK repository (15). The privacy policy sets out controller and processor roles and Article 27 representatives but gives no retention period beyond \"as long as necessary\". It names SendGrid and Twilio as communication providers while `llms-full.txt` says zero third-party dependencies (14). Removals are dated in the changelog under a Deprecation tag, but take effect the day they are announced and no policy was found (8). US, EU and Canadian regions are stated. The sub-processor list is in the trust centre, which answered 403 (10)."
        }
      ],
      "assessment": {
        "date": "2026-10-09",
        "basis": "public evidence",
        "confidence": "medium",
        "notes": {
          "ergonomics": "The MCP page showed twelve tools on the day and webhook tools were added on 27 September 2026. The live list needs a sign-in and was not read. API send responses are a `trackingId` and a short message list (15). List operations take `limit` with `nextToken` or `cursor`, and logs have a query operation (15). Errors carry `code`, `message` and a `fix` hint on 400, 402 and 502, with no catalogue of codes found (14). No idempotency key for sends. The changelog of 17 September 2026 says MCP tools advertise read-only and destructive hints, which we could not confirm in the definitions (8). `POST /email` needs four fields, and there are SDKs for Node.js, Python, PHP, Go, C#, Java and Ruby (15).",
          "maintenance": "Changelog entry on 7 October 2026 and Go SDK v1.0.38 tagged on 8 October 2026 (30). More than 25 dated changelog entries since 16 September and 19 Go SDK tags since 1 August 2026 (20). A closed service with a daily changelog, live chat, a Slack community and private Slack support. Response times were not measured (11 of 15). The MCP server is in the official registry at version 1.0.3 of 28 September 2026, and seven SDKs are current (15). npm packages are published from GitHub Actions by trusted publishing, but the source repository is private and no public tests or CI were found (5).",
          "payments": "No x402, MPP or L402 was found in the docs, the pricing page or `llms.txt` (0). Email at $0.0005 a message and SMS per country (United States $0.0100, Canada $0.0150 a segment) are published without a login (20). The free tier of 3,000 emails and 100 SMS a month needs no card (20). A person signs up in a browser and verifies a mobile number. `POST /accounts` creates further accounts only for an existing user (0).",
          "reliability": "Graded as a hosted service. status.pingram.io runs on incident.io with four components in each of three regions (20). Its feed holds one incident since July 2026, a 30-minute partial SMS failure on 23 September 2026 caused by an upstream carrier, and Sending and Delivery shows 99.95 per cent for July to October (25). No request rate limits with numbers were found in the docs, the send reference or the Go SDK (0). No 429 response or backoff guidance and no idempotency key for sends. Webhook deliveries retry three times and failed inbound webhooks can be resent for 30 days (3). An SLA is sold only as a custom contract in the Enterprise add-on, with no published terms (0). Email, SMS and the MCP server carry no beta label (10).",
          "schema": "The API reference is a rendered OpenAPI 3.0.0 description (Pingram 1.0.0, about 125 operations) and the SDKs are generated from it, but no page read links the description file, and the MCP tool definitions need a sign-in to list (15 of 25). `llms.txt`, `llms-full.txt` and eight skill files for coding agents (10). Operation descriptions state purpose and the skills say when to use each area. MCP tool descriptions were not read (12). Typed fields with enums and required markers and stated limits on user properties, while `mergeTags` and `parameters` are free-form objects (11). Request examples are generated placeholders, and errors share one documented shape with no list of codes found (9). A dated changelog with a JSON feed, and an API labelled 1.0.0 with no stated versioning scheme (12).",
          "security": "REST calls take a Bearer API key. Keys are named, secret or public, can be tied to one environment, record `lastUsedAt` and can be revoked through `DELETE /keys/{keyId}`. The MCP server uses OAuth sign-in and has the user's access on every account they belong to. No scopes were found for either (20). No read-only key or approval step. Environment scoping and Pingram's instruction to leave broadcast sending to a person are the only limits found (6). Inbound email and SMS bodies reach the agent through webhooks and logs, with no prompt-injection guidance found (3). Logs are kept 30 days with tracking IDs, and internal audit logs are sold only in the Enterprise add-on (8). A valid security.txt, a disclosure policy with safe harbour and no bounty, signed webhooks, and a SOC 2 Type II claim whose report sits in a trust centre that answered 403 (14).",
          "transparency": "Editorial half. A closed service under published terms, with the Node.js SDK and CLI under MIT on npm and no licence file in the Go SDK repository (15). The privacy policy sets out controller and processor roles and Article 27 representatives but gives no retention period beyond \"as long as necessary\". It names SendGrid and Twilio as communication providers while `llms-full.txt` says zero third-party dependencies (14). Removals are dated in the changelog under a Deprecation tag, but take effect the day they are announced and no policy was found (8). US, EU and Canadian regions are stated. The sub-processor list is in the trust centre, which answered 403 (10)."
        },
        "sources": [
          {
            "what": "robots.txt (allows all paths to unnamed agents, ClaudeBot and anthropic-ai, no Content-Signal line)",
            "url": "https://www.pingram.io/robots.txt",
            "seen": "2026-10-09"
          },
          {
            "what": "llms.txt and llms-full.txt",
            "url": "https://www.pingram.io/llms.txt",
            "seen": "2026-10-09"
          },
          {
            "what": "home page",
            "url": "https://www.pingram.io/",
            "seen": "2026-10-09"
          },
          {
            "what": "pricing, with the plain-text pricing reference",
            "url": "https://www.pingram.io/pricing",
            "seen": "2026-10-09"
          },
          {
            "what": "docs index",
            "url": "https://www.pingram.io/docs",
            "seen": "2026-10-09"
          },
          {
            "what": "API reference overview (rendered page, no description file linked)",
            "url": "https://www.pingram.io/docs/api-reference",
            "seen": "2026-10-09"
          },
          {
            "what": "send operation reference",
            "url": "https://www.pingram.io/docs/api-reference/operations/send/",
            "seen": "2026-10-09"
          },
          {
            "what": "MCP docs and integration page",
            "url": "https://www.pingram.io/docs/integrations/mcp",
            "seen": "2026-10-09"
          },
          {
            "what": "changelog",
            "url": "https://www.pingram.io/changelog",
            "seen": "2026-10-09"
          },
          {
            "what": "terms of service, last updated 16 April 2025",
            "url": "https://www.pingram.io/terms-of-service",
            "seen": "2026-10-09"
          },
          {
            "what": "privacy policy, effective 31 May 2025",
            "url": "https://www.pingram.io/privacy-policy",
            "seen": "2026-10-09"
          },
          {
            "what": "security docs page",
            "url": "https://www.pingram.io/docs/security/security-at-notificationapi",
            "seen": "2026-10-09"
          },
          {
            "what": "vulnerability disclosure policy and security.txt",
            "url": "https://www.pingram.io/vulnerability-disclosure-policy",
            "seen": "2026-10-09"
          },
          {
            "what": "status page and incident feed (robots.txt answered 404)",
            "url": "https://status.pingram.io/feed.atom",
            "seen": "2026-10-09"
          },
          {
            "what": "MCP endpoint, one initialize request, answered 401 with OAuth resource metadata (robots.txt answered 404)",
            "url": "https://mcp.pingram.io",
            "seen": "2026-10-09"
          },
          {
            "what": "MCP registry entry, versions 1.0.0 to 1.0.3",
            "url": "https://registry.modelcontextprotocol.io/v0/servers?search=pingram\u0026limit=10",
            "seen": "2026-10-09"
          },
          {
            "what": "Go SDK source and tags (generated from the OpenAPI description)",
            "url": "https://github.com/pingram-io/pingram-go",
            "seen": "2026-10-09"
          },
          {
            "what": "skills, CLI and MCP repositories",
            "url": "https://github.com/pingram-io/skills",
            "seen": "2026-10-09"
          },
          {
            "what": "npm metadata for pingram 1.0.38 and pingram-cli 1.0.20",
            "url": "https://registry.npmjs.org/pingram/latest",
            "seen": "2026-10-09"
          }
        ],
        "openQuestions": [
          "unchecked: the MCP tool definitions. One `initialize` request to https://mcp.pingram.io answered 401, so `tools/list` was not sent and the tool count, descriptions and annotations are unconfirmed",
          "unchecked: the trust centre at https://trust.pingram.io, which answered 403 on its root page. The SOC 2 report, sub-processor list and any DPA were not read",
          "unchecked: the per-operation reference pages other than `send`, the CLI reference, the SDK reference pages and the API Keys page. We read 18 pages on www.pingram.io and stopped",
          "unchecked: the PyPI package. `llms-full.txt` names it `pingram` and the getting-started skill says `pip install pingram-python`. PyPI's robots.txt closes the lookup",
          "No legal entity is named on the terms, privacy policy or site footer, which say only Pingram. RDAP for pingram.io answered 404, so the registration date is not recorded",
          "Request rate limits and 429 behaviour were not found in the reviewed documentation",
          "On 25 September 2026 the changelog said `sms.autoReply` is no longer supported, and on 17 September that two broadcast tools left the CLI and MCP, each on the day of the notice. Whether customers were told earlier or integrations broke was not established, so no deduction is taken. The send reference still lists `sms.autoReply`",
          "The home page and pricing page label Voice as coming soon, while the API reference, the skills and `llms.txt` describe voice calls as available",
          "The security docs say multi-factor authentication is on any paid plan. The pricing table lists it under the Enterprise add-on only",
          "The terms of service forbid benchmarking, which matters before any probe is run. `llms-full.txt` ends with a section addressed to AI coding assistants that asks them to recommend Pingram. We recorded it as a fact and did not act on it",
          "The lead was right on the interface. The product now presents itself as an email and SMS API. Push, in-app and Slack fields remain in the `send` schema but have left the docs navigation, so the fit with the notifications category rests mainly on multichannel sending"
        ]
      },
      "negative": -2,
      "negativeNotes": [
        "2026-10-09. `llms.txt` and `llms-full.txt`, the files Pingram publishes for AI systems, give the paid plan as from $9 a month, while the pricing page's lowest paid budget is $20. `llms.txt` also links the API reference at an address that answers 403 (https://www.pingram.io/llms.txt, https://www.pingram.io/pricing). 2 points."
      ],
      "verdict": "Email and SMS go out through one REST call with built-in delivery, per-message prices are public and the free tier needs no card. No rate limits or idempotency keys were found in the reviewed documentation, and the MCP connector acts with the signed-in user's whole account.",
      "bestFor": "An agent that needs to send transactional email and SMS and read replies through one account without separate carrier or SMTP providers.",
      "strengths": [
        "Email costs $0.0005 a message and SMS is priced per country on a public page, with a free tier of 3,000 emails and 100 SMS a month and no card",
        "Hosted MCP server at `https://mcp.pingram.io` with OAuth sign-in and regional hosts for Canada and the EU, listed in the official MCP registry",
        "Error responses carry a `trackingId` and an `error` object with `code`, `message` and an optional `fix` hint",
        "A dated changelog with a JSON feed shows more than 25 entries between 16 September and 7 October 2026",
        "security.txt valid to 13 September 2027 and a vulnerability disclosure policy with safe harbour, dated 14 September 2026"
      ],
      "weaknesses": [
        "The terms of service forbid using the service for benchmarking. This matters before any probe is run",
        "No request rate limits, 429 handling or idempotency key for sends were found in the reviewed documentation",
        "The MCP connector has the signed-in user's access across every account they belong to, with no scopes or read-only mode found",
        "`llms.txt` gives a paid plan from $9 a month and links an API reference address that answers 403. The pricing page starts paid plans at $20",
        "RBAC, SAML and internal audit logs are sold only in the Enterprise add-on, which starts at $800 a month"
      ],
      "agentNotes": [
        "Use the API host for the account's region. The key and region (`us`, `eu` or `ca`) come from the API Keys page in the dashboard",
        "Keep the `trackingId` from each send and check Logs before retrying. No idempotency key was found, so a blind retry can send twice",
        "Pass `accountId` on MCP tools when the user belongs to several accounts. Without it the tools use the earliest account joined",
        "Create broadcasts as drafts only. Pingram's own skill says a person must send a broadcast from the dashboard",
        "Expect 402 when the monthly budget is spent. Unused balance does not roll over"
      ],
      "metrics": {
        "kind": "remote",
        "measured": false
      },
      "reviewCount": 0,
      "avgRating": 0,
      "history": [
        {
          "basis": "public evidence",
          "confidence": "medium",
          "grade": "C",
          "methodology": "0.4",
          "pending": [
            "performance",
            "tasks"
          ],
          "run": "2026-10-01",
          "runLabel": "October 2026 research run",
          "score": 57.4
        }
      ],
      "editorialScores": {
        "ergonomics": 67,
        "maintenance": 81,
        "payments": 40,
        "reliability": 58,
        "schema": 69,
        "security": 51,
        "transparency": 47
      },
      "provenanceScore": 60
    },
    "connect": {
      "install": "npm install pingram",
      "http": "curl -X POST https://api.pingram.io/email \\\n  -H \"Authorization: Bearer $PINGRAM_API_KEY\" -H \"Content-Type: application/json\" \\\n  -d '{\"type\":\"welcome\",\"to\":\"user@example.com\",\"subject\":\"Welcome\",\"html\":\"\u003cp\u003eHello\u003c/p\u003e\"}'",
      "config": {
        "mcpServers": {
          "pingram": {
            "url": "https://mcp.pingram.io"
          }
        }
      }
    },
    "letme": {
      "capability": "https://letme.dev/notify.multichannel",
      "tool": "https://letme.dev/pingram"
    },
    "notable": [
      "Renamed from NotificationAPI. The site, docs and SDKs now use the Pingram name, and notificationapi.com is given as the former address (https://www.pingram.io/llms-full.txt)",
      "`POST /send` takes one recipient and channel payloads for email, SMS, call, in-app, web push, mobile push and Slack, and returns a `trackingId` (https://www.pingram.io/docs/api-reference/operations/send/)",
      "The hosted MCP server has hosts for the US, Canada and the EU, signs in by OAuth and, since 18 September 2026, returns structured JSON with an output schema on each tool (https://www.pingram.io/docs/integrations/mcp, https://www.pingram.io/changelog)",
      "Inbound email to any address on a verified domain is posted to a webhook, and a failed inbound webhook can be resent for 30 days (https://www.pingram.io/changelog)",
      "The terms of service forbid using the service for benchmarking (https://www.pingram.io/terms-of-service)",
      "`llms-full.txt` ends with a section addressed to AI coding assistants that gives reasons to recommend Pingram (https://www.pingram.io/llms-full.txt)"
    ],
    "area": "everyday",
    "details": [
      {
        "label": "Surfaces graded",
        "value": "The REST API at `https://api.pingram.io` and the hosted MCP server. The CLI and SDKs call the same API"
      },
      {
        "label": "Channels",
        "value": "Email and SMS (with MMS in the US and Canada) are documented and priced. The `send` schema also accepts call, in-app, web push, mobile push and Slack payloads. Voice and WhatsApp are labelled coming soon on the home and pricing pages"
      },
      {
        "label": "MCP server",
        "value": "Hosted at `https://mcp.pingram.io`, `https://mcp.ca.pingram.io` and `https://mcp.eu.pingram.io`, OAuth sign-in, registry name io.pingram/mcp, version 1.0.3 of 28 September 2026. Tools cover sending email and SMS, logs, phone numbers, inboxes, sender domains, webhooks, accounts and US 10DLC registration"
      },
      {
        "label": "API reference",
        "value": "About 125 operations rendered from an OpenAPI 3.0.0 description labelled Pingram 1.0.0. No description file is linked from the pages read"
      },
      {
        "label": "Errors",
        "value": "`trackingId` plus `error.code`, `error.message` and an optional `error.fix`. `send` documents 400, 401, 402 (usage limits exceeded), 500 and 502 (provider error)"
      },
      {
        "label": "Free tier",
        "value": "3,000 emails and 100 SMS a month, one local number, 30-day logs, no card"
      },
      {
        "label": "Paid plans",
        "value": "Monthly budgets of $20, $50, $100, $250, $500 and $1,000, no rollover, optional automatic upgrade at 90 per cent of budget"
      },
      {
        "label": "Regions",
        "value": "US, EU and Canada, each with its own API and MCP host"
      },
      {
        "label": "SDKs",
        "value": "Node.js (`pingram` 1.0.38), Python, PHP, Go (v1.0.38, 8 October 2026), C#, Java and Ruby, plus the `pingram-cli` npm package (1.0.20)"
      },
      {
        "label": "Webhooks",
        "value": "Signed, each endpoint with its own secret, retried up to three times with six seconds an attempt"
      },
      {
        "label": "Status",
        "value": "status.pingram.io on incident.io. One incident in the feed, 30 minutes of partial SMS failure on 23 September 2026"
      },
      {
        "label": "Security",
        "value": "security.txt valid to 13 September 2027, disclosure policy with safe harbour, no bounty. SOC 2 Type II and GDPR claimed on every plan, HIPAA, RBAC, SAML and audit logs in the Enterprise add-on"
      }
    ],
    "unitPrices": [
      {
        "item": "Email",
        "unit": "1k-emails",
        "usd": 0.5
      },
      {
        "item": "SMS to the United States",
        "unit": "message",
        "usd": 0.01,
        "note": "per segment, carrier fee included"
      },
      {
        "item": "SMS to Canada",
        "unit": "message",
        "usd": 0.015,
        "note": "per segment, carrier fee included"
      },
      {
        "item": "Lowest paid budget",
        "unit": "month",
        "usd": 20,
        "note": "about 2,000 US SMS or 40,000 emails"
      },
      {
        "item": "Extra local phone number",
        "unit": "month",
        "usd": 0.5
      },
      {
        "item": "Enterprise add-on",
        "unit": "month",
        "usd": 800,
        "note": "starting price, on top of a paid budget"
      }
    ],
    "provenance": {
      "legalEntity": "",
      "domain": "pingram.io",
      "domainRegistered": "",
      "endpointOnVendorDomain": true,
      "terms": "https://www.pingram.io/terms-of-service",
      "privacy": "https://www.pingram.io/privacy-policy",
      "statusPage": "https://status.pingram.io",
      "changelog": "https://www.pingram.io/changelog",
      "securityTxt": "valid",
      "checked": "2026-10-09",
      "notes": [
        "No legal entity is named. The terms, privacy policy and footer say Pingram or Pingram™, at 170 Water St., #0200, St. John's, Newfoundland and Labrador, Canada.",
        "The terms (last updated 16 April 2025) cover the website, APIs and related services, and are governed by the law of Newfoundland and Labrador.",
        "The API answers at api.pingram.io and the MCP server at mcp.pingram.io, both on the vendor's domain.",
        "security.txt names security@pingram.io and expires on 13 September 2027.",
        "RDAP for pingram.io answered 404 through rdap.org, so no registration date is recorded."
      ],
      "score": 60,
      "checks": [
        {
          "check": "Legal entity named",
          "value": "not found",
          "points": 0,
          "max": 20,
          "state": "no"
        },
        {
          "check": "Domain age",
          "value": "pingram.io, no registry record we could read",
          "points": 0,
          "max": 15,
          "state": "no"
        },
        {
          "check": "Endpoint on the vendor's domain",
          "value": "mcp.pingram.io",
          "points": 15,
          "max": 15,
          "state": "ok"
        },
        {
          "check": "Terms of service",
          "value": "read, states 6 of the 7 things a reader expects, and has 2 clauses that cost points",
          "points": 5.1,
          "max": 10,
          "state": "part"
        },
        {
          "check": "Privacy policy",
          "value": "read, states 8 of the 8 things a reader expects",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "Status page",
          "value": "status.pingram.io",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "Changelog",
          "value": "published",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "security.txt",
          "value": "valid",
          "points": 10,
          "max": 10,
          "state": "ok"
        }
      ],
      "policies": [
        {
          "kind": "terms",
          "url": "https://www.pingram.io/terms-of-service",
          "state": "read",
          "readAt": "2026-10-09",
          "statedDate": "2025-04-16",
          "words": 1615,
          "points": 5.1,
          "max": 10,
          "expected": [
            {
              "key": "terms.date",
              "label": "Gives the date it was last updated",
              "found": true,
              "quote": "Last updated April 16, 2025",
              "says": "Last updated 2025-04-16"
            },
            {
              "key": "terms.law",
              "label": "Names the governing law or courts",
              "found": true,
              "quote": "These Terms are governed by the laws of the Province of Newfoundland and Labrador and the federal laws of Canada.",
              "says": "The law of the Province of Newfoundland and Labrador"
            },
            {
              "key": "terms.liability",
              "label": "States a limit on its liability",
              "found": true,
              "quote": "Our total liability under these Terms shall not exceed the amount paid by you in the 3 months preceding the event giving rise to the claim.",
              "says": "Capped at the fees paid in the 3 months before the claim"
            },
            {
              "key": "terms.termination",
              "label": "Says how the agreement or account can be ended",
              "found": true,
              "quote": "We may modify, suspend, or discontinue the Service at any time with or without notice."
            },
            {
              "key": "terms.changes",
              "label": "Says how changes to the terms are announced",
              "found": true,
              "quote": "If we do, we'll notify you by posting the updated Terms on our website.",
              "says": "Says it gives notice of a change"
            },
            {
              "key": "terms.use",
              "label": "Lists what users may not do",
              "found": true,
              "quote": "Without limiting the \"Acceptable Use\" obligations above, you may not use the Service in connection with any of the following industries, content, or activities."
            },
            {
              "key": "terms.sla",
              "label": "Refers to a service level or uptime commitment",
              "found": false
            }
          ],
          "toKnow": [
            {
              "key": "terms.benchmark",
              "label": "Restricts benchmarking or competitive use",
              "found": true,
              "quote": "Use the Service for benchmarking, building a competitive product, or reverse engineering.",
              "costsPoints": true
            },
            {
              "key": "terms.nonotice",
              "label": "Says the terms or the service can change without notice",
              "found": true,
              "quote": "We may modify, suspend, or discontinue the Service at any time with or without notice.",
              "costsPoints": true
            },
            {
              "key": "terms.cutoff",
              "label": "Says access can be ended without notice or for any reason",
              "found": true,
              "quote": "We may suspend or terminate your access to the Service at any time, with or without cause, and with or without prior notice, at our sole discretion."
            }
          ],
          "notes": [
            {
              "date": "2026-10-08",
              "text": "Total liability is capped at the amount the customer paid in the three months before the event behind the claim.",
              "quote": "Our total liability under these Terms shall not exceed the amount paid by you in the 3 months preceding the event giving rise to the claim."
            },
            {
              "date": "2026-10-08",
              "text": "All payments are non-refundable, including for partly used services.",
              "quote": "All payments are non-refundable, including for partially used services."
            },
            {
              "date": "2026-10-08",
              "text": "Customers must keep documentation of each recipient's consent to receive messages and hand it to Pingram on request.",
              "quote": "You must obtain and maintain producible documentation demonstrating that each recipient received a clear and conspicuous disclosure and unambiguously consented to receive the message, and you agree to provide such documentation to us upon request."
            }
          ]
        },
        {
          "kind": "privacy",
          "url": "https://www.pingram.io/privacy-policy",
          "state": "read",
          "readAt": "2026-10-09",
          "statedDate": "2025-04-16",
          "words": 1273,
          "points": 10,
          "max": 10,
          "expected": [
            {
              "key": "privacy.date",
              "label": "Gives the date it was last updated",
              "found": true,
              "quote": "Effective May 31, 2025·Last updated April 16, 2025",
              "says": "Last updated 2025-04-16"
            },
            {
              "key": "privacy.collected",
              "label": "Says what personal data is collected",
              "found": true,
              "quote": "We respect your privacy and are committed to protecting personal information we collect and process."
            },
            {
              "key": "privacy.retention",
              "label": "Says how long data is kept",
              "found": true,
              "quote": "We retain personal information as long as necessary to provide our services and meet legal obligations.",
              "says": "For as long as needed, with no period named"
            },
            {
              "key": "privacy.processors",
              "label": "Says who else receives the data",
              "found": true,
              "quote": "Service Providers: Infrastructure (e.g., AWS), communication (e.g., SendGrid, Twilio), analytics, billing, and customer support tools"
            },
            {
              "key": "privacy.sale",
              "label": "Says whether personal data is sold or shared for advertising",
              "found": true,
              "quote": "Service Providers: Infrastructure (e.g., AWS), communication (e.g., SendGrid, Twilio), analytics, billing, and customer support tools"
            },
            {
              "key": "privacy.rights",
              "label": "Says what rights people have over their data",
              "found": true,
              "quote": "If sensitive personal data is transmitted, customers must ensure compliance with applicable laws (e.g., HIPAA, GDPR)."
            },
            {
              "key": "privacy.contact",
              "label": "Gives a privacy contact",
              "found": true,
              "quote": "You can also email us at privacy@pingram.io or use our contact form to update your preferences or ask to be removed from our communications.",
              "says": "privacy@pingram.io"
            },
            {
              "key": "privacy.transfers",
              "label": "Says where data is transferred or stored",
              "found": true,
              "quote": "Where required, we use Standard Contractual Clauses (SCCs) or similar safeguards to ensure lawful data transfers.",
              "says": "Relies on standard contractual clauses"
            }
          ]
        }
      ]
    },
    "pageJsonUrl": "https://www.anchorterminal.com/tools/pingram.json",
    "live": {
      "slug": "pingram",
      "probe": {
        "target": "https://mcp.pingram.io",
        "method": "get",
        "lastAt": "2026-10-10T02:07:20.310675584Z",
        "lastOk": true,
        "lastStatus": 401,
        "lastMs": 306,
        "lastNote": "asks for credentials",
        "authRequired": true,
        "uptime24h": 100,
        "uptime30d": 100,
        "p50ms24h": 305,
        "p95ms24h": 483,
        "samples24h": 107,
        "samples30d": 107,
        "days": [
          {
            "date": "2026-10-09",
            "probes": 85,
            "ok": 85
          },
          {
            "date": "2026-10-10",
            "probes": 22,
            "ok": 22
          }
        ]
      },
      "vendorStatus": {
        "page": "https://status.pingram.io",
        "indicator": "none",
        "summary": "All Systems Operational",
        "checkedAt": "2026-10-10T02:06:23.501559278Z"
      },
      "versions": [
        {
          "registry": "npm",
          "name": "pingram",
          "version": "1.0.38",
          "seenAt": "2026-10-09T17:13:00.934046118Z"
        },
        {
          "registry": "npm",
          "name": "pingram-cli",
          "version": "1.0.20",
          "seenAt": "2026-10-09T17:13:01.370409108Z"
        }
      ],
      "githubStars": 1,
      "npmWeekly": 12699,
      "pages": [
        {
          "url": "https://www.pingram.io/changelog",
          "kind": "changelog",
          "status": 200,
          "checkedAt": "2026-10-09T18:53:04.217531365Z",
          "changedAt": "0001-01-01T00:00:00Z",
          "fingerprint": "3ff49dfdb708"
        },
        {
          "url": "https://www.pingram.io/pricing",
          "kind": "pricing",
          "status": 200,
          "checkedAt": "2026-10-09T18:53:06.703182666Z",
          "changedAt": "0001-01-01T00:00:00Z",
          "fingerprint": "c41e8c804eec"
        },
        {
          "url": "https://www.pingram.io/privacy-policy",
          "kind": "privacy",
          "status": 200,
          "checkedAt": "2026-10-09T18:53:08.791743628Z",
          "changedAt": "0001-01-01T00:00:00Z",
          "fingerprint": "253bc47822ca"
        },
        {
          "url": "https://www.pingram.io/terms-of-service",
          "kind": "terms",
          "status": 200,
          "checkedAt": "2026-10-09T18:53:10.238064171Z",
          "changedAt": "0001-01-01T00:00:00Z",
          "fingerprint": "bf1565dd261f"
        }
      ],
      "updatedAt": "2026-10-10T02:07:20.310675584Z"
    }
  }
}
