# Agent Trust Map
When AI agents interact through MCP tool calls, SolonGate tracks which agent made each call, computes a trust score per agent, and visualizes trust relationships in an interactive graph. Available in the dashboard under Trust Map.
Why Trust Map? When multiple AI agents (Claude Code, Cursor, custom bots) access the same MCP servers through SolonGate, you need visibility into who does what. Which agent triggers the most denials? Which agents share tools? Is a new agent behaving suspiciously?
How It Works
The trust map works in 4 steps, from identity capture to visualization:
Agent Identity Capture
CLI flag, HTTP headers, or MCP clientInfo
Audit Log with Agent ID
Every tool call tagged with agent identity
Trust Score Computation
Based on allow/deny ratios and PI detections
Dashboard Visualization
Interactive force-directed graph
Agent Identity Sources
SolonGate captures agent identity from 3 sources, in priority order. The first available source is used:
CLI Flag
--agent-name "My Agent"
HTTP Headers
X-Agent-Id, X-Agent-Name
MCP ClientInfo
Auto-detected from initialize
Note: Most MCP clients (Claude Code, Cursor) automatically send their name via the MCP initialize handshake. For custom agents, use --agent-name or HTTP headers.
Setup
Trust map works automatically with zero configuration. Agent identity is captured from MCP client info on every connection. For explicit control:
Option 1: CLI Flag (stdio mode)
1# Name the agent explicitly2solongate-proxy --agent-name "Claude Code" --api-key sg_live_xxx -- npx @playwright/mcp@latest34# The proxy will tag all audit logs with agent_id: "claude-code"5# and agent_name: "Claude Code"
Option 2: HTTP Headers (HTTP mode)
1# Start proxy in HTTP mode2solongate-proxy --port 3100 --api-key sg_live_xxx -- npx @playwright/mcp@latest34# Send requests with agent identity headers5curl -X POST http://localhost:3100/mcp \6 -H "X-Agent-Id: my-custom-bot" \7 -H "X-Agent-Name: My Custom Bot" \8 -H "Content-Type: application/json" \9 -d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"file_read","arguments":{"path":"README.md"}}}'
Option 3: Automatic (MCP ClientInfo)
1// When an MCP client connects, SolonGate reads clientInfo from the2// initialize handshake — no configuration needed.3//4// Example: Claude Code sends:5// { "name": "claude-code", "version": "1.0.32" }6//7// SolonGate captures this as:8// agent_id: "claude-code/1.0.32"9// agent_name: "claude-code"
Trust Score Algorithm
Each agent gets a trust score from 0 to 1 (shown as 0-100%) based on their behavior:
allowedCalls / totalCalls
1 - (piDetections / totalCalls)
Active in last 24h = 1.0, 7d = 0.5
trustScore = (allowRate * 0.6) + (cleanRate * 0.3) + (recency * 0.1)Trust Levels
Trust scores map to visual indicators on the graph and table:
80-100%
Agent behaves normally, few denials
60-79%
Some denials or PI detections
40-59%
Significant denials or PI activity
0-39%
Mostly denied, potential threat
Agent Relationships (Edges)
The trust map doesn't just show individual agents — it shows how they relate to each other through shared tool usage.
Shared Tool Usage
Two agents are connected if they both called the same tool(s) within the same project. For example, if Agent A and Agent B both use file_read and shell_exec, they share an edge.
Edge Thickness
Thicker edges mean more shared interactions. Edge trust score is the minimum of both agents' trust scores.
API Reference
The trust map data is available via the REST API:
1# Get trust map data2curl -H "Authorization: Bearer sg_live_xxx" \3 "https://api.solongate.com/api/v1/trust-map?period=7d"45# Response:6{7 "nodes": [8 {9 "id": "claude-code/1.0.32",10 "name": "claude-code",11 "trustScore": 0.92,12 "totalCalls": 150,13 "allowed": 145,14 "denied": 5,15 "piDetections": 1,16 "lastSeen": "2026-03-14T10:00:00Z"17 }18 ],19 "edges": [20 {21 "source": "claude-code/1.0.32",22 "target": "cursor/0.45",23 "sharedTools": ["file_read", "shell_exec"],24 "interactionCount": 23,25 "trustScore": 0.8526 }27 ],28 "summary": {29 "totalAgents": 3,30 "totalInteractions": 45,31 "avgTrustScore": 0.8832 }33}
Query Parameters
| Parameter | Default | Description |
|---|---|---|
period | 30d | Time window: 24h, 7d, or 30d |
Testing the Trust Map
To verify the trust map is working end-to-end:
Run proxy with an agent name
1solongate-proxy --agent-name "Test Agent" --api-key sg_live_xxx -- npx @playwright/mcp@latest
Make some tool calls through the proxy
Use Claude Code, Cursor, or any MCP client connected through the proxy. Each tool call is logged with the agent identity.
Check the API
1curl -H "Authorization: Bearer sg_live_xxx" \2 "https://api.solongate.com/api/v1/trust-map"
You should see your agent in the nodes array.
Open the Dashboard
Go to Trust Map in the sidebar. Your agent should appear as a node with its trust score. If multiple agents connect, edges will form between agents that share the same tools.
Sub-Agent Tracking
When an AI client spawns sub-agents (e.g. Claude Code's Task tool), they share the same MCP connection. SolonGate can still track each sub-agent individually using the MCP _meta field or HTTP headers.
Option 1: MCP _meta field
Include sub-agent identity in the _meta field of each tools/call request:
1{2 "jsonrpc": "2.0",3 "method": "tools/call",4 "params": {5 "name": "file_read",6 "arguments": { "path": "README.md" },7 "_meta": {8 "io.solongate/agent": {9 "id": "researcher",10 "name": "Research Agent"11 }12 }13 }14}
The proxy reads io.solongate/agent from _meta and creates a composite agent ID: parent-agent::researcher. This appears as a separate node in the trust map, linked to its parent.
Option 2: HTTP Headers (HTTP mode)
1# Start proxy in HTTP mode2solongate-proxy --port 3100 -- npx @playwright/mcp@latest34# Send requests with sub-agent identity5curl -X POST http://localhost:3100/mcp \6 -H "X-Agent-Id: claude-code" \7 -H "X-Sub-Agent-Id: researcher" \8 -H "X-Sub-Agent-Name: Research Agent" \9 -H "Content-Type: application/json" \10 -d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"file_read","arguments":{"path":"README.md"}}}'
Visual cue: Sub-agents appear as smaller nodes with dashed borders in the trust map. Parent→sub-agent edges are shown as dotted lines.
Tips
Click a node in the graph to highlight its connections and see detailed stats.
Period selector lets you view 24h, 7d, or 30d of data. Use shorter periods for recent activity.
No agents showing? Make sure you're using a sg_live_ key. Test keys (sg_test_) skip audit log forwarding.