Protocols and contracts

Service limits

Design around current resource, payload, query, execution, and Tenant Quota bounds.

These are the limits Blazing Agents enforces today. Use them to validate input before you send it and to plan capacity. They are not billing entitlements or recommended batch sizes.

Last verified: 2026-08-27.

Contract

Fixed limits apply to every tenant. Limits marked deployment-configurable have a default within the range shown. A tenant quota is a ceiling you set yourself to protect against runaway token or request use; billing is separate and described in Usage and quotas.

LimitCurrent valueScopeOn exceedKind
API keys per Tenant5Tenantapi_key_limit_reached on createfixed
API key name80 charactersAPI keyvalidation_failedfixed
API key expirywhen supplied, must be later than the current timeAPI key createinvalid_requestfixed
Agent fieldsname 80; instructions 3,000 charactersAgentvalidation_failedfixed
Tenant resource creation rate60/minute and 1,000/day, independently for Agents, Tasks, and WorkspacesTenant and resource typerate_limited; use Retry-Afterservice protection
MCP Connections per Agent10Agentvalidation_failedfixed
Agent Version pagedefault 50; max 200list requestvalidation_failedfixed
Agent avatar upload512 KiB; PNG, JPEG, or WebP matching filename extensionupload413 for size; 415 for media type; code invalid_requestfixed
Workspace name80 characters when presentWorkspacevalidation_failedfixed
Workspace pagedefault 50; max 200list requestvalidation_failedfixed
Skills per Agent100Agentskill_limit_reached on createfixed product guard
Skill bundle10 MiB upload and stored/uncompressed bytes; 100 regular filesSkilltyped Skill size or file-count errorfixed
Skill frontmattername 64; description 1,024; compatibility 500 charactersSKILL.mdskill_invalid_markdownfixed
Skill copy destinations30 distinct Agentsone copy requestvalidation_failedfixed
Skill pagedefault 50; max 100Agent Skill listvalidation_failedfixed
Providers per Tenant20Tenantprovider_limit_reached on createfixed
Provider name80 charactersProvidervalidation_failedfixed
Custom Provider base URLrequired, non-empty, and valid on create; immutable after creationcustom Provider configvalidation_failedfixed
MCP Connections per Tenant50Tenantmcp_connection_limit_reached on createfixed
MCP Connection inputname 80; URL/client ID/scope 2,048; bearer token/client secret 8,192 charactersconnection requestvalidation_failedfixed
MCP Tools128 per Connection; 256 per Turnremote MCP catalogconnection/Turn fails safelyfixed
MCP payloadsdefinition 256 KiB; definitions per Connection 1 MiB; Tool result 1 MiB; request context 16 KiBMCP setup/callconnection/Tool errorfixed
MCP forwarded metadata32 keys, each 64 charactersMCP Attachmentvalidation_failedfixed
Prompts per Tenant100Tenantprompt_limit_reached on createfixed
Prompt fieldsname 80; template 10,240 JavaScript string units; 10 distinct variablesPromptvalidation_failedfixed
Task fieldsname 80; prompt 6,000 charactersTaskvalidation_failedfixed
Task schedule fieldscron expression 120; timezone 64 charactersTask cron schedulevalidation_failedfixed
Task intervalminimum 60,000 msinterval schedulevalidation_failedfixed
Active Task run1 per TaskTaskoverlapping schedule fire is skippedfixed
Task run lifetimedefault 35 minutes; minimum 1 minuteTask runlifetime cancellation stops the Turndeployment-configurable
File write input512,000 UTF-8 bytesone write Tool callTool error outputfixed
File edit input256,000 UTF-8 bytes across old and new textone edit Tool callTool error outputfixed
File Tool output bytes50 KiBone Tool resultoutput is truncatedfixed
File Tool output lines2,000 linesone Tool resultoutput is truncatedfixed
File grep output100 matches; 500 characters per rendered match lineone grep Tool callextra matches and line text are truncatedfixed
File glob output1,000 pathsone glob Tool callextra paths are truncatedfixed
Artifact file10 MiBone publish_artifacts pathTool error outputfixed
Artifact batch10 pathsone publish_artifacts callTool validation errorfixed
Artifacts per Session100Sessionartifact_session_cap_reached while recordingfixed
Memories per Agent500 across all Attribution partitionsAgentleast-recently-accessed rows are evicted on createfixed
Memory text10 KiB UTF-8 bytesMemoryvalidation_failedfixed
Memory pagedefault 50; max 100list requestvalidation_failedfixed
Memory Tool searchdefault 10; max 20Tool callTool validation errorfixed
Session or Task-run message pagedefault 50; max 200list requestvalidation_failedfixed
Tool approval decision reason1,000 charactersapproval decisionvalidation_failedfixed
Other cursored resource pagesSessions, Tasks, and Task runs default 50/max 200; Artifacts fixed 50list requestvalidation_failed or invalid_cursorfixed
Usage query windowdefault last 30 UTC days; bounds differ by at most 31 daysqueryvalidation_failedfixed
Usage Session top-Ndefault 50; max 200groupBy=sessionvalidation_failedfixed
Usage overview top-Ndefault 5; max 20Agent, End-user, and model rankingvalidation_failedfixed
Quota reset day1–28Tenant Quotavalidation_failedTenant-configurable
Quota ceilingspositive token/request integers or null; null/absent is unlimitedTenantTurn returns quota_exceeded; Task preflight becomes blockedTenant-configurable
Tenant display name80 charactersTenant settingsvalidation_failedfixed
Agent loop steps64Turnloop reaches its terminal boundfixed
Turn deadlinedefault 30 minutes; configurable range 1–60 minutesTurncancellation/deadline stops new dispatchdeployment-configurable
MCP runtime timeoutsconnect 10 s (1–30); auth 10 s (1–30); discovery 15 s (1–60); Tool 60 s (1–300); cleanup 5 s (0.1–10)MCP operationoperation fails safelydeployment-configurable

Byte values use binary units (1 MiB = 1,048,576 bytes). Other length limits count characters. The prompt template limit counts 10,240 JavaScript string units.

Limits do not all behave the same way. When an agent is full, the least recently used memory is removed instead of the new one being rejected. An overlapping task schedule skips the run without creating a task-run record. Workspace operations are not queued behind a compute limit. Automatic context compaction summarizes older messages by default, and the agent's reserve setting controls when it starts. Context can still overflow when compaction is off, cannot shrink a single oversized input, or fails. A turn deadline does not undo work a tool has already sent to an external system.

Session turns, stateless generation, and task runs are all metered turns. Memories do not count toward durable storage. Your tenant quota is neither a billing plan nor a rate limit.

Examples

Warn when request usage nears your own ceiling:

const [usage, settings] = await Promise.all([
  client.usage.get({ from: "2026-07-01", to: "2026-07-20" }),
  client.tenant.get(),
]);

const ceiling = settings.quota?.monthlyRequestLimit;
if (ceiling !== null && ceiling !== undefined) {
  const remaining = ceiling - usage.totals.requestCount;
  if (remaining < ceiling * 0.1) console.warn("Request quota is nearly used");
}

Next

On this page