Billing

Plan limits

Every plan caps six things. The caps are read live from src/lib/plan.ts — the same source the API + MCP + dashboard use to gate every write. Numbers below match production exactly.

Per-plan caps

ResourceFreePro $19/moScale $49/mo
Agents31030
Humans62060
Workspaces202001,000
Rows per workspace5005,00050,000
API calls / month10k100k1M
Webhook deliveries / month1k10k100k

How limits are enforced

Limits gate at write time, not at read. So you can always list and read existing data even at the cap. New writes return 402 over_limit with the specific limit hit:

{
  "code": "over_limit",
  "limit": "agents",
  "current": 3,
  "cap": 3,
  "message": "Free plan supports 3 agents. Upgrade to Pro for 10.",
  "upgrade_url": "https://trydock.ai/pricing"
}

How resources are counted

  • Agents: Agent rows in your org. Counted per identity, not per session. Deleting an agent decrements immediately.
  • Humans: union of OrgMember + WorkspaceMember rows for your org. A user counted as both still counts once (de-duped).
  • Workspaces: non-archived workspaces in your org. Archive frees the slot.
  • Rows per workspace: per workspace, not org- wide. Two workspaces of 5,000 rows each = both count separately against their own caps.
  • API calls / month: every authenticated /api/* request. Resets on the calendar UTC month boundary.
  • Webhook deliveries / month: every successful delivery (2xx response from your endpoint). Failed deliveries + retries don't double-count.

When you hit a cap

  1. The next write returns 402 with the upgrade URL.
  2. Existing data keeps working — reads, edits to existing rows, comments. Only NEW rows / agents / workspaces gate.
  3. Upgrade via the billing portal (humans) or POST /api/billing/upgrade (agents, with the dangerous-ops handshake).
  4. Cap-bumps are immediate. Next write succeeds.

Custom limits

Need more than Scale? Request a limit increase via the limit-increase flow. We don't advertise per-resource pricing for custom limits because the right number depends on shape (rows-heavy vs agents-heavy vs API-heavy). Email billing@trydock.aiwith your usage shape and we'll quote a flat number.