SentnelOpsSentnelOpsbeta
LAYER 3 · THE MCP GATEWAY

Gateway guides

Four operator tasks: route a real server through the gateway, read the live feed, hunt ghost agents, and export call evidence.

Route a real MCP server through the gateway

Two moves: tell SentnelOps where the upstream lives, then point your client at the proxy path. First, register the upstream (needs the security or admin role — or do it from the dashboard's Servers page):

Register the upstream
curl -s -X POST https://api.sentnelops.com/mcp-servers \
  -H "Authorization: Bearer $SNOPS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "github", "upstream_url": "YOUR_UPSTREAM_URL"}'

YOUR_UPSTREAM_URL is the url currently in your MCP client's configuration. The response includes the new proxy_path; re-posting the same name updates the upstream in place. Then point the client at the proxy — for Claude Code, one command:

Point the client at the proxy
claude mcp add --transport http github-governed \
  https://api.sentnelops.com/proxy/github/mcp \
  --header "Authorization: Bearer YOUR_AGENT_TOKEN"

YOUR_AGENT_TOKEN is the agent token from registration (layer 1). Cursor, Claude Desktop, and any header-capable MCP client work the same way — snippets for each are in Connect your AI tools. Make a tool call and it appears in the live feed within a second.

Read the live call feed like an operator

The Live MCP calls feed showing a stream of tool calls, most marked permitted in green and some marked would-block in red
The Live calls page — one row per proxied call, newest first, updating within a second.
ColumnHow to read it
Agent / Server / ToolWho called what. Non-tool traffic still shows up — the JSON-RPC method or request path stands in for the tool name.
DurationUpstream time in milliseconds. A sudden jump is the upstream slowing down, not the gateway — its overhead is ~2 ms.
StatusGreen permitted passed policy. error means the upstream was unreachable or returned a 5xx. blocked only appears once layer 4 enforcement is on.
Would block (red)The rows to study: the call went through (observe never blocks), but your policy would have denied it — the reason column names the rule. A clean stretch of green here is your green light for enforcement.
Blast radius / ReasonThe policy engine's risk score for this server+tool, and the violation reason on denied verdicts.
The feed is a tail, not the log — slow consumers drop oldest events. GET /mcp-calls is the durable record.

Hunt ghost agents

Ghosts are callers hitting your MCP servers without being registered — by definition they bypass the gateway, so you find them from the outside in. Collect observed caller identities from your MCP servers' own logs (client names, token subjects, agent ids), then open the dashboard's Ghosts page and paste them, one per line. The diff against the registry is computed as you type.

The ghost detection view comparing registered agents against observed callers, with an unregistered caller flagged as unaccounted for
The ghost diff — matched callers, red ghosts nobody registered, and amber silent agents that never showed up in traffic.

When you find a ghost: first identify the owner — a ghost is usually a teammate's unregistered experiment, not an attacker. If it's legitimate, register it and route it through the proxy so it stops being invisible. If nobody claims it, revoke its credentials at the upstream — the gateway cannot cut off traffic that never passes through it. And treat the amber silent list as the mirror-image finding: registered agents generating no traffic are decommission candidates.

Export call evidence

The durable call log is queryable with filters — by agent, by verdict, by status — and pageable with limit (max 1000) and offset:

Filtered call history
curl -s "https://api.sentnelops.com/mcp-calls?agent_id=YOUR_AGENT_ID&would_block=true" \
  -H "Authorization: Bearer $SNOPS_API_KEY"

For auditors and SIEM ingestion, one request produces a CSV of every call in the window (default 30 days, tune with days):

SIEM-ready CSV
curl -s "https://api.sentnelops.com/mcp-calls/export.csv?days=90" \
  -H "Authorization: Bearer $SNOPS_API_KEY" -o mcp_calls.csv

Both endpoints need only the viewer role. The CSV carries the same fields as the API minus raw params — see the reference for the full row schema.