Tool Filtering
Control which tools are available per request
DeepIntShield can act as an MCP server, exposing the connected MCP tools allowed for an authenticated Virtual Key to external clients such as Claude Desktop, Cursor, or any other MCP-compatible application.
This enables a powerful pattern:

| Endpoint | Method | Purpose |
|---|---|---|
/mcp | POST | JSON-RPC 2.0 messages for tool discovery and execution |
/mcp | GET | Server-Sent Events (SSE) for persistent connections |
Handle JSON-RPC 2.0 messages for tool listing and execution:
# List available toolscurl -X POST https://app.deepintshield.com/mcp \ -H "Authorization: Bearer sk-ds-your-virtual-key" \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "id": 1, "method": "tools/list" }'
# Call a toolcurl -X POST https://app.deepintshield.com/mcp \ -H "Authorization: Bearer sk-ds-your-virtual-key" \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": { "name": "filesystem-read_file", "arguments": { "path": "/tmp/test.txt" } } }'Establish a persistent SSE connection for real-time communication:
curl -N https://app.deepintshield.com/mcp \ -H "Authorization: Bearer sk-ds-your-virtual-key" \ -H "Accept: text/event-stream"The SSE endpoint sends:
connection/opened message on connectThe /mcp endpoint supports any MCP-compatible client that can communicate via HTTP or SSE:
To connect an external MCP client, configure it to connect to:
https://app.deepintshield.com/mcpInclude a valid Virtual Key authentication header (Authorization: Bearer sk-ds-your-virtual-key) so the gateway can resolve the tools available to that
key. Anonymous access is not supported.
Every /mcp request requires a valid, active Virtual Key persisted in
DeepIntShield. Each key receives its own filtered MCP server. A key with no MCP
client binding receives an empty catalogue; use an explicit * tool rule on a
bound client when that key should receive every tool from that client.
Authenticate with Virtual Key (Virtual Keys start with the sk-ds- prefix):
# Via Authorization headercurl -X POST https://app.deepintshield.com/mcp \ -H "Authorization: Bearer sk-ds-your-virtual-key" \ -H "Content-Type: application/json" \ -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}'
# Via x-api-key headercurl -X POST https://app.deepintshield.com/mcp \ -H "x-api-key: sk-ds-your-virtual-key" \ -H "Content-Type: application/json" \ -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}'
# Via x-deepintshield-vk headercurl -X POST https://app.deepintshield.com/mcp \ -H "x-deepintshield-vk: sk-ds-your-virtual-key" \ -H "Content-Type: application/json" \ -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}'
# Via x-goog-api-key headercurl -X POST https://app.deepintshield.com/mcp \ -H "x-goog-api-key: sk-ds-your-virtual-key" \ -H "Content-Type: application/json" \ -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}'When Agentic-New GAF is enabled, the key must also resolve one enabled governed
agent in the active workspace. Send X-Agent-Subject when the key is associated
with multiple agents. If the selected agent uses an identity provider, send its
verified child workload credential in X-Agent-Token. Tool execution then
requires the same canonical GAF Allow as
POST /v1/mcp/tool/execute; a Deny, pending approval, or
unavailable authorization dependency is returned as an MCP tool error result.
Claude Desktop with Virtual Key:
{ "mcpServers": { "deepintshield-production": { "url": "https://app.deepintshield.com/mcp", "headers": { "Authorization": "Bearer sk-ds-your-production-key" } }, "deepintshield-development": { "url": "https://app.deepintshield.com/mcp", "headers": { "Authorization": "Bearer sk-ds-your-development-key" } } }}Control which tools are exposed to MCP clients using Virtual Keys:
Configure which tools each Virtual Key can access from the Virtual Keys section of the Web UI: create or edit a key and, under MCP Client Configurations, add the clients and the tools that key may use. For example, a production key might be limited to read_file and list_directory on a filesystem client while allowing all tools (*) on a web_search client.
Learn more about Virtual Key tool filtering in MCP Tool Filtering.
DeepIntShield monitors connected MCP clients for you. If a client stops responding it is marked disconnected, its tools drop out of the aggregated registry, and DeepIntShield reconnects it in the background - external clients see the tools return automatically once it recovers. You can choose the check method per client with the is_ping_available toggle (see Connecting to MCP Servers).
To force a reconnection yourself, open the client under Agentic → MCP Registry and click Reconnect.
For Agent Mode operations, DeepIntShield tags each intermediate tool-execution step with its own request ID, so autonomous tool runs produce detailed, per-step audit trails. See Agent Mode for details.
The tools exposed through the gateway stay in sync automatically. When you connect a new client, a connected server’s tool list changes, or you edit a client’s tools_to_execute, the change is reflected for external MCP clients without them needing to reconnect - they always see the current, filtered set of tools.
The server requires a valid Virtual Key on every /mcp request. Bind only the
MCP clients and tools that external client needs, keep the key active only for
its intended lifetime, and rotate it through the Virtual Key controls.
All traffic to https://app.deepintshield.com/mcp is served over TLS - always use the https:// endpoint so credentials and tool traffic stay encrypted in transit.
Use Virtual Keys to limit which tools each client can access. Follow the principle of least privilege.
Use per-Virtual Key access controls to limit which clients can reach the MCP endpoint and which tools they can call.
tools_to_execute includes the expected tools