{
  "access": "public",
  "type": "reference",
  "format": "markdown",
  "title": "Intelligent Interface",
  "chunked": true,
  "url": "https://library.datagrout.ai/intelligent-interface",
  "summary": "**A minimal tool surface for agents that don't need to see every tool**",
  "content_markdown": "# Intelligent Interface\n\n**A minimal tool surface for agents that don't need to see every tool**\n\nIntelligent 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.\n\n---\n\n## Why It Exists\n\nA 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.\n\nIntelligent Interface solves this by giving the agent exactly two tools:\n\n- **`discovery.discover`** — finds the right tool or plan from a natural language goal\n- **`discovery.perform`** — executes any tool by name, routing through the full intelligence layer\n\nThe 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.\n\nThis is the same pattern described in [Beyond MCP](/why) as the \"Intelligent Interface\" server mode.\n\n---\n\n## Enabling Intelligent Interface\n\n1. Open the **server dropdown** and click the **Settings** icon\n2. Go to the **General** or **Advanced** tab\n3. Toggle **Use Intelligent Interface**\n4. Save\n\nWhen enabled, `tools/list` for that server returns only:\n\n```json\n[\n  {\n    \"name\": \"data-grout@1/discovery.discover@1\",\n    \"description\": \"Find tools or build a workflow plan from a natural language goal or query.\"\n  },\n  {\n    \"name\": \"data-grout@1/discovery.perform@1\",\n    \"description\": \"Execute any tool by name through the DataGrout intelligence layer.\"\n  }\n]\n```\n\nAll other tools — integration tools, other DataGrout core tools, skills — remain hidden from the list. They are still accessible via `discovery.perform`.\n\n---\n\n## How Agents Use It\n\nThe agent loop becomes very simple:\n\n```python\n# Agent receives a user request: \"get all overdue invoices\"\n\n# Step 1: Find the right tool\nresult = client.call_tool(\"data-grout@1/discovery.discover@1\", {\n    \"goal\": \"get all overdue invoices\",\n    \"limit\": 3\n})\n# Returns: [{ \"tool\": \"quickbooks@1/get-all-overdue-invoices@1\", \"score\": 0.95 }]\n\n# Step 2: Execute it\nresult = client.call_tool(\"data-grout@1/discovery.perform@1\", {\n    \"tool\": \"quickbooks@1/get-all-overdue-invoices@1\",\n    \"args\": { \"days_overdue\": 30 }\n})\n```\n\nThe Conduit SDK wraps this pattern with `discover()` and `perform()` methods directly:\n\n```python\nmatches = await client.discover(goal=\"get all overdue invoices\", limit=3)\nresult = await client.perform(matches[0].tool.name, {\"days_overdue\": 30})\n```\n\n---\n\n## When to Use It\n\n| Use case | Recommended? |\n|----------|--------------|\n| Simple agents or chatbots that take user requests literally | Yes |\n| Agents with tightly scoped roles (only billing, only CRM) | Yes |\n| System prompts where you want the model to call one tool | Yes |\n| Power agents that need to reason over the full tool graph | No — use standard mode |\n| Debugging and tool exploration | No — use standard mode |\n\n---\n\n## System Prompt Integration\n\nWhen Intelligent Interface is enabled, add a simple instruction to your system prompt:\n\n```\nYou have two tools available: discover and perform.\nUse discover to find the right tool for a task, then use perform to run it.\nAlways discover before performing unless you already know the exact tool name.\n```\n\nThis keeps the agent's reasoning tight and prevents it from trying to call tools that aren't in its visible list.\n\n---\n\n## Related\n\n- [Discovery Tools](discovery-tools) -- Full reference for discover, plan, guide, and perform\n- [Interaction Settings](interaction-settings) -- Other server-level configuration\n- [Conduit SDK](conduit-sdk) -- discover() and perform() in Python, TypeScript, and Rust\n"
}