Multiplexing
All your integrations behind one endpoint
A DataGrout server multiplexes every integration you add behind a single MCP/JSONRPC URL. Your agents connect once and get access to all tools from all integrations β with a single credential, unified discovery, and consistent policy enforcement.
How It Works
Add integrations to a server. Your agent connects to the serverβs endpoint. Every tool from every integration becomes available through that one URL.
Agent
βββ connects to: gateway.datagrout.ai/servers/{uuid}/mcp
βββ salesforce@1/get_leads@1
βββ salesforce@1/create_opportunity@1
βββ quickbooks@1/create_invoice@1
βββ sap@1/get_purchase_orders@1
βββ data-grout@1/discovery.discover@1
βββ ... (all tools from all integrations)
DataGrout handles authentication to upstream integrations transparently. Your agent carries one credential; DataGrout carries the rest.
Tool Namespacing
Every tool is prefixed with its integration name and version to prevent collisions and make provenance clear:
salesforce@1/get_lead@1
quickbooks@1/create_invoice@1
sap@1/get_purchase_orders@1
data-grout@1/discovery.discover@1
Call tools/list once to see every tool across all integrations. Call a tool by its full namespaced name and DataGrout routes it automatically.
Setup
1. Create a Server
In the server dropdown (top-left), select Create New Server. Give it a name and choose an auth method. You receive:
MCP endpoint: https://gateway.datagrout.ai/servers/{uuid}/mcp
JSONRPC endpoint: https://gateway.datagrout.ai/servers/{uuid}/rpc
2. Add Integrations
Go to the Home page (the integrations marketplace) and click Add on any integration. OAuth integrations prompt you to authenticate. MCP server integrations take a URL and optional credentials.
Once added, the integrationβs tools immediately appear in your server.
3. Connect Your Agent
from datagrout.conduit import Client
client = Client(
"https://gateway.datagrout.ai/servers/{uuid}/mcp",
auth={"bearer": "your-token"},
)
await client.connect()
# All tools from all integrations
tools = await client.list_tools()
Discovery Over the Multiplexed Surface
With hundreds of tools available, you rarely want your agent to reason over the full list. Use discovery.discover with a goal to find the right tool:
matches = await client.discover(goal="create an invoice for a customer", limit=5)
# Returns: quickbooks@1/create_invoice@1, xero@1/create_invoice@1, etc.
The discovery engine works across all integrations simultaneously, ranked by semantic similarity to your goal.
Advanced Features
Selective Tool Enabling
Each integration has a list of its tools. Disable tools you donβt need β only enabled tools appear in tools/list and discovery results. This keeps the surface focused and follows least-privilege principles.
Go to Integration β Tools and toggle individual tools.
Dynamic Addition
Add a new integration while agents are connected. The new tools appear in tools/list on the next call β no agent reconfiguration needed.
Intelligent Interface
For agents that should never reason over the raw tool list, enable Intelligent Interface in server settings. This reduces tools/list to just discovery.discover and discovery.perform. The agent discovers tools by goal and executes them β never seeing the full catalog.
See Intelligent Interface for details.
Private and Cloud Hybrid
Cloud integrations (Salesforce, QuickBooks) and on-premise systems (SAP via Private Connector) appear side-by-side in the same multiplexed endpoint. The agent doesnβt need to know the difference.
Performance
- Routing overhead: under 50ms per call
- Tool list cached: 5 minutes (invalidated when integrations change)
- Concurrent upstream calls: handled via connection pooling
Related
- Discovery Tools β Semantic search across the multiplexed surface
- Intelligent Interface β Reduce tools/list to just discover and perform
- Private Connectors β On-premise systems in the multiplexed endpoint
- Demultiplexing β Broadcast one call across multiple servers