ChatBlocks has three plans. Limits are enforced at create-time on the server — there’s no soft cap or “grace” behavior; over-limit writes returnDocumentation Index
Fetch the complete documentation index at: https://docs.chatblocks.ai/llms.txt
Use this file to discover all available pages before exploring further.
LIMIT_REACHED and the resource isn’t created.
Coding agents: call the MCP
workspace.get tool before writes to fetch the current limits payload. Each resource includes used / max / resetsAt so you can preflight and skip the write rather than burning a tool call on a 4xx. For period-based limits (builds, AI generation), resetsAt is the first of next month in UTC; count-based limits return null for resetsAt.Plans
| Plan | Price | Who it’s for |
|---|---|---|
| Free | $0 | Trying out the platform. Hard caps on everything that costs money. |
| Builder | 89 / year | Solo operators. Single-paying-owner model with read-only co-members. |
| Enterprise | Contact sales | Teams, custom caps, manual plan flip — no Stripe subscription. |
workspaces.plan is exactly "free" | "builder" | "enterprise".
Per-resource caps
These are the v1.4 limits, sourced fromapps/web/convex/lib/limits.ts:
| Resource | Free | Builder | Enterprise |
|---|---|---|---|
| Blocks | 10 | 100 | 10,000 |
| Canvases | 2 | 20 | 1,000 |
| Scheduled runs | 1 | 5 | 500 |
| Data sources (per type) | 1 | 10 | 100 |
| BYOK keys | 0 | 3 | 50 |
| Workspace members | 1 | unlimited | unlimited |
| Builds per month | 100 | 1,000 | 100,000 |
| AI-generated blocks per month | 0 | 30 | 10,000 |
| MCP requests per minute | 60 | 600 | 6,000 |
- Data sources are capped per type — Free can have 1 Stripe, 1 Postgres, 1 webhook, and 1 outbound MCP simultaneously. Total cap across types is 4, not 1.
- BYOK keys = 0 on Free. You can’t bring an Anthropic / OpenAI / Google key on Free, which means you can’t run scheduled-run agents or use
blocks.createAI generation. The free authoring path is the in-app editor and the MCPblocks.init+setFiles+build+publishloop with your agent (your agent’s tokens, not ours). - AI-generated blocks per month = 0 on Free —
blocks.create(the streaming AI-generation tool) is Builder-only.blocks.init(scaffold without AI) is free on every plan. - Members. Builder is one operator: the owner has write powers, and any co-members are viewers (read-only). See Workspaces → Builder co-member model.
- MCP rate limit is per-key, sliding window. Different keys on the same workspace get independent budgets.
Trial and refund policy
Upgrading to Builder gives you a 14-day free trial. A card is required up-front (Stripe Checkout); the trial converts to paid on day 15 unless you cancel via the Customer Portal. No refunds. The trial is the refund — if Builder isn’t right for you, cancel during the trial and you’re never charged. This is shown on the Stripe Checkout page itself viacustom_text.submit.message (“14-day free trial included. All sales final after the trial.”) and again on /settings/billing.
Upgrading
Workspace admins trigger an upgrade from/settings/billing → “Upgrade to Builder” → Stripe Checkout (hosted, no UI on our side). On checkout.session.completed, the workspace’s plan flips to builder and the limit table jumps immediately.
Plan switching, cancellation, and card updates all happen in the Stripe Customer Portal, also hosted. The portal link is on /settings/billing for admins of a paid workspace.
Enterprise plans are flipped manually by us — there’s no self-serve path. Contact us if you need higher caps or a non-Stripe billing arrangement.
Reading limits programmatically
Two endpoints surface the samelimits payload:
- MCP
workspace.get— for agents. Returns{ id, name, slug, plan, member_count, limits: { blocks, canvases, schedules, buildsPerMonth, aiGenPerMonth, dataSources, byokKeys, members } }. Each resource includesused,max, andresetsAt. - Convex
api.mcp.tools.getMyWorkspaceLimits— for the web UI. Same payload, member-gated, used by/settings/billing.
max: null represents Infinity on the wire (members on Builder/Enterprise). used: null on buildsPerMonth and aiGenPerMonth means the rate-limiter doesn’t expose current consumption — only the cap. Period-based limits return a monthly resetsAt; count-based limits return null.
What’s next
Billing → Plans
Pricing detail, line items, what’s included.
Billing → Trial and portal
How the trial works, how to cancel, and what the Customer Portal can do.