Statio

Documentation
API Reference
Changelog
concepts/People and agents

People and agents

Every tool call through Statio is made by someone the gateway can name. There are two kinds of someone: a person working in a client like Claude Code or Cursor, and an agent, a piece of automation with an identity of its own.

A personAn agent
Who it isA member of your organizationA non-human principal created under Settings → Agents
CredentialTheir sign-in, on a device enrolled by the desktop app or mcphub loginA client ID and client secret
TokenBound to a key on their device, renewed by the local proxyLives five minutes, exchanged from the secret
GrantsTheir own, plus their teams'Its own, given to the agent directly
Shows up in Activity asThe personThe agent

When to use which

Use a person for interactive work: someone in their editor asking an AI client for help. The desktop app configures the client, the calls run as that person, and their grants decide what the client can do.

Use an agent for anything that runs without someone at the keyboard: a CI job, a scheduled task, an orchestrator, a bot. Giving automation a person's access means it acts with everything that person can do, stops working when they leave, and its calls are indistinguishable from theirs in the log. An agent fixes all three: it holds only the grants you give it, it belongs to the organization, and every call it makes is attributed to it.

Creating an agent

Open Settings → Agents and choose New agent:

  • Name, such as ci-deployer.
  • Description: what the agent does, so the next person knows whether it is safe to revoke.
  • Accountable member: a person in the organization who takes responsibility for every grant the agent holds. It defaults to you; only an admin can name someone else.

Then issue a credential. The client secret is shown once, so put it straight into your secret store. Finally grant the agent the tools it needs, the same way you grant them to a person. A new agent can call nothing.

Signing in as an agent

The simplest path is to let mcphub hold the credential. It keeps the secret in the system keychain and renews the token before it expires:

Bash
export STATIO_CLIENT_SECRET='<client secret>'
mcphub agent login --client-id <client id> --client-secret-env STATIO_CLIENT_SECRET
unset STATIO_CLIENT_SECRET
mcphub serve

mcphub serve runs the local proxy on 127.0.0.1:7777, signed in as the agent. Point the client at http://127.0.0.1:7777/<server-name>/mcp with no header. Prefer --client-secret-env over --client-secret: a value passed on the command line is visible in the process list.

An agent can also exchange its credential for a token itself and send it as Authorization: Bearer <token> to https://api.statio.dev/<server-name>/mcp. The token expires after five minutes, so anything long-running should use mcphub serve instead of a fixed header.

Rotating a credential

An agent can hold two active credentials at once, so rotation needs no downtime: issue a new credential, move the agent over to it, then revoke the old one. A third cannot be issued until one of the two is revoked.

Stopping an agent

ActionWhat it doesReversible
SuspendThe agent stops working until you resume itYes, Resume
Revoke a credentialThat client ID stops working; the agent and its other credential carry onNo
Revoke the agentThe agent is retired for goodNo
ExpiryAn agent with an expiry date stops working after itNo

Grant decisions are cached for up to 15 seconds and an agent's token lives five minutes, so suspending or revoking takes effect within that window, not a day later.

Needs attestation

If the accountable member can no longer be accountable (they left the organization, for instance), the agent is frozen and shows Needs attestation. It cannot call tools until someone names a new accountable member with Re-attest. An agent is never left running with nobody responsible for it.

Why API keys cannot call tools

API keys, under Settings → API Keys, automate the control plane: deploys, the registry API, CI pipelines that ship servers. The gateway refuses them on tool calls with "API keys cannot call tools".

A key acts as the person who created it, with every grant that person holds. Using one to call tools would bring back exactly the problem Statio removes: one broad credential, shared by whatever holds it, with calls that look like a person's in the log. For automation that calls tools, create an agent.

See also
Was this page helpful?
© Statio