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

# Limits

> Every number the API enforces, in one place.

## Identity and agents

| Limit | Value |
| - | - |
| Identity value | 512 UTF-8 bytes, no control characters |
| Tags per agent | 32 |
| Budget window | `24h`, `7d`, or `total` |

## Profiles, roles, and hooks

| Limit | Value |
| - | - |
| Model selectors per profile | 8 (at least 1) |
| Model selector length | 512 characters |
| System prompt | 4096 bytes |
| Hooks per profile | 16 |
| Roles per profile | 8 |
| Roles per workspace | 64 |
| `allow` entries per role | 32 |
| `deny` entries per role | 32 |
| Conditions per grant or hook match | 8 |
| Condition value | 512 bytes |
| Tool selector length | 176 bytes |

## Messages and memory

| Limit | Value |
| - | - |
| Content blocks per message | 40 |
| Image blocks per message | 20, unique IDs |
| Encoded message JSON | 512 KiB |
| Text per user message | 8 KiB |
| Text per assistant message | 64 KiB |
| Memory value | 40 KiB after JSON decoding |

## Toolsets

| Limit | Value |
| - | - |
| Namespace | 32 characters of `[a-z0-9_-]`, starting with a letter or digit |
| Toolset URL | 2048 bytes, HTTPS, no query or fragment |
| Client tool input or output schema | 16 KiB |
| Client tool `timeoutMs` | 10 s to 24 h, or `0` for the runtime default |

## Feeds and subscriptions

| Limit | Value |
| - | - |
| Feed name | 128 characters matching `^[a-z0-9][a-z0-9._/-]{0,127}$` |
| Feed description | 4096 bytes |
| Tags per feed or message | 16, each at most 64 bytes |
| Messages per append | 100 |
| Text per feed message | 32 KiB |
| Text and tags per append request | 256 KiB |
| Read `tailOffset` | 10000 |
| Subscription `intent` | 4096 bytes |
| Subscription window cadence | 30 to 86400 seconds |

## Schedules and hooks timing

| Limit | Value |
| - | - |
| Schedule name | 120 characters |
| Hook `asyncTimeoutMs` | 24 h maximum; 24 h default for `client`, 1 h for `url` and `agent` |
| Hook `timeoutMs` | 30 s for `url`, 5 min for `agent` |

## Pagination

| Endpoint | `limit` maximum |
| - | - |
| `GET /v1/agents/{agentId}/schedules` | 100 (default 20) |
| `GET /v1/feeds` | 200 (default 50) |
| `GET /v1/feeds/{feedId}/messages` | 200 (default 100) |
| Every other list endpoint taking `limit` | 200 |

Those list responses return `nextCursor` when more rows remain; pass it back as
`cursor`. Two endpoints work differently: feed message reads page by sequence
range (`startSeq`, `endSeq`, `nextSeq`), and
`GET /v1/threads/{threadId}/queue` returns the whole pending queue as one
array.


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