Shared Runtime and AI Context
Local provider limits and AI context limits are independent. A response that fits an adapter’s local limit can still exceed the AI context limit. Request deadlines and cancellation also bound execution and result delivery.
Kubernetes
The Kubernetes guide explains targeted log arguments, truncation, permissions, and resource sizing. These bounds limit agent-side handling, not Kubernetes API server workload.
At most one Kubernetes entry may use in-cluster authentication. Additional
entries require mounted kubeconfigs. The shared 16-provider ceiling and runtime
concurrency limit apply across all Kubernetes clusters and other adapters. For
example, one Kubernetes cluster leaves room for 15 other provider instances,
while two Kubernetes clusters leave room for 14.
Prometheus
Set these keys under an instance’spolicy mapping to tighten its limits.
Omitted or zero local policy values select defaults. Positive values may tighten the bounds. Explicit tool limits and timeouts must be positive and cannot exceed local policy. The shared runtime concurrency bound also applies.
Metric-name and label-value discovery use GET-only upstream endpoints. Their aggregate request-target limit counts all selectors, percent-encoding, other parameters, and the configured endpoint path; individually valid arguments may need narrowing to fit. Metadata GETs share this bound. Query and label-name tools use form-encoded POST requests.
Loki
Set these keys under an instance’spolicy mapping to tighten its limits.
Omitted or zero values select defaults and never disable guardrails. Rootly AI SRE applies the lower of its reviewed ceiling and the instance’s advertised local policy. At most 16 provider instances can be configured in one process across all adapter types.
See the Loki guide for selector enforcement, index-stat estimation limitations, sentinel pagination, and pattern-query behavior.
Grafana Tempo
Set these keys under a Tempo instance’spolicy mapping to tighten its limits.
Omitted or zero values select defaults. Rootly applies the lower of its reviewed ceiling and the instance’s advertised local policy. Search, discovery, and metric windows must be at least one second.
tempo.get_trace can omit its window or provide both timestamps together. At most 16 external provider instances can be configured in one process across all adapter types.
See the Grafana Tempo guide for exact-instance and tenant routing, TraceQL tools, security boundaries, health, and the Tempo 2.10/3.0 compatibility matrix.
Pyroscope
Set these keys under a Pyroscope instance’spolicy mapping to tighten its limits.
Selectors are limited to 8,192 bytes, profile type IDs to 1,024 bytes, labels
to 255 bytes, and label or grouping arrays to 16 unique entries. Up to 16
external provider instances can run in one process across provider types.
Profile queries require a selective positive label matcher and an explicit,
positive time window.
maximum_result_bytes bounds the complete upstream JSON
response before normalization; the separate 128 KiB AI-context boundary still
applies. See the Pyroscope guide
for tenant routing, selector enforcement, tools, and compatibility.
Argo CD
Set these keys under an Argo CD instance’spolicy mapping to tighten its limits.
An instance can allow at most 100 distinct AppProjects. The complete upstream
response is capped at 16 MiB before parsing, then normalized into the lower
configured result budget. Application and resource names are limited to 512
bytes, filter expressions to 2 KiB, and the complete request target to 8 KiB.
Cluster inventory is a separate local opt-in. Secret and ConfigMap contents,
literal environment values, cluster credentials, managed fields, and
last-applied manifests are always removed. See the Argo CD guide
for upstream RBAC, tools, rotation, and compatibility.
PostgreSQL and MySQL
Set these keys under a PostgreSQL or MySQL instance’spolicy mapping to tighten its limits.
Each instance supports at most 64 allowed schemas for typed catalog diagnostics. Arbitrary SQL is not parsed or scoped by this list; the database login’s grants are its authorization boundary. These local limits apply in addition to those grants, the shared runtime concurrency ceiling, the invocation deadline, and the 128 KiB AI-context boundary.
maximum_result_bytes limits the encoded tool result returned to Rootly after the database driver has decoded each cell. It is an output/egress limit, not a pre-execution database or process-memory limit: the database and driver can still materialize one large value before the agent rejects the result. Limit the read-only identity to bounded investigative views, use database-side resource controls where appropriate, and size the agent container for the queries that identity can run.
See the PostgreSQL and MySQL guide for database grants, TLS, SQL execution, and compatibility details.
Kafka
Set these keys under a Kafka instance’spolicy mapping to tighten its limits.
Each instance accepts 1 to 32 bootstrap servers and up to 100 allowed and 100
denied topic patterns. Patterns are limited to 255 bytes and Kafka-safe ASCII
glob characters.
maximum_scan_records must be at least
maximum_messages. Omitted or zero numeric values select defaults and never
disable guardrails.
Message reads and message-value return are separate local opt-ins. Reads use
direct partition assignment, do not join a consumer group, and do not commit
offsets. All Kafka tools remain subject to the shared runtime concurrency and
128 KiB AI-context limits. See the Kafka guide for
authentication, topic scope, tool groups, and compatibility.
Redis and Valkey
Set these keys under each Redis or Valkey instance’spolicy mapping to
tighten its limits. Both provider types use the same bounds.
The provider accepts at most 16 addresses per instance and at most one for
standalone mode. A tool input is at most 1 KiB; each individual
INFO response
is capped at 64 KiB before field filtering. These limits do not bound work the
server performs to collect its own statistics, nor the raw arguments returned
by SLOWLOG GET before local redaction. A bounded diagnostic can also
be rejected by the shared 128 KiB AI-context limit. Rootly rejects returned
Redis/Valkey diagnostics that exceed the registered result-byte policy or
contain fields outside the reviewed output contract, including unredacted
slowlog arguments. See the Redis and Valkey guide
for authentication, tools, and tested
versions.
Elasticsearch and OpenSearch
Set these keys under an Elasticsearch or OpenSearch instance’spolicy mapping to tighten its limits.
Each instance requires 1 to 64 local index patterns after comma-separated entries are expanded. Each configured entry is limited to 1,024 bytes, and the combined entries are limited to 4 KiB so default health and discovery requests fit the request-target budget. Up to 128 simple source fields may be excluded, and search field selection is limited to 64 fields. Query DSL is also bounded by nesting, node, aggregation, bucket, and result limits enforced by the agent.
maximum_indices and maximum_shards are checked before every search-provider capability, including metadata discovery and health operations. OpenSearch Serverless enforces maximum_indices but does not expose a shard ceiling, so maximum_shards must be omitted for aoss providers. maximum_result_bytes applies to the tool result returned to Rootly. The agent requests only the fields needed for preflight index/shard scope validation and applies a separate fixed 1 MiB cap to that internal metadata, so tightening the visible result budget does not make a valid index scope unreadable. Query DSL query and aggregations objects are each bounded by maximum_query_bytes; the complete tool input has a separate hard 160 KiB allocation cap.
For Query DSL search and count, maximum_timeout_seconds is sent to the search engine and enforced as the agent’s client deadline. The synchronous ES|QL and PPL APIs do not expose a general execution timeout, so their limit is a client-side request deadline; upstream work may take a short time to observe cancellation. Native queries are also constrained by their mandatory row cap and the query/result byte limits above.
Omitted or zero policy values select defaults and never disable guardrails. The Rootly backend applies the lower of its reviewed ceiling and the instance’s advertised local policy. See the Elasticsearch and OpenSearch guide for the allowlist, field-exclusion, Query DSL, and native-language boundaries.
MCP
Set these keys under an MCP instance’spolicy mapping to tighten its limits.
Each tool input schema is limited to 64 KiB, 16 levels, and 2,048 schema nodes. One server may advertise at most 512 tools during bounded discovery, but only the exact locally allowlisted tools can become capabilities. The shared limit of 16 provider instances applies across all adapter types.
Each MCP instance’s normalized capability inventory is limited to 192 KiB. An oversized inventory makes that instance unhealthy and advertises no MCP tools, so it cannot prevent Kubernetes or another provider from registering. The complete provider snapshot is also checked locally against the 4 MiB control-plane limit with 64 KiB reserved for transport framing.
The direct non-SSE HTTP response is capped at 4 MiB while decoding. Every final normalized result must fit the lower configured result limit, and the existing 128 KiB AI-context limit still applies. See the internal MCP guide for schema reduction and unsupported client capabilities.
Internal HTTP APIs
Set these keys under an HTTP instance’spolicy mapping to tighten its limits.
Each provider permits 1 to 64 configured path prefixes, up to 2 KiB each, and up to 32 invocation-supplied request-header names. A query can contain up to 50 names and 100 scalar values per name. Query names are limited to 255 bytes, individual query and header values are limited to 8 KiB, and Rootly caps the encoded query at 24 KiB so the complete agent-side request target remains within 32 KiB after adding the base and invocation paths. Response headers are exposed only when locally allowlisted. The provider does not follow redirects and does not inherit environment proxy settings.
The health probe timeout is the lower of four seconds and the configured timeout, including any cold OAuth token exchange. Explicit HTTP health endpoints require a 2xx response; the default
/ probe also accepts 404 as origin reachability. Redirects, other non-2xx responses, transport failures, and TLS failures mark the provider unhealthy. See the internal HTTP guide for the fixed-origin boundary, credentials, and request behavior.