An MCP server needs a credential for whatever it talks to. The question is who holds it. In Statio the answer is never the agent.
A credential you add to Statio:
The practical consequence: a compromised agent cannot leak the credential, because it was never given it. It can only make the calls it was already permitted to make — which are logged.
Open a server, go to Credentials, and add the value the upstream expects. That is the last time it is visible. To change it, replace it; there is no read path.
Warning
Rotating upstream means rotating here too. Statio cannot detect that a key was revoked at the other end — the calls simply start failing, and the audit log shows the upstream's rejection.
Nothing. The agent sends a tool call to the gateway and gets the upstream's response. Headers carrying the credential are added after the permission check and are not visible in anything returned to the caller.
A managed MCP server runs with no direct route to the internet. Its outbound traffic goes through a proxy that enforces an allowlist you set.
That matters because credential injection alone would not stop a compromised server from sending your data somewhere else. The allowlist is enforced outside the container, so it holds even when the server itself is doing something it should not.
api.example.com allows exactly that host.*.example.com allows subdomains, and not example.com itself.Blocked attempts are recorded. A destination appearing there that should be allowed means it is missing from your list.
Note
Egress rules apply to servers Statio runs. A server you host yourself is outside that boundary — Statio still governs who may call it and with which credential, but where it can send traffic is yours to control.