{
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-07",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "tool": {
    "slug": "clawpost",
    "name": "Clawpost",
    "vendor": "Frank Harris",
    "vendorUrl": "https://github.com/hirefrank/clawpost",
    "kind": "mcp",
    "category": "agent-inboxes",
    "summary": "Clawpost is an open-source Cloudflare Worker you deploy yourself to give an AI agent its own email address, with an MCP server, a REST API and a CLI for sending, receiving, searching, drafts and sender approval.",
    "url": "https://www.anchorterminal.com/tools/clawpost",
    "markdownUrl": "https://www.anchorterminal.com/tools/clawpost.md",
    "slimMarkdownUrl": "https://www.anchorterminal.com/tools/clawpost.min.md",
    "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/clawpost.json",
    "dns": "clawpost.grade.anchorterminal.com",
    "repo": "https://github.com/hirefrank/clawpost",
    "license": "MIT",
    "transports": [
      "streamable-http",
      "http"
    ],
    "packages": [],
    "auth": "api-key",
    "authNotes": "One shared secret, `CLAWPOST_API_KEY`, set as a Worker secret and sent as `Authorization: Bearer` to both the REST API and the MCP endpoint, compared in constant time. No scopes, users or per-client keys. Inbox and alias management also needs a Cloudflare API token on the Worker.",
    "pricing": "free",
    "pricingNotes": "Free, MIT-licensed software. Running it needs the Cloudflare Workers Paid plan ($5 a month) for Durable Objects and outbound Email Service; the README puts a typical agent at about $5 a month. Resend can be used for outbound instead.",
    "priceSummary": "Free · OSS",
    "where": "local",
    "x402": {
      "level": "no",
      "evidence": "No x402, MPP or L402 in the source or README (checked 2026-11-06).",
      "endpoints": []
    },
    "toolCount": 21,
    "popularity": {
      "githubStars": null,
      "npmWeekly": null,
      "pypiWeekly": null,
      "asOf": "2026-11-06"
    },
    "docsUrl": "https://github.com/hirefrank/clawpost#readme",
    "capabilities": [
      "email.inbox",
      "email.send",
      "email.inbound",
      "email.threads",
      "email.domains"
    ],
    "tags": [
      "self-hosted",
      "open-source",
      "mcp",
      "remote-mcp",
      "api-key",
      "cloudflare",
      "webhooks",
      "approvals",
      "typescript",
      "cli",
      "pre-1.0"
    ],
    "lastRelease": "2026-04-01",
    "graded": true,
    "anchor": {
      "graded": true,
      "score": 36.8,
      "grade": "F",
      "agentReady": false,
      "rank": 1361,
      "ranked": true,
      "rankOf": 1486,
      "categoryRank": 12,
      "methodology": "0.7",
      "run": "2026-10-01",
      "scores": {
        "ergonomics": 53,
        "maintenance": 2,
        "payments": 60,
        "reliability": 8,
        "schema": 54,
        "security": 42,
        "transparency": 32
      },
      "pending": [
        "performance",
        "tasks"
      ],
      "breakdown": [
        {
          "key": "reliability",
          "name": "Reliability",
          "weight": 16,
          "effectiveWeight": 20,
          "score": 8,
          "points": 1.6,
          "reason": "Graded with the lines for self-hosted software, since each deployer runs their own Worker. No published package; it deploys from the repository with a Deploy to Cloudflare button, Bun and Wrangler, and states the Cloudflare products it needs (8 of 20). No CI workflow or test suite in the repository (0). Open issues couldn't be read, because GitHub's API refused our requests for its rate limit, so the line scores absent (0, unchecked). No tags, releases or changelog; package.json says 0.1.0 (0). Pre-1.0 (0). Total 8.",
          "checked": "2026-11-06"
        },
        {
          "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": 54,
          "points": 8.78,
          "reason": "All 21 MCP tools take typed zod inputs, which the MCP SDK publishes as JSON Schema (25). SKILL.md and AGENTS.md give agent-readable setup in Markdown; no llms.txt (5 of 10). Descriptions are one line each, such as `Send an email`, with parameter descriptions but no when-not-to-use (8 of 20). Inputs are typed with defaults for limit and offset, but recipients are a comma-separated string and direction isn't an enum in the schema read (9 of 15). The README has request examples and a REST route table; error responses aren't documented (7 of 15). No versioning or changelog (0). Total 54.",
          "checked": "2026-11-06"
        },
        {
          "key": "ergonomics",
          "name": "Agent ergonomics",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 53,
          "points": 8.61,
          "reason": "21 tools, the 11 to 30 band (15 of 25). List and search tools take limit, offset and filters by direction, sender, label and archive state (20). Error shapes aren't documented; the code returns JSON errors (8 of 20). No idempotency key for sends and no readOnlyHint or destructiveHint annotations; drafts give a review step (3 of 20). Archived mail is excluded by default and the CLI has a `--json` mode, but there's no SDK beyond the CLI (7 of 15). Total 53.",
          "checked": "2026-11-06"
        },
        {
          "key": "security",
          "name": "Security \u0026 auth",
          "weight": 14,
          "effectiveWeight": 17.5,
          "score": 42,
          "points": 7.35,
          "reason": "One shared secret for REST and MCP, compared in constant time, with no scopes, expiry or per-client keys (10 of 30). Sender approval, drafts, and an optional allowlist of domains for routing changes limit what an agent can see and change; the key can still send to anyone (14 of 20). Mail from unapproved senders is hidden from all query tools by default, and `list_pending` returns metadata without bodies, documented as a prompt-injection guard (15). No log of API or tool calls beyond the stored messages (3 of 15). No security policy, advisories or disclosure route for this personal project (0). Total 42.",
          "checked": "2026-11-06"
        },
        {
          "key": "payments",
          "name": "Payments \u0026 pricing",
          "weight": 10,
          "effectiveWeight": 12.5,
          "score": 60,
          "points": 7.5,
          "reason": "Free self-hosted software with nothing to buy from the author, which the rubric scores 20 + 20 + 20. Running it needs the deployer's own Cloudflare Workers Paid plan at $5 a month, which isn't Clawpost's charge. No payment protocol (0 of 40). Total 60.",
          "checked": "2026-11-06"
        },
        {
          "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": 2,
          "points": 0.18,
          "reason": "The last commit was on 1 April 2026, 219 days before this check (0). No releases or commits in the 90 days from 8 August (0). Issue and pull request activity couldn't be read through GitHub's API that day (0, unchecked). Not in the official MCP registry and no published package (0). Dependencies such as `agents` ^0.0.74 and the MCP SDK ^1.12.1 date from early 2026, and there's no CI (2 of 10). Total 2.",
          "checked": "2026-11-06"
        },
        {
          "key": "transparency",
          "name": "Transparency \u0026 trust",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 32,
          "points": 2.8,
          "note": "editorial 50, provenance 13",
          "reason": "The README and SKILL.md say MIT, but no LICENSE file is committed (20 of 30). Self-hosted; the README says mail is stored in the deployer's D1 database with attachments in R2 and sent through Cloudflare Email Service or Resend. No retention or deletion guidance (15 of 30). No deprecation policy (0). No telemetry in the source read; the only outbound calls are to the configured mail provider, Cloudflare's API and the deployer's own webhooks (15 of 20). Total 50.",
          "checked": "2026-11-06"
        }
      ],
      "assessment": {
        "date": "2026-11-06",
        "basis": "public evidence",
        "confidence": "low",
        "notes": {
          "ergonomics": "21 tools, the 11 to 30 band (15 of 25). List and search tools take limit, offset and filters by direction, sender, label and archive state (20). Error shapes aren't documented; the code returns JSON errors (8 of 20). No idempotency key for sends and no readOnlyHint or destructiveHint annotations; drafts give a review step (3 of 20). Archived mail is excluded by default and the CLI has a `--json` mode, but there's no SDK beyond the CLI (7 of 15). Total 53.",
          "maintenance": "The last commit was on 1 April 2026, 219 days before this check (0). No releases or commits in the 90 days from 8 August (0). Issue and pull request activity couldn't be read through GitHub's API that day (0, unchecked). Not in the official MCP registry and no published package (0). Dependencies such as `agents` ^0.0.74 and the MCP SDK ^1.12.1 date from early 2026, and there's no CI (2 of 10). Total 2.",
          "payments": "Free self-hosted software with nothing to buy from the author, which the rubric scores 20 + 20 + 20. Running it needs the deployer's own Cloudflare Workers Paid plan at $5 a month, which isn't Clawpost's charge. No payment protocol (0 of 40). Total 60.",
          "reliability": "Graded with the lines for self-hosted software, since each deployer runs their own Worker. No published package; it deploys from the repository with a Deploy to Cloudflare button, Bun and Wrangler, and states the Cloudflare products it needs (8 of 20). No CI workflow or test suite in the repository (0). Open issues couldn't be read, because GitHub's API refused our requests for its rate limit, so the line scores absent (0, unchecked). No tags, releases or changelog; package.json says 0.1.0 (0). Pre-1.0 (0). Total 8.",
          "schema": "All 21 MCP tools take typed zod inputs, which the MCP SDK publishes as JSON Schema (25). SKILL.md and AGENTS.md give agent-readable setup in Markdown; no llms.txt (5 of 10). Descriptions are one line each, such as `Send an email`, with parameter descriptions but no when-not-to-use (8 of 20). Inputs are typed with defaults for limit and offset, but recipients are a comma-separated string and direction isn't an enum in the schema read (9 of 15). The README has request examples and a REST route table; error responses aren't documented (7 of 15). No versioning or changelog (0). Total 54.",
          "security": "One shared secret for REST and MCP, compared in constant time, with no scopes, expiry or per-client keys (10 of 30). Sender approval, drafts, and an optional allowlist of domains for routing changes limit what an agent can see and change; the key can still send to anyone (14 of 20). Mail from unapproved senders is hidden from all query tools by default, and `list_pending` returns metadata without bodies, documented as a prompt-injection guard (15). No log of API or tool calls beyond the stored messages (3 of 15). No security policy, advisories or disclosure route for this personal project (0). Total 42.",
          "transparency": "The README and SKILL.md say MIT, but no LICENSE file is committed (20 of 30). Self-hosted; the README says mail is stored in the deployer's D1 database with attachments in R2 and sent through Cloudflare Email Service or Resend. No retention or deletion guidance (15 of 30). No deprecation policy (0). No telemetry in the source read; the only outbound calls are to the configured mail provider, Cloudflare's API and the deployer's own webhooks (15 of 20). Total 50."
        },
        "sources": [
          {
            "what": "repository and README",
            "url": "https://github.com/hirefrank/clawpost",
            "seen": "2026-11-06"
          },
          {
            "what": "MCP tool definitions",
            "url": "https://github.com/hirefrank/clawpost/blob/main/src/mcp.ts",
            "seen": "2026-11-06"
          },
          {
            "what": "authentication code",
            "url": "https://github.com/hirefrank/clawpost/blob/main/src/index.ts",
            "seen": "2026-11-06"
          },
          {
            "what": "agent skill",
            "url": "https://github.com/hirefrank/clawpost/blob/main/SKILL.md",
            "seen": "2026-11-06"
          },
          {
            "what": "commit history",
            "url": "https://github.com/hirefrank/clawpost/commits/main",
            "seen": "2026-11-06"
          }
        ],
        "openQuestions": [
          "unchecked: GitHub stars, open issues and pull requests, because GitHub's API refused our requests for its rate limit on 6 November 2026",
          "The licence is stated as MIT in the README and SKILL.md but no LICENSE file is committed"
        ]
      },
      "negative": 0,
      "verdict": "A small self-hosted agent inbox whose sender-approval gate keeps unknown senders' mail away from the agent by default, with drafts for human review. It is one developer's project, unchanged since 1 April 2026, with one all-powerful key, no releases, tests or CI.",
      "bestFor": "A developer who wants an agent inbox on their own domain and Cloudflare account with a default approval gate.",
      "strengths": [
        "Mail from unapproved senders is stored but hidden from every query tool until a sender is approved",
        "Drafts let a person review mail before an agent's message goes out",
        "Self-hosted on the deployer's own Cloudflare account, so mail stays in their D1 and R2",
        "21 MCP tools with typed zod inputs, plus a REST API and a CLI with `--json` output",
        "Free software; running costs are the Cloudflare Workers Paid plan at $5 a month"
      ],
      "weaknesses": [
        "One shared API key grants every REST and MCP operation; no scopes or read-only key",
        "No commits since 1 April 2026, no tags or releases, no CI and no tests",
        "No idempotency on sends and no MCP tool annotations",
        "Tool descriptions are one line, such as `Send an email`, with no when-not-to-use guidance",
        "README says MIT but no LICENSE file is in the repository"
      ],
      "agentNotes": [
        "Expect unknown senders' mail to be invisible until `approve_sender` runs; check `list_pending` for metadata first",
        "Use `create_draft` instead of `send_email` when a person should review the message",
        "Send to one address per call or comma-separate recipients in `to`; a retried send isn't deduplicated",
        "Treat the deployer's Worker URL and `CLAWPOST_API_KEY` as full access to the mailbox"
      ],
      "metrics": {
        "kind": "local",
        "measured": false
      },
      "reviewCount": 0,
      "avgRating": 0,
      "history": [
        {
          "basis": "public evidence",
          "confidence": "low",
          "grade": "F",
          "methodology": "0.7",
          "pending": [
            "performance",
            "tasks"
          ],
          "run": "2026-10-01",
          "runLabel": "October 2026 research run",
          "score": 36.8
        }
      ],
      "editorialScores": {
        "ergonomics": 53,
        "maintenance": 2,
        "payments": 60,
        "reliability": 8,
        "schema": 54,
        "security": 42,
        "transparency": 50
      },
      "provenanceScore": 13,
      "checked": {
        "categories": {
          "ergonomics": "2026-11-06",
          "maintenance": "2026-11-06",
          "payments": "2026-11-06",
          "reliability": "2026-11-06",
          "schema": "2026-11-06",
          "security": "2026-11-06",
          "transparency": "2026-11-06"
        },
        "last": "2026-11-06",
        "oldest": "2026-11-06",
        "stale": false,
        "staleAfterDays": 90
      },
      "scoreHistory": [
        {
          "date": "2026-11-06",
          "grade": "F",
          "kind": "listed",
          "method": "0.7",
          "score": 36.8
        }
      ]
    },
    "connect": {
      "install": "git clone https://github.com/hirefrank/clawpost \u0026\u0026 cd clawpost \u0026\u0026 bun install \u0026\u0026 bun run db:migrate \u0026\u0026 bun run deploy",
      "config": {
        "mcpServers": {
          "clawpost": {
            "headers": {
              "Authorization": "Bearer YOUR_CLAWPOST_API_KEY"
            },
            "type": "streamable-http",
            "url": "https://\u003cyour-worker\u003e.workers.dev/mcp"
          }
        }
      }
    },
    "letme": {
      "capability": "https://letme.dev/email.inbox",
      "tool": "https://letme.dev/clawpost"
    },
    "notable": [
      "Inbound mail is unapproved by default and hidden from every query tool until `approve_sender` allowlists the sender; `list_pending` shows metadata only, as a prompt-injection guard (https://github.com/hirefrank/clawpost#sender-approval)",
      "Drafts let an agent prepare mail for a person to review and send (https://github.com/hirefrank/clawpost#drafts)",
      "Runs on the deployer's own Cloudflare account with D1, R2, Durable Objects, Email Routing and Email Service or Resend (https://github.com/hirefrank/clawpost#readme)",
      "25 commits between 7 February and 1 April 2026, no tags or releases, no CI and no tests in the repository (https://github.com/hirefrank/clawpost/commits)",
      "The README says MIT, but the repository has no LICENSE file (https://github.com/hirefrank/clawpost)"
    ],
    "area": "communication",
    "details": [
      {
        "label": "Surface listed",
        "value": "The Worker's MCP endpoint at /mcp, its REST API under /api and the CLI, read from a clone of github.com/hirefrank/clawpost (README, SKILL.md, src/mcp.ts, src/index.ts and the commit history) on 6 November 2026. Nothing was deployed or run"
      },
      {
        "label": "MCP tools",
        "value": "21 tools: send, reply, list, read, attachments, search, threads, labels, drafts, archive, and sender approval (list_pending, approve_sender, remove_sender, list_approved_senders)"
      },
      {
        "label": "Previous name",
        "value": "clawmail, renamed to clawpost on 12 February 2026 per the commit history"
      },
      {
        "label": "Built for",
        "value": "openclaw.ai agents, per the README"
      },
      {
        "label": "Known gaps",
        "value": "The README's roadmap lists per-key rate limiting, bounce handling and Resend webhook signature checks as not yet built"
      }
    ],
    "provenance": {
      "legalEntity": "",
      "domain": "github.com",
      "domainRegistered": "",
      "endpointOnVendorDomain": false,
      "terms": "",
      "privacy": "",
      "statusPage": "",
      "changelog": "",
      "securityTxt": "none",
      "checked": "2026-11-06",
      "notes": [
        "A personal repository under the GitHub account hirefrank; every commit but one merged pull request is by Frank Harris. No company, terms or privacy policy, as expected for self-hosted software.",
        "The README's licence section says MIT and SKILL.md declares MIT, but no LICENSE file is committed.",
        "The endpoint is whatever Worker URL the deployer chooses, usually on workers.dev.",
        "GitHub's API refused our requests for its rate limit on 6 November 2026, so stars and open issues weren't read; the code and history come from a shallow clone."
      ],
      "score": 13,
      "checks": [
        {
          "check": "Legal entity named",
          "value": "not found",
          "points": 0,
          "max": 20,
          "state": "no"
        },
        {
          "check": "Domain age",
          "value": "github.com, no registry record we could read",
          "points": 0,
          "max": 15,
          "state": "no"
        },
        {
          "check": "Endpoint on the vendor's domain",
          "value": " is not on github.com",
          "points": 0,
          "max": 15,
          "state": "no"
        },
        {
          "check": "Terms of service",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        },
        {
          "check": "Privacy policy",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        },
        {
          "check": "Status page",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        },
        {
          "check": "Changelog",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        },
        {
          "check": "security.txt",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        },
        {
          "check": "People named",
          "value": "1 named with their role, 1 with a public profile",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "Support route",
          "value": "help pages",
          "points": 5,
          "max": 5,
          "state": "ok"
        }
      ]
    },
    "humans": {
      "slug": "clawpost",
      "checked": "2026-11-06",
      "people": [
        {
          "name": "Frank Harris",
          "role": "Author and maintainer",
          "founder": true,
          "x": "https://x.com/hirefrank",
          "github": "https://github.com/hirefrank",
          "page": "/people/frank-harris/"
        }
      ],
      "peopleNote": "Clawpost is a personal repository under the GitHub account hirefrank; every commit in the history is by Frank Harris, apart from one merged pull request authored with Claude, and SKILL.md names hirefrank as author. There is no company, website, funding or investors. His GitHub profile names him Frank Harris and links the X account hirefrank, which is listed.",
      "companySocial": {
        "github": "https://github.com/hirefrank"
      },
      "support": {
        "urls": [
          "https://github.com/hirefrank/clawpost/issues"
        ]
      },
      "sources": [
        "https://github.com/hirefrank/clawpost",
        "https://github.com/hirefrank/clawpost/blob/main/SKILL.md",
        "https://github.com/hirefrank"
      ],
      "ownership": {
        "status": "project",
        "checked": "2026-11-06",
        "sources": [
          "https://github.com/hirefrank/clawpost"
        ]
      }
    },
    "pageJsonUrl": "https://www.anchorterminal.com/tools/clawpost.json",
    "live": {
      "slug": "clawpost",
      "githubStars": 6,
      "securityTxt": {
        "url": "https://github.com/.well-known/security.txt",
        "state": "valid",
        "expires": "2026-12-07T16:01:24z",
        "checkedAt": "2026-11-07T16:01:24.824706262Z"
      },
      "updatedAt": "2026-11-07T16:01:24.824706262Z"
    }
  }
}
