Intelligent Interface
A minimal tool surface for agents that don’t need to see every tool
Intelligent Interface is a server setting that reduces the tools/list response to just two gateway tools — discovery.discover and discovery.perform. Every other tool on the server is hidden from the list but remains fully callable through those two entry points.
Why It Exists
A standard DataGrout server exposes potentially hundreds of tools in tools/list: Salesforce tools, QuickBooks tools, SAP tools, plus all the DataGrout core tools. For a capable agent that reads the full list and reasons over it, this is fine. For a simpler agent — or one you want to keep tightly scoped — it’s a firehose.
Intelligent Interface solves this by giving the agent exactly two tools:
-
discovery.discover— finds the right tool or plan from a natural language goal -
discovery.perform— executes any tool by name, routing through the full intelligence layer
The agent calls discover with a goal, gets back a recommended tool or plan, then calls perform to run it. It never sees the raw tool catalog. The intelligence layer handles routing, policy enforcement, cost tracking, and type bridging behind the scenes.
This is the same pattern described in Beyond MCP as the “Intelligent Interface” server mode.
Enabling Intelligent Interface
- Open the server dropdown and click the Settings icon
- Go to the General or Advanced tab
- Toggle Use Intelligent Interface
- Save
When enabled, tools/list for that server returns only:
[
{
"name": "data-grout@1/discovery.discover@1",
"description": "Find tools or build a workflow plan from a natural language goal or query."
},
{
"name": "data-grout@1/discovery.perform@1",
"description": "Execute any tool by name through the DataGrout intelligence layer."
}
]
All other tools — integration tools, other DataGrout core tools, skills — remain hidden from the list. They are still accessible via discovery.perform.
How Agents Use It
The agent loop becomes very simple:
# Agent receives a user request: "get all overdue invoices"
# Step 1: Find the right tool
result = client.call_tool("data-grout@1/discovery.discover@1", {
"goal": "get all overdue invoices",
"limit": 3
})
# Returns: [{ "tool": "quickbooks@1/get-all-overdue-invoices@1", "score": 0.95 }]
# Step 2: Execute it
result = client.call_tool("data-grout@1/discovery.perform@1", {
"tool": "quickbooks@1/get-all-overdue-invoices@1",
"args": { "days_overdue": 30 }
})
The Conduit SDK wraps this pattern with discover() and perform() methods directly:
matches = await client.discover(goal="get all overdue invoices", limit=3)
result = await client.perform(matches[0].tool.name, {"days_overdue": 30})
When to Use It
| Use case | Recommended? |
|---|---|
| Simple agents or chatbots that take user requests literally | Yes |
| Agents with tightly scoped roles (only billing, only CRM) | Yes |
| System prompts where you want the model to call one tool | Yes |
| Power agents that need to reason over the full tool graph | No — use standard mode |
| Debugging and tool exploration | No — use standard mode |
System Prompt Integration
When Intelligent Interface is enabled, add a simple instruction to your system prompt:
You have two tools available: discover and perform.
Use discover to find the right tool for a task, then use perform to run it.
Always discover before performing unless you already know the exact tool name.
This keeps the agent’s reasoning tight and prevents it from trying to call tools that aren’t in its visible list.
Related
- Discovery Tools – Full reference for discover, plan, guide, and perform
- Interaction Settings – Other server-level configuration
- Conduit SDK – discover() and perform() in Python, TypeScript, and Rust