Formerly known as Azure AI Services or Azure Cognitive Services is a unified collection of prebuilt AI capabilities within the Microsoft Foundry platform
The empty tools: [] in the mcp_list_tools trace indicates the agent is not seeing any tools from that MCP server (and likely from the other connections as well). In that state, the model has nothing it can call, so it falls back to answering from its own knowledge and “hallucinates”, even if instructions say to use tools.
Use the following checks to isolate whether this is a connection/toolbox issue or an instruction/model issue.
- Verify the toolbox can see tools
For MCP and other remote tools, tools/list returning zero tools is a primary symptom of connection or manifest issues.
- If using the Foundry toolbox:
- Call
tools/listfor the MCP server and Databricks Genie connection. - If
tools/listreturns zero tools for MCP or A2A tools, the likely cause is invalid or missing connection credentials for the remote MCP server or A2A agent. - Fix:
- Verify the
project_connection_idexists in the Foundry project and that credentials are correct. - Test connectivity by calling the MCP server directly with the same auth.
- If using managed identity (PMI, agent identity, or MI), verify the correct RBAC role assignments for the caller on the target resource.
- Verify the
- Call
For OpenAPI tools, if tools/list returns zero tools, validate the OpenAPI spec (must be valid OpenAPI 3.0/3.1 with proper paths, operationId, and parameter schemas).
- Fix MCP server definition issues
If the MCP server is reachable but tools are not exposed correctly, Foundry can reject the tool schema.
Common MCP issues:
- "Invalid tool schema" occurs if:
- The MCP server definition uses
anyOforallOf, or - A parameter accepts multiple types.
- The MCP server definition uses
- Fix:
- Update the MCP server definition to avoid
anyOf/allOfand multi-type parameters. - Redeploy and reattach the MCP server to the agent.
- Update the MCP server definition to avoid
- Confirm MCP auth and project connection
If the MCP server returns Unauthorized or Forbidden:
- Confirm the MCP server supports the chosen authentication method.
- Verify credentials stored in the project connection are valid and up to date.
- For services like GitHub, use least-privilege tokens and rotate them regularly.
- Validate
server_labelandallowed_tools
Even if the MCP server is connected, the model may not call tools if they are filtered out:
- Ensure
server_labelandserver_urlin the MCP configuration match what the agent expects. - If
allowed_toolsis set:- Confirm the tool names exactly match what the MCP server exposes.
- Tool names are case-sensitive and must follow the MCP specification (no whitespace or special characters).
- Temporarily remove
allowed_toolsand re-runtools/listto confirm the full tool list.
- Check region/model support for tools
If Foundry reports “tool not supported” or silently omits tools:
- Tool availability requires support from both the model and the region.
- Check the region availability table and the model support table; if either shows
Nofor a tool, it cannot run. - Confirm the model is actually deployed in the project and region being used.
- If necessary, try a different region or a different model deployment that supports the required tools (for example, Code Interpreter is not available in some regions).
- Use
tool_choiceto force tool usage once tools are visible
After confirming that tools/list returns the expected tools and traces show non-empty tools arrays:
- Set
tool_choicetorequiredso the model must call one or more tools. - Keep instructions clear and specific about when to use each tool (for example, “Use the knowledge base for any question that requires indexed document content”).
- Review run traces again to confirm tool calls and inspect tool inputs/outputs.
- Distinguish connection issues from instruction issues
- If
mcp_list_toolsspans continue to show"tools": [], the problem is with tool discovery/connection (MCP server, Databricks Genie, or toolbox configuration), not instructions. - Once
mcp_list_toolsshows a non-emptytoolslist but the model still does not call tools:- Use
tool_choice = required. - Simplify instructions to emphasize tool usage.
- Confirm no conflicting settings (such as
tool_choice = none).
- Use
By first ensuring tools/list and mcp_list_tools return actual tools, then enforcing tool_choice = required, it becomes clear whether the issue is connectivity/toolbox configuration or agent behavior.
References:
- Curate intent-based toolbox in Foundry (preview) (azd)
- Tool best practices for Microsoft Foundry Agent Service
- Connect agents to Model Context Protocol servers (rest)
- Connect agents to Model Context Protocol servers (python)
- Connect agents to Model Context Protocol servers (csharp)
- Connect agents to Model Context Protocol servers (java)
- Connect agents to Model Context Protocol servers (typescript)