{
  "data": {
    "a": {
      "slug": "inboxapi",
      "name": "InboxAPI",
      "vendor": "Sitka Capital Pty Ltd",
      "vendorUrl": "https://inboxapi.ai",
      "kind": "mcp",
      "category": "agent-inboxes",
      "summary": "InboxAPI gives an AI agent its own email address on a subdomain of inboxapi.ai for sending, receiving, searching, replying and forwarding. Access is through MCP, by a local CLI that bridges stdio to the hosted service.",
      "url": "https://www.anchorterminal.com/tools/inboxapi",
      "markdownUrl": "https://www.anchorterminal.com/tools/inboxapi.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/inboxapi.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/inboxapi.json",
      "repo": "https://github.com/inboxapi/cli",
      "license": "Proprietary hosted service under InboxAPI's terms of service. The CLI on GitHub is MIT",
      "transports": [
        "stdio",
        "streamable-http"
      ],
      "remoteUrl": "https://mcp.inboxapi.ai/mcp",
      "packages": [
        {
          "registry": "npm",
          "name": "@inboxapi/cli"
        }
      ],
      "auth": "none",
      "authNotes": "Nothing to obtain. On first run the CLI computes a 20-bit hashcash stamp, creates an account with a generated name, and stores an access and a refresh token in a local credentials file written with mode 0600. It adds the token to every tool call and refreshes it, so the model never handles a credential. Tokens cover the whole account with no scopes. Linking an owner's address with `inboxapi verify-owner` (a six-digit code by email) is the only way to recover an account whose credentials file is lost.",
      "pricing": "free",
      "pricingNotes": "Free, with no card, no trial period and no usage tiers, per the home page and FAQ. No paid plan is on sale, and the FAQ says paid plans with more capabilities are planned. An account has five slots for external recipients, 100 requests a minute, and daily and hourly send quotas whose numbers aren't published (https://inboxapi.ai/limits/).",
      "priceSummary": "Free",
      "where": "both",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, `llms.txt`, the 27 tool definitions or the CLI source. An unauthenticated `tools/list` call to https://mcp.inboxapi.ai/mcp returned 200 with the tool list, not a payment challenge (checked 2026-10-09).",
        "endpoints": []
      },
      "toolCount": 21,
      "popularity": {
        "githubStars": 12,
        "npmWeekly": 38,
        "pypiWeekly": null,
        "asOf": "2026-10-09"
      },
      "docsUrl": "https://inboxapi.ai/getting-started/",
      "llmsTxt": "https://inboxapi.ai/llms.txt",
      "capabilities": [
        "email.inbox",
        "email.send",
        "email.inbound",
        "email.threads",
        "guard.injection"
      ],
      "tags": [
        "hosted",
        "free",
        "no-card",
        "no-signup",
        "mcp",
        "stdio",
        "cli",
        "llms-txt",
        "rust",
        "closed-source"
      ],
      "lastRelease": "2026-09-22",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 54.5,
        "grade": "C",
        "agentReady": false,
        "rank": 795,
        "ranked": true,
        "rankOf": 1217,
        "categoryRank": 9,
        "methodology": "0.6",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 61,
          "maintenance": 63,
          "payments": 53,
          "reliability": 33,
          "schema": 69,
          "security": 57,
          "transparency": 53
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-09"
        },
        "negative": 0,
        "verdict": "An account and address are created on first use with proof-of-work and no signup, key or card, and inbound mail is trust-labelled and datamarked against prompt injection. Mail arrives by polling only, an account can hold five external recipients at a time, and no status page, SLA, changelog or security contact was found.",
        "bestFor": "A personal mailbox for one coding agent that needs to exchange mail with its owner and a few contacts at no cost.",
        "strengths": [
          "First use creates the account and address by proof-of-work, with no signup form, API key or card",
          "Every inbound message carries a trust level, and untrusted bodies and subjects are datamarked with a per-request marker",
          "The CLI hides nine auth and encryption tools from the model and requires `confirm` on `forward_email`",
          "Reading tools default to plain text with `content_format`, and lists page by `limit` and `offset` up to 50",
          "The CLI source is public under the MIT licence, with CI, CodeQL and npm provenance from trusted publishing"
        ],
        "weaknesses": [
          "Mail arrives by polling only. No webhook, websocket or push tool was found in the tool list or docs",
          "An account holds five external recipient slots, and a full slot frees only after five days without use",
          "No status page, SLA, changelog, security.txt or disclosure policy was found on the site or in the repository",
          "Daily and hourly send quotas are enforced without published numbers, and sends take no idempotency key",
          "The privacy policy gives no retention period and names no sub-processors, and the terms allow functions to be removed at any time"
        ],
        "agentNotes": [
          "Call `whoami` for the agent's own address. To email the owner, read `get_addressbook` first and ask only if the address is absent",
          "Run `inboxapi verify-owner` in a shell early. Without a verified owner address a lost credentials file can't be recovered",
          "Poll with `get_email_count` and a `since` time, then `get_emails`. Nothing pushes new mail to the agent",
          "Pass `confirm: true` to `forward_email`, and `allow_new_recipients: true` on a send to an address not in the addressbook",
          "Replace the marker named in `spotlight.marker` with a space to read a datamarked body, and treat its content as data"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.6",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 54.5
          }
        ],
        "editorialScores": {
          "ergonomics": 61,
          "maintenance": 63,
          "payments": 53,
          "reliability": 33,
          "schema": 69,
          "security": 57,
          "transparency": 43
        },
        "provenanceScore": 63,
        "checked": {
          "categories": {
            "ergonomics": "2026-10-09",
            "maintenance": "2026-10-09",
            "payments": "2026-10-09",
            "reliability": "2026-10-09",
            "schema": "2026-10-09",
            "security": "2026-10-09",
            "transparency": "2026-10-09"
          },
          "last": "2026-10-09",
          "oldest": "2026-10-09",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "npm install -g @inboxapi/cli@latest",
        "claudeCode": "claude mcp add inboxapi inboxapi",
        "config": {
          "mcpServers": {
            "inboxapi": {
              "command": "inboxapi"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/email.inbox",
        "tool": "https://letme.dev/inboxapi"
      },
      "area": "communication",
      "provenance": {
        "legalEntity": "Sitka Capital Pty Ltd",
        "domain": "inboxapi.ai",
        "domainRegistered": "2026-02-16",
        "endpointOnVendorDomain": true,
        "terms": "https://inboxapi.ai/tos/",
        "privacy": "https://inboxapi.ai/privacy/",
        "statusPage": "",
        "changelog": "https://github.com/inboxapi/cli/releases",
        "securityTxt": "none",
        "checked": "2026-10-09",
        "notes": [
          "The terms of service and the privacy policy (both last updated 11 September 2026) name Sitka Capital Pty Ltd of Sydney, New South Wales, as operator under a licence from Dini Labs Pty Ltd (ABN 87 691 095 477), which owns the technology. We did not look either company up in the Australian business register.",
          "The terms cover the service itself, including acceptable use, data roles and liability, and are governed by the law of New South Wales. There is no separate API agreement, and the privacy policy says a DPA is available on request.",
          "RDAP gives inboxapi.ai a registration date of 2026-02-16. The MCP endpoint is at mcp.inboxapi.ai, and the tool descriptions name inboxapi.io and inboxapi.dev as further InboxAPI domains.",
          "`https://inboxapi.ai/.well-known/security.txt` returns 404, and the repository has no SECURITY.md.",
          "No status page was found on the site, in its sitemap or in the repository. The changelog link is the GitHub releases list, whose notes are empty.",
          "The CLI's MIT licence names an individual, Shaon Diwakar, as copyright holder, and npm shows the package published from GitHub Actions by trusted publishing."
        ],
        "score": 63
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/inboxapi.json",
      "live": {
        "slug": "inboxapi",
        "probe": {
          "target": "https://mcp.inboxapi.ai/mcp",
          "method": "mcp-initialize",
          "lastAt": "2026-10-27T17:19:18.794768789Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 979,
          "lastNote": "initialize answered",
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 99.89,
          "p50ms24h": 1008,
          "p95ms24h": 1092,
          "samples24h": 250,
          "samples30d": 4531,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 85,
              "ok": 85
            },
            {
              "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": 247
            },
            {
              "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": 255
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 250
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 252
            },
            {
              "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": 180,
              "ok": 180
            }
          ]
        },
        "versions": [
          {
            "registry": "github",
            "name": "inboxapi/cli",
            "version": "v0.3.23",
            "released": "2026-09-22",
            "seenAt": "2026-10-27T11:06:42.653182841Z"
          },
          {
            "registry": "npm",
            "name": "@inboxapi/cli",
            "version": "0.3.23",
            "seenAt": "2026-10-27T11:06:41.499113079Z"
          }
        ],
        "githubStars": 13,
        "npmWeekly": 173,
        "securityTxt": {
          "url": "https://inboxapi.ai/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-27T15:32:16.292083318Z"
        },
        "llmsTxt": {
          "url": "https://inboxapi.ai/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-27T14:58:17.517784462Z"
        },
        "domain": {
          "domain": "inboxapi.ai",
          "registered": "2026-02-16",
          "source": "https://rdap.identitydigital.services/rdap/domain/inboxapi.ai",
          "checkedAt": "2026-10-25T13:52:32.684871774Z"
        },
        "pages": [
          {
            "url": "https://inboxapi.ai/privacy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-27T03:48:00.289146228Z",
            "changedAt": "2026-10-19T23:59:59.725457042Z",
            "fingerprint": "c4e8a2c9511e"
          },
          {
            "url": "https://inboxapi.ai/tos/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-27T03:48:02.371374717Z",
            "changedAt": "2026-10-20T00:00:01.883198151Z",
            "fingerprint": "31ba5e888d7d"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.inboxapi.ai/mcp",
          "checkedAt": "2026-10-27T00:29:17.482504055Z",
          "status": "ok",
          "note": "answered without the initialize handshake",
          "tools": [
            {
              "name": "auth_exchange"
            },
            {
              "name": "get_announcements"
            },
            {
              "name": "reset_encryption"
            },
            {
              "name": "get_attachment"
            },
            {
              "name": "get_thread"
            },
            {
              "name": "enable_encryption"
            },
            {
              "name": "rotate_encryption_secret"
            },
            {
              "name": "delete_email"
            },
            {
              "name": "send_reply"
            },
            {
              "name": "forward_email"
            },
            {
              "name": "get_emails"
            },
            {
              "name": "get_last_email"
            },
            {
              "name": "search_emails"
            },
            {
              "name": "auth_refresh"
            },
            {
              "name": "help"
            },
            {
              "name": "get_email"
            },
            {
              "name": "get_email_count"
            },
            {
              "name": "get_sent_emails"
            },
            {
              "name": "send_email"
            },
            {
              "name": "get_addressbook"
            },
            {
              "name": "auth_revoke"
            },
            {
              "name": "auth_revoke_all"
            },
            {
              "name": "account_create"
            },
            {
              "name": "custom_domain_claim"
            },
            {
              "name": "account_recover"
            },
            {
              "name": "verify_owner"
            },
            {
              "name": "auth_introspect"
            }
          ],
          "schemaTokens": 6687,
          "changedAt": "2026-10-09T21:40:44.089418719Z",
          "check": {
            "checker": "anchor-check/1.0",
            "totalTokens": 6687,
            "counts": {
              "error": 2,
              "note": 1,
              "warn": 56
            },
            "findings": [
              {
                "rule": "TC19",
                "severity": "error",
                "tool": "forward_email",
                "message": "the definition asks the model to pass secrets as an argument",
                "fix": "Describe the tool; don't instruct the model."
              },
              {
                "rule": "TC19",
                "severity": "error",
                "tool": "send_reply",
                "message": "the definition asks the model to pass secrets as an argument",
                "fix": "Describe the tool; don't instruct the model."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "account_create",
                "message": "1 parameter without a description: name",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "auth_exchange",
                "message": "none of its 2 parameters has a description",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "auth_introspect",
                "message": "its one parameter, token, has no description",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "auth_refresh",
                "message": "none of its 2 parameters has a description",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "auth_revoke",
                "message": "its one parameter, token, has no description",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "auth_revoke_all",
                "message": "its one parameter, access_token, has no description",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "delete_email",
                "message": "1 parameter without a description: token",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "enable_encryption",
                "message": "its one parameter, token, has no description",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "forward_email",
                "message": "2 parameters without a description: domain, token",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "get_addressbook",
                "message": "none of its 2 parameters has a description",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "get_announcements",
                "message": "none of its 2 parameters has a description",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "get_email_count",
                "message": "2 parameters without a description: domain, token",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "get_emails",
                "message": "2 parameters without a description: domain, token",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "get_last_email",
                "message": "2 parameters without a description: domain, token",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "get_sent_emails",
                "message": "3 parameters without a description: limit, offset, token",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "get_thread",
                "message": "2 parameters without a description: domain, token",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "reset_encryption",
                "message": "1 parameter without a description: token",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "rotate_encryption_secret",
                "message": "none of its 3 parameters has a description",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "search_emails",
                "message": "4 parameters without a description: domain, limit, offset, token",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC15",
                "severity": "warn",
                "tool": "forward_email",
                "message": "inputSchema uses $ref/$defs",
                "fix": "Inline the referenced schemas. Pydantic and zod-to-json-schema emit $defs for nested models; most can be told not to."
              },
              {
                "rule": "TC15",
                "severity": "warn",
                "tool": "get_email",
                "message": "inputSchema uses $ref/$defs",
                "fix": "Inline the referenced schemas. Pydantic and zod-to-json-schema emit $defs for nested models; most can be told not to."
              },
              {
                "rule": "TC15",
                "severity": "warn",
                "tool": "get_emails",
                "message": "inputSchema uses $ref/$defs",
                "fix": "Inline the referenced schemas. Pydantic and zod-to-json-schema emit $defs for nested models; most can be told not to."
              },
              {
                "rule": "TC15",
                "severity": "warn",
                "tool": "get_last_email",
                "message": "inputSchema uses $ref/$defs",
                "fix": "Inline the referenced schemas. Pydantic and zod-to-json-schema emit $defs for nested models; most can be told not to."
              },
              {
                "rule": "TC15",
                "severity": "warn",
                "tool": "get_sent_emails",
                "message": "inputSchema uses $ref/$defs",
                "fix": "Inline the referenced schemas. Pydantic and zod-to-json-schema emit $defs for nested models; most can be told not to."
              },
              {
                "rule": "TC15",
                "severity": "warn",
                "tool": "get_thread",
                "message": "inputSchema uses $ref/$defs",
                "fix": "Inline the referenced schemas. Pydantic and zod-to-json-schema emit $defs for nested models; most can be told not to."
              },
              {
                "rule": "TC15",
                "severity": "warn",
                "tool": "search_emails",
                "message": "inputSchema uses $ref/$defs",
                "fix": "Inline the referenced schemas. Pydantic and zod-to-json-schema emit $defs for nested models; most can be told not to."
              },
              {
                "rule": "TC15",
                "severity": "warn",
                "tool": "send_email",
                "message": "inputSchema uses $ref/$defs",
                "fix": "Inline the referenced schemas. Pydantic and zod-to-json-schema emit $defs for nested models; most can be told not to."
              },
              {
                "rule": "TC15",
                "severity": "warn",
                "tool": "send_reply",
                "message": "inputSchema uses $ref/$defs",
                "fix": "Inline the referenced schemas. Pydantic and zod-to-json-schema emit $defs for nested models; most can be told not to."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "account_create",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "account_recover",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "auth_exchange",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "auth_introspect",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "auth_refresh",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "auth_revoke",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "auth_revoke_all",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "custom_domain_claim",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "delete_email",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "enable_encryption",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "forward_email",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "get_addressbook",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "get_announcements",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "get_attachment",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "get_email",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "get_email_count",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "get_emails",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "get_last_email",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "get_sent_emails",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "get_thread",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "help",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "reset_encryption",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "rotate_encryption_secret",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "search_emails",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Its name starts with \"search\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "send_email",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "send_reply",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "verify_owner",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC21",
                "severity": "warn",
                "tool": "get_emails",
                "message": "described almost the same as get_last_email (81% of the same words)",
                "fix": "Say in each description when to use it instead of the other."
              },
              {
                "rule": "TC24",
                "severity": "note",
                "message": "27 of 27 tools have no outputSchema",
                "fix": "Declare outputSchema for tools that return structured data, and return structuredContent that matches it."
              }
            ],
            "withheld": true
          }
        },
        "github": {
          "repo": "inboxapi/cli",
          "checkedAt": "2026-10-26T07:35:09.253862145Z",
          "stars": 13,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-09-22T06:38:33Z",
          "openIssues": 4,
          "openPRs": 0,
          "issuesOpened90d": 2,
          "issuesClosed90d": 0,
          "prsMerged90d": 3,
          "ci": {
            "branch": "main",
            "runs": 49,
            "success": 44,
            "failure": 5,
            "other": 0,
            "latest": "success",
            "latestAt": "2026-09-22T06:39:41Z"
          },
          "replies": {
            "sampled": 14,
            "unanswered": 2,
            "medianDays": 0.6
          }
        },
        "updatedAt": "2026-10-27T17:19:18.794768789Z"
      }
    },
    "answer": "Postfleet scores 57.6 (C) on agent readiness against InboxAPI's 54.5 (C), and leads in 5 of 7 scored categories. InboxAPI leads on payments \u0026 pricing and transparency \u0026 trust.",
    "b": {
      "slug": "postfleet",
      "name": "Postfleet",
      "vendor": "Postfleet",
      "vendorUrl": "https://postfleet.ai",
      "kind": "http-api",
      "category": "agent-inboxes",
      "summary": "Postfleet gives AI agents their own email mailboxes over a REST API, webhooks and an MCP server. Inbound mail is sanitised, screened for prompt injection and can be extracted to a JSON schema before the agent reads it.",
      "url": "https://www.anchorterminal.com/tools/postfleet",
      "markdownUrl": "https://www.anchorterminal.com/tools/postfleet.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/postfleet.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/postfleet.json",
      "repo": "https://github.com/Thestral12/postfleet-mcp",
      "license": "Proprietary hosted service under Postfleet's terms (effective 6 October 2026), which name no company or governing law. The MCP server package @postfleet/mcp and the TypeScript SDK postfleet are MIT on npm; the GitHub repository is a mirror of the MCP server only",
      "transports": [
        "http",
        "streamable-http",
        "stdio"
      ],
      "remoteUrl": "https://api.postfleet.ai/api/v1",
      "packages": [
        {
          "registry": "npm",
          "name": "@postfleet/mcp"
        },
        {
          "registry": "npm",
          "name": "postfleet"
        }
      ],
      "auth": "api-key",
      "authNotes": "Bearer `pf_` keys, created and revoked by a person in the dashboard and stored as SHA-256 hashes. Each key has one scope (`bootstrap` creates mailboxes only, `api` and `mcp` work the data plane), may be bound to one mailbox, and carries `can_read` and `can_send` flags, both true unless set false. Send lists, approval settings, webhooks and keys are dashboard-only. The MCP endpoint takes the same key in the `Authorization` header; its OAuth metadata (authorisation code with PKCE S256, dynamic registration) ends with the authorise page attaching an existing `pf_` key as the token (https://postfleet.ai/docs/auth, https://postfleet.ai/docs/mcp).",
      "pricing": "freemium",
      "pricingNotes": "Free is $0 with no card, 100 comprehended messages a month (model injection scan plus schema extraction), 3 mailboxes, 3,000 sends a month and at most 100 a day. Starter $7 a month (250 comprehended, 5 mailboxes, 5,000 sends), Pro $20 (1,500, 10 mailboxes, 10,000 sends, custom domains), Scale $200 (25,000 or more, 150 mailboxes, 150,000 sends). Sanitisation and the deterministic injection check are unmetered on every plan; past the monthly limit the model scan and extraction pause (https://postfleet.ai/pricing).",
      "priceSummary": "$7 / mo",
      "where": "both",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, llms-full.txt or the OpenAPI file. Plans are bought from the dashboard, and over-quota sends answer 402 with `monthly_send_limit`, a quota error rather than a payment challenge (checked 2026-10-27).",
        "endpoints": []
      },
      "toolCount": 16,
      "popularity": {
        "githubStars": 0,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-27"
      },
      "docsUrl": "https://postfleet.ai/docs",
      "llmsTxt": "https://postfleet.ai/llms.txt",
      "openapi": "https://postfleet.ai/openapi.json",
      "registryName": "ai.postfleet/postfleet",
      "capabilities": [
        "email.inbox",
        "email.inbound",
        "email.send",
        "email.threads",
        "email.domains",
        "guard.injection"
      ],
      "tags": [
        "official",
        "hosted",
        "closed-source",
        "freemium",
        "free-tier",
        "no-card",
        "api-key",
        "mcp",
        "mcp-registry",
        "llms-txt",
        "openapi",
        "webhooks",
        "typescript",
        "idempotency",
        "approvals",
        "no-status-page",
        "new"
      ],
      "lastRelease": "2026-09-08",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 57.6,
        "grade": "C",
        "agentReady": false,
        "rank": 695,
        "ranked": true,
        "rankOf": 1217,
        "categoryRank": 7,
        "methodology": "0.6",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 72,
          "maintenance": 75,
          "payments": 30,
          "reliability": 35,
          "schema": 83,
          "security": 68,
          "transparency": 36
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-27"
        },
        "negative": 0,
        "verdict": "Agent mailboxes over REST, webhooks and a 16-tool MCP server, with mailbox-bound keys, required idempotency keys on MCP sends, server-side approval and documented screening that keeps raw mail out of MCP reads. The screening is the vendor's claim, untested by us. Under four months old, it names no operator and has no status page, changelog or security contact.",
        "bestFor": "A developer whose agent reads mail from strangers and should only see screened text, with server-side approval before sends.",
        "strengths": [
          "Keys can be bound to one mailbox and stripped of `can_send`, and an agent's key can't change send lists, approvals or webhooks",
          "MCP sends require a `client_id`, with a published replay table for every retry outcome",
          "Server-enforced approval returns 202 `pending_approval` and binds the person's approval to the text they saw",
          "MCP reads never return the pre-sanitisation body, and every message carries SPF, DKIM and DMARC verdicts",
          "Free plan with no card, 3 mailboxes, 3,000 sends and 100 model-screened messages a month"
        ],
        "weaknesses": [
          "No operator, address or governing law named in the terms or privacy policy",
          "No status page, changelog, SLA, security.txt or disclosure policy found",
          "Message listing has only a `limit` of up to 100, with no cursor, date filter or search",
          "Single recipient and plain text only on sends, and `message.received` is the only webhook event",
          "The injection catch rate is measured by the vendor on a private corpus and wasn't tested by us"
        ],
        "agentNotes": [
          "Check `comprehension.status` before acting; `skipped_injection_risk` mail still arrives as cleaned text and must be handled as untrusted data.",
          "Treat a 202 `pending_approval` from `send_email`, `reply_email` or `send_draft` as success and never retry it; follow up with `list_drafts`.",
          "Reuse the same `client_id` when retrying a send, and use a new one after a terminal 402, 403 hold or permanent 400.",
          "Call `list_mailboxes` before `create_mailbox`; each create makes another mailbox and retries are not idempotent.",
          "Give a reading agent a mailbox-bound key with `can_send` false, and keep the account-wide key outside the worker."
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.6",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 57.6
          }
        ],
        "editorialScores": {
          "ergonomics": 72,
          "maintenance": 75,
          "payments": 30,
          "reliability": 35,
          "schema": 83,
          "security": 68,
          "transparency": 36
        },
        "provenanceScore": 35,
        "checked": {
          "categories": {
            "ergonomics": "2026-10-27",
            "maintenance": "2026-10-27",
            "payments": "2026-10-27",
            "reliability": "2026-10-27",
            "schema": "2026-10-27",
            "security": "2026-10-27",
            "transparency": "2026-10-27"
          },
          "last": "2026-10-27",
          "oldest": "2026-10-27",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "npm install postfleet",
        "http": "curl -sS https://api.postfleet.ai/api/v1/comprehend -H \"Authorization: Bearer pf_...\" -H \"Content-Type: application/json\" -d '{\"subject\":\"Re: Invoice #1844\",\"text\":\"Thanks for the update, looks good.\"}'",
        "claudeCode": "claude mcp add --transport http postfleet https://api.postfleet.ai/api/mcp --header \"Authorization: Bearer $POSTFLEET_KEY\"",
        "config": {
          "mcpServers": {
            "postfleet": {
              "headers": {
                "Authorization": "Bearer pf_..."
              },
              "url": "https://api.postfleet.ai/api/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/email.inbox",
        "tool": "https://letme.dev/postfleet"
      },
      "area": "communication",
      "unitPrices": [
        {
          "item": "Starter plan",
          "unit": "month",
          "usd": 7,
          "note": "250 comprehended messages, 5 mailboxes, 5,000 sends a month"
        },
        {
          "item": "Pro plan",
          "unit": "month",
          "usd": 20,
          "note": "1,500 comprehended messages, 10 mailboxes, 10,000 sends a month, custom domains"
        },
        {
          "item": "Scale plan",
          "unit": "month",
          "usd": 200,
          "note": "25,000 or more comprehended messages, 150 mailboxes, 150,000 sends a month, multiple custom domains"
        }
      ],
      "provenance": {
        "legalEntity": "",
        "domain": "postfleet.ai",
        "domainRegistered": "2026-07-04",
        "domainNote": "RDAP gives a registration date of 2026-07-04 through Cloudflare, Inc., with the registrant redacted apart from the country, US. No page on postfleet.ai names a company.",
        "endpointOnVendorDomain": true,
        "terms": "https://postfleet.ai/terms",
        "privacy": "https://postfleet.ai/privacy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-27",
        "notes": [
          "The terms (effective 6 October 2026) name no company, address or governing law, cap liability at one month's fees and let the operator change them by updating the page. The privacy policy has the same date and also names no controller.",
          "The MCP registry namespace `ai.postfleet` shows the publisher controls postfleet.ai. The npm packages and the GitHub mirror belong to the account `thestral12` (GitHub `Thestral12`); nothing public ties that account to a named company.",
          "postfleet.ai/.well-known/security.txt and /security.txt answer 404, and api.postfleet.ai/.well-known/security.txt redirects to the same 404. /status and /changelog answer 404 and status.postfleet.ai doesn't resolve.",
          "The site answers with a Vercel server header. The privacy policy says the processors are named only in a DPA available on request within 60 days."
        ],
        "score": 35
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/postfleet.json",
      "live": {
        "slug": "postfleet",
        "probe": {
          "target": "https://api.postfleet.ai/api/v1",
          "method": "get",
          "lastAt": "2026-10-27T17:19:27.835465926Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 762,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 755,
          "p95ms24h": 896,
          "samples24h": 23,
          "samples30d": 23,
          "days": [
            {
              "date": "2026-10-27",
              "probes": 23,
              "ok": 23
            }
          ]
        },
        "securityTxt": {
          "url": "https://postfleet.ai/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-27T15:32:52.707181785Z"
        },
        "mcpTools": {
          "url": "https://api.postfleet.ai/api/mcp",
          "checkedAt": "2026-10-27T00:30:04.517407312Z",
          "status": "auth",
          "note": "asks for credentials before listing its tools",
          "changedAt": "2026-10-01T22:01:26.362748198Z"
        },
        "updatedAt": "2026-10-27T17:19:27.835465926Z"
      }
    },
    "facts": [
      {
        "a": "MCP server",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Sitka Capital Pty Ltd",
        "b": "Postfleet",
        "name": "Vendor"
      },
      {
        "a": "https://mcp.inboxapi.ai/mcp",
        "b": "https://api.postfleet.ai/api/v1",
        "name": "Hosted endpoint"
      },
      {
        "a": "stdio, Streamable HTTP",
        "b": "HTTP, Streamable HTTP, stdio",
        "name": "Transports"
      },
      {
        "a": "None",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Free",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary hosted service under InboxAPI's terms of service. The CLI on GitHub is MIT",
        "b": "Proprietary hosted service under Postfleet's terms (effective 6 October 2026), which name no company or governing law. The MCP server package @postfleet/mcp and the TypeScript SDK postfleet are MIT on npm; the GitHub repository is a mirror of the MCP server only",
        "name": "Licence"
      },
      {
        "a": "21",
        "b": "16",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "not listed",
        "b": "ai.postfleet/postfleet",
        "name": "MCP registry"
      },
      {
        "a": "2026-09-22",
        "b": "2026-09-08",
        "name": "Last release"
      },
      {
        "a": "2026-09-11",
        "b": "",
        "name": "Terms last updated"
      },
      {
        "a": "2026-09-11",
        "b": "",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "12 stars, 38 npm/wk",
        "b": "0 stars",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Postfleet scores 57.6 (C) on agent readiness against InboxAPI's 54.5 (C), and leads in 5 of 7 scored categories. InboxAPI leads on payments \u0026 pricing and transparency \u0026 trust.",
        "question": "Which is better for AI agents, InboxAPI or Postfleet?"
      },
      {
        "answer": "InboxAPI needs no key. Postfleet needs an API key.",
        "question": "Do InboxAPI and Postfleet need an API key?"
      },
      {
        "answer": "Yes. InboxAPI has a hosted endpoint at https://mcp.inboxapi.ai/mcp and Postfleet at https://api.postfleet.ai/api/v1.",
        "question": "Can an agent call InboxAPI and Postfleet without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Payments \u0026 pricing, 53 against 30",
          "Transparency \u0026 trust, 53 against 36"
        ],
        "also": [
          "No key needed to call it"
        ],
        "goodFor": "A personal mailbox for one coding agent that needs to exchange mail with its owner and a few contacts at no cost.",
        "slug": "inboxapi",
        "watchFor": "Mail arrives by polling only. No webhook, websocket or push tool was found in the tool list or docs"
      },
      {
        "aheadOn": [
          "Schema \u0026 documentation, 83 against 69",
          "Agent ergonomics, 72 against 61",
          "Security \u0026 auth, 68 against 57",
          "Maintenance \u0026 community, 75 against 63"
        ],
        "also": null,
        "goodFor": "A developer whose agent reads mail from strangers and should only see screened text, with server-side approval before sends.",
        "slug": "postfleet",
        "watchFor": "No operator, address or governing law named in the terms or privacy policy"
      }
    ],
    "job": {
      "capability": "email.inbox",
      "name": "Agent inboxes"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/agentmail-vs-inboxapi.json",
        "title": "AgentMail API + MCP vs InboxAPI",
        "url": "https://www.anchorterminal.com/compare/agentmail-vs-inboxapi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/agentmail-vs-postfleet.json",
        "title": "AgentMail API + MCP vs Postfleet",
        "url": "https://www.anchorterminal.com/compare/agentmail-vs-postfleet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cherami-vs-inboxapi.json",
        "title": "Cherami vs InboxAPI",
        "url": "https://www.anchorterminal.com/compare/cherami-vs-inboxapi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cherami-vs-postfleet.json",
        "title": "Cherami vs Postfleet",
        "url": "https://www.anchorterminal.com/compare/cherami-vs-postfleet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/inbound-vs-inboxapi.json",
        "title": "Inbound vs InboxAPI",
        "url": "https://www.anchorterminal.com/compare/inbound-vs-inboxapi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/inbound-vs-postfleet.json",
        "title": "Inbound vs Postfleet",
        "url": "https://www.anchorterminal.com/compare/inbound-vs-postfleet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/inboxapi-vs-mailows.json",
        "title": "InboxAPI vs Mailows",
        "url": "https://www.anchorterminal.com/compare/inboxapi-vs-mailows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/inboxapi-vs-mails-ai.json",
        "title": "InboxAPI vs mails.ai Agent Email",
        "url": "https://www.anchorterminal.com/compare/inboxapi-vs-mails-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/inboxapi-vs-mailslurp.json",
        "title": "InboxAPI vs MailSlurp",
        "url": "https://www.anchorterminal.com/compare/inboxapi-vs-mailslurp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/inboxapi-vs-robotomail.json",
        "title": "InboxAPI vs Robotomail",
        "url": "https://www.anchorterminal.com/compare/inboxapi-vs-robotomail"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mailows-vs-postfleet.json",
        "title": "Mailows vs Postfleet",
        "url": "https://www.anchorterminal.com/compare/mailows-vs-postfleet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mails-ai-vs-postfleet.json",
        "title": "mails.ai Agent Email vs Postfleet",
        "url": "https://www.anchorterminal.com/compare/mails-ai-vs-postfleet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mailslurp-vs-postfleet.json",
        "title": "MailSlurp vs Postfleet",
        "url": "https://www.anchorterminal.com/compare/mailslurp-vs-postfleet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/postfleet-vs-robotomail.json",
        "title": "Postfleet vs Robotomail",
        "url": "https://www.anchorterminal.com/compare/postfleet-vs-robotomail"
      }
    ],
    "scores": [
      {
        "by": 2,
        "edge": "postfleet",
        "inboxapi": 33,
        "key": "reliability",
        "name": "Reliability",
        "postfleet": 35,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 14,
        "edge": "postfleet",
        "inboxapi": 69,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "postfleet": 83,
        "weight": 13
      },
      {
        "by": 11,
        "edge": "postfleet",
        "inboxapi": 61,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "postfleet": 72,
        "weight": 13
      },
      {
        "by": 11,
        "edge": "postfleet",
        "inboxapi": 57,
        "key": "security",
        "name": "Security \u0026 auth",
        "postfleet": 68,
        "weight": 14
      },
      {
        "by": 23,
        "edge": "inboxapi",
        "inboxapi": 53,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "postfleet": 30,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 12,
        "edge": "postfleet",
        "inboxapi": 63,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "postfleet": 75,
        "weight": 7
      },
      {
        "by": 17,
        "edge": "inboxapi",
        "inboxapi": 53,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "postfleet": 36,
        "weight": 7
      }
    ],
    "summary": "Postfleet scores 57.6 (C) on agent readiness against InboxAPI's 54.5 (C), and leads in 5 of 7 scored categories. InboxAPI leads on payments \u0026 pricing and transparency \u0026 trust. Both do agent inboxes.",
    "tutorials": [],
    "verdicts": {
      "inboxapi": "An account and address are created on first use with proof-of-work and no signup, key or card, and inbound mail is trust-labelled and datamarked against prompt injection. Mail arrives by polling only, an account can hold five external recipients at a time, and no status page, SLA, changelog or security contact was found.",
      "postfleet": "Agent mailboxes over REST, webhooks and a 16-tool MCP server, with mailbox-bound keys, required idempotency keys on MCP sends, server-side approval and documented screening that keeps raw mail out of MCP reads. The screening is the vendor's claim, untested by us. Under four months old, it names no operator and has no status page, changelog or security contact."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/inboxapi-vs-postfleet",
    "json": "https://www.anchorterminal.com/compare/inboxapi-vs-postfleet.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/inboxapi-vs-postfleet.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/inboxapi-vs-postfleet.min.md"
  },
  "markdown": "Postfleet scores 57.6 (C) on agent readiness against InboxAPI's 54.5 (C), and leads in 5 of 7 scored categories. InboxAPI leads on payments \u0026 pricing and transparency \u0026 trust. Both do agent inboxes.\n\n- InboxAPI: grade C, 54.5/100, rank #795 of 1217. Markdown https://www.anchorterminal.com/tools/inboxapi.md · JSON https://www.anchorterminal.com/api/v1/tools/inboxapi.json\n- Postfleet: grade C, 57.6/100, rank #695 of 1217. Markdown https://www.anchorterminal.com/tools/postfleet.md · JSON https://www.anchorterminal.com/api/v1/tools/postfleet.json\n- Best email inbox APIs for AI agents: https://www.anchorterminal.com/best/agent-inboxes/index.md\n- All 36 inboxes comparisons: https://www.anchorterminal.com/compare/agent-inboxes/index.md\n\n## Which one, for what\n\n### InboxAPI (C)\n\nGood for: A personal mailbox for one coding agent that needs to exchange mail with its owner and a few contacts at no cost.\n\nAhead on:\n- Payments \u0026 pricing, 53 against 30\n- Transparency \u0026 trust, 53 against 36\n\nAlso in its favour:\n- No key needed to call it\n\nWatch for: Mail arrives by polling only. No webhook, websocket or push tool was found in the tool list or docs\n\n### Postfleet (C)\n\nGood for: A developer whose agent reads mail from strangers and should only see screened text, with server-side approval before sends.\n\nAhead on:\n- Schema \u0026 documentation, 83 against 69\n- Agent ergonomics, 72 against 61\n- Security \u0026 auth, 68 against 57\n- Maintenance \u0026 community, 75 against 63\n\nWatch for: No operator, address or governing law named in the terms or privacy policy\n\n\n## Score by category\n\n| Category | Weight | InboxAPI | Postfleet | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 33 | 35 | Postfleet +2 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 69 | 83 | Postfleet +14 |\n| Agent ergonomics | 13% (16.2 this run) | 61 | 72 | Postfleet +11 |\n| Security \u0026 auth | 14% (17.5 this run) | 57 | 68 | Postfleet +11 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 53 | 30 | InboxAPI +23 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 63 | 75 | Postfleet +12 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 53 | 36 | InboxAPI +17 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **54.5 · C** | **57.6 · C** | |\n\n## Facts side by side\n\n| Fact | InboxAPI | Postfleet |\n| --- | --- | --- |\n| Kind | MCP server | HTTP API |\n| Vendor | Sitka Capital Pty Ltd | Postfleet |\n| Hosted endpoint | `https://mcp.inboxapi.ai/mcp` | `https://api.postfleet.ai/api/v1` |\n| Transports | stdio, Streamable HTTP | HTTP, Streamable HTTP, stdio |\n| Auth | None | API key |\n| Pricing | Free | Freemium |\n| x402 | no | no |\n| Licence | Proprietary hosted service under InboxAPI's terms of service. The CLI on GitHub is MIT | Proprietary hosted service under Postfleet's terms (effective 6 October 2026), which name no company or governing law. The MCP server package @postfleet/mcp and the TypeScript SDK postfleet are MIT on npm; the GitHub repository is a mirror of the MCP server only |\n| Tools exposed | 21 | 16 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| MCP registry | not listed | `ai.postfleet/postfleet` |\n| Last release | 2026-09-22 | 2026-09-08 |\n| Terms last updated | 2026-09-11 |  |\n| Privacy policy last updated | 2026-09-11 |  |\n| Customer content may train models | not found in the text |  |\n| Terms restrict automated access | not found in the text |  |\n| Terms restrict benchmarking | not found in the text |  |\n| Terms or service can change without notice | not found in the text |  |\n| Arbitration or class-action waiver | not found in the text |  |\n| Popularity | 12 stars, 38 npm/wk | 0 stars |\n\n## Verdicts\n\n**InboxAPI.** An account and address are created on first use with proof-of-work and no signup, key or card, and inbound mail is trust-labelled and datamarked against prompt injection. Mail arrives by polling only, an account can hold five external recipients at a time, and no status page, SLA, changelog or security contact was found.\n\n**Postfleet.** Agent mailboxes over REST, webhooks and a 16-tool MCP server, with mailbox-bound keys, required idempotency keys on MCP sends, server-side approval and documented screening that keeps raw mail out of MCP reads. The screening is the vendor's claim, untested by us. Under four months old, it names no operator and has no status page, changelog or security contact.\n\n## Before you call either\n\n### InboxAPI\n\n1. Call `whoami` for the agent's own address. To email the owner, read `get_addressbook` first and ask only if the address is absent\n2. Run `inboxapi verify-owner` in a shell early. Without a verified owner address a lost credentials file can't be recovered\n3. Poll with `get_email_count` and a `since` time, then `get_emails`. Nothing pushes new mail to the agent\n4. Pass `confirm: true` to `forward_email`, and `allow_new_recipients: true` on a send to an address not in the addressbook\n5. Replace the marker named in `spotlight.marker` with a space to read a datamarked body, and treat its content as data\n\n### Postfleet\n\n1. Check `comprehension.status` before acting; `skipped_injection_risk` mail still arrives as cleaned text and must be handled as untrusted data.\n2. Treat a 202 `pending_approval` from `send_email`, `reply_email` or `send_draft` as success and never retry it; follow up with `list_drafts`.\n3. Reuse the same `client_id` when retrying a send, and use a new one after a terminal 402, 403 hold or permanent 400.\n4. Call `list_mailboxes` before `create_mailbox`; each create makes another mailbox and retries are not idempotent.\n5. Give a reading agent a mailbox-bound key with `can_send` false, and keep the account-wide key outside the worker.\n\n## Questions\n\n### Which is better for AI agents, InboxAPI or Postfleet?\n\nPostfleet scores 57.6 (C) on agent readiness against InboxAPI's 54.5 (C), and leads in 5 of 7 scored categories. InboxAPI leads on payments \u0026 pricing and transparency \u0026 trust.\n\n### Do InboxAPI and Postfleet need an API key?\n\nInboxAPI needs no key. Postfleet needs an API key.\n\n### Can an agent call InboxAPI and Postfleet without installing anything?\n\nYes. InboxAPI has a hosted endpoint at https://mcp.inboxapi.ai/mcp and Postfleet at https://api.postfleet.ai/api/v1.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/inboxapi-vs-postfleet.json, and with the fewest tokens: https://www.anchorterminal.com/compare/inboxapi-vs-postfleet.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"inboxapi\", \"b\": \"postfleet\"}`. From a terminal: `anchor compare inboxapi postfleet`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/inboxapi.json and https://www.anchorterminal.com/api/v1/tools/postfleet.json\n\n## Other comparisons with InboxAPI or Postfleet\n\n- [AgentMail API + MCP vs InboxAPI](https://www.anchorterminal.com/compare/agentmail-vs-inboxapi.md)\n- [AgentMail API + MCP vs Postfleet](https://www.anchorterminal.com/compare/agentmail-vs-postfleet.md)\n- [Cherami vs InboxAPI](https://www.anchorterminal.com/compare/cherami-vs-inboxapi.md)\n- [Cherami vs Postfleet](https://www.anchorterminal.com/compare/cherami-vs-postfleet.md)\n- [Inbound vs InboxAPI](https://www.anchorterminal.com/compare/inbound-vs-inboxapi.md)\n- [Inbound vs Postfleet](https://www.anchorterminal.com/compare/inbound-vs-postfleet.md)\n- [InboxAPI vs Mailows](https://www.anchorterminal.com/compare/inboxapi-vs-mailows.md)\n- [InboxAPI vs mails.ai Agent Email](https://www.anchorterminal.com/compare/inboxapi-vs-mails-ai.md)\n- [InboxAPI vs MailSlurp](https://www.anchorterminal.com/compare/inboxapi-vs-mailslurp.md)\n- [InboxAPI vs Robotomail](https://www.anchorterminal.com/compare/inboxapi-vs-robotomail.md)\n- [Mailows vs Postfleet](https://www.anchorterminal.com/compare/mailows-vs-postfleet.md)\n- [mails.ai Agent Email vs Postfleet](https://www.anchorterminal.com/compare/mails-ai-vs-postfleet.md)\n- [MailSlurp vs Postfleet](https://www.anchorterminal.com/compare/mailslurp-vs-postfleet.md)\n- [Postfleet vs Robotomail](https://www.anchorterminal.com/compare/postfleet-vs-robotomail.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-10-27",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.6",
    "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": "InboxAPI vs Postfleet",
        "url": ""
      }
    ],
    "description": "Postfleet scores 57.6 (C) to InboxAPI's 54.5 (C) for agent inboxes. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "InboxAPI C 54.5",
      "Postfleet C 57.6",
      "scores"
    ],
    "h1": "InboxAPI vs Postfleet",
    "image": "https://www.anchorterminal.com/assets/og/compare-inboxapi-vs-postfleet.png",
    "path": "/compare/inboxapi-vs-postfleet",
    "published": "2026-10-01",
    "section": "tools",
    "title": "InboxAPI vs Postfleet for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-27",
    "url": "https://www.anchorterminal.com/compare/inboxapi-vs-postfleet"
  },
  "tokens": {
    "markdown": 2250,
    "slim": 780
  },
  "version": 1
}
