> ## Documentation Index
> Fetch the complete documentation index at: https://docs.auxilian.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Limits and quotas

> Usage limits that keep Auxilian free: projects, seats, tables, columns, storage, request sizes, and rate limits.

Auxilian is free, and these limits keep it that way. They apply equally to the web app and MCP tools. When you reach one, the request fails with a message that names the limit.

## Workspaces

| Limit | Value | Error code |
| - | - | - |
| Projects per workspace | 10 | `QUOTA_EXCEEDED` |
| Members plus pending invitations per workspace | 25 | `QUOTA_EXCEEDED` |

## Projects and tables

| Limit | Value | Error code |
| - | - | - |
| Tables per project | 25 | `QUOTA_EXCEEDED` |
| Columns per table, not counting `id` and `created_at` | 50 | `QUOTA_EXCEEDED` |
| Storage per project | 50 MB | `QUOTA_EXCEEDED` |

### How storage is measured

Storage is the on-disk size of every table in the project, including indexes and large-value storage. Auxilian checks it before each insert, update, table creation, and column addition. Once the project reaches 50 MB, those writes are refused. Reads, exports, row deletes, and drops still work.

To get back under the limit, drop tables you no longer need. Dropping a table frees its space immediately.

<Note>
  Deleting rows doesn't reliably lower the measured size. Postgres keeps the space inside the table and reuses it for new rows rather than shrinking the table on disk. To compact a large table, export it to CSV, drop it, and recreate it with only the rows you need.
</Note>

## Rows and values

| Limit | Value | Error code |
| - | - | - |
| Rows per insert | 100 | `VALIDATION` |
| Size of one value | 16 KB | `VALIDATION` |
| Size of one row | 64 KB | `VALIDATION` |
| Rows per read (`list_rows`) | 25 by default, 100 maximum | Clamped, not an error |
| Rows per CSV export | 10,000 | Truncated, not an error |
| Query time | 5 seconds | `VALIDATION` |

## Rate limits

| Budget | Value | Applies to |
| - | - | - |
| MCP tool calls | 300 per minute per user | Every MCP tool call |
| Writes | 60 per minute per user | MCP write tools and web app changes, combined |
| Sign-in attempts | 30 per minute per IP address | Web sign-in |
| MCP client registrations | 10 per minute per IP address | Dynamic client registration |

When a budget runs out, wait a minute and retry. MCP tools return `RATE_LIMITED`, and the web app shows `Too many changes in a short time; wait a minute and try again`.

<Tip>
  To load lots of data within the write budget, insert 100 rows per call. 60 calls of 100 rows is 6,000 rows per minute.
</Tip>

## Activity log retention

Activity events are kept for 90 days. The web app shows the 100 most recent.

## Need more?

If a limit blocks a real use case, email [support@auxilian.co](mailto:support@auxilian.co) and describe what you're building.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.