Allostatic State
state returns the brain's current load on a rest / engaged / overloaded scale, with the numbers behind the verdict. A memory product that knows when it is tired.
The name comes from allostatic load — the body's measure of cumulative stress over a window. Mneva tracks the analog for an agent brain: how hard has it been working, with how much volatility, against how much headroom.
What state returns
{
"state": "overloaded",
"load": 20.0,
"variance": 0.0,
"reserve": 0.67,
"active_minutes": 1,
"window_minutes": 60,
"last_active": "2026-05-23T00:14"
}
- state —
rest/engaged/overloaded. The summary verdict. - load — mean tool calls per minute across active minutes in the last 60 min. Active minutes only — a brain that's quiet does not read as "low load," it reads as "rest."
- variance — standard deviation across the active minutes. A spiky workload reads differently from a steady one.
- reserve — headroom against a soft 60/min per-tenant cap.
1.0= empty,0.0= at the cap. - active_minutes / window_minutes — denominator transparency.
- last_active — minute-truncated ISO timestamp of the most recent activity.
The verdict
The verdict is computed from load and variance:
load > 15OR (load > 4ANDvariance > load × 1.5) → overloadedload >= 2→ engaged- otherwise → rest
The spiky-burst clause matters. Sustained moderate use is fine. A short burst on top of moderate base is its own kind of stress, even at modest mean. An agent that's doing a hot reactive loop reads overloaded even before pure-rate would say so.
How load is measured
Every /v1/* request (except /v1/state itself, to avoid polling-inflated load) ticks a per-minute counter:
tenant_activity (
project TEXT,
minute TEXT, -- ISO YYYY-MM-DDTHH:MM
tool_calls INTEGER,
PRIMARY KEY (project, minute)
)
state rolls the last 60 minute-rows into mean/variance/reserve on the fly. No daemon, no batch — the read computes from raw activity, always fresh.
Why it is a tool
Most products would put this on an admin dashboard. Mneva puts it on the agent's MCP surface deliberately. The agent should know when its own brain is loaded — that's the signal to slow down, batch less aggressively, verify more carefully, not pile new work on top of unresolved work.
The agent can call it. The dashboard can call it. They both see the same number. There is no special admin view.
See also
state— the toolGET /v1/state— the REST endpoint