Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Agent Framework supports many different types of tools that extend agent capabilities. Tools allow agents to interact with external systems, execute code, search data, and more.
Tool Types
| Tool Type | Description |
|---|---|
| Function Tools | Custom code that agents can call during conversations |
| Tool Approval | Human-in-the-loop approval for tool invocations |
| Code Interpreter | Execute code in a sandboxed environment |
| File Search | Search through uploaded files |
| Web Search | Search the web for information |
| Hosted MCP Tools | MCP tools hosted by Azure AI Foundry |
| Local MCP Tools | MCP tools running locally or on custom servers |
Provider Support Matrix
The OpenAI and Azure OpenAI providers each offer multiple client types with different tool capabilities. Azure OpenAI clients mirror their OpenAI equivalents.
| Tool Type | Chat Completion | Responses | Assistants | Azure AI Foundry | Anthropic | Ollama | GitHub Copilot | Copilot Studio |
|---|---|---|---|---|---|---|---|---|
| Function Tools | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Tool Approval | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Code Interpreter | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| File Search | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Web Search | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Hosted MCP Tools | ❌ | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
| Local MCP Tools | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
Note
The Chat Completion, Responses, and Assistants columns apply to both OpenAI and Azure OpenAI — the Azure variants mirror the same tool support as their OpenAI counterparts.
Provider Support Matrix
The OpenAI and Azure OpenAI providers each offer multiple client types with different tool capabilities. Azure OpenAI clients mirror their OpenAI equivalents.
| Tool Type | Chat Completion | Responses | Assistants | Azure AI Foundry | Anthropic | Claude Agent | Ollama | GitHub Copilot |
|---|---|---|---|---|---|---|---|---|
| Function Tools | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Tool Approval | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Code Interpreter | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| File Search | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Web Search | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
| Image Generation | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Hosted MCP Tools | ❌ | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
| Local MCP Tools | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Note
The Chat Completion, Responses, and Assistants columns apply to both OpenAI and Azure OpenAI — the Azure variants mirror the same tool support as their OpenAI counterparts. Local MCP Tools work with any provider that supports function tools.
Using an Agent as a Function Tool
You can use an agent as a function tool for another agent, enabling agent composition and more advanced workflows. The inner agent is converted to a function tool and provided to the outer agent, which can then call it as needed.
Call .AsAIFunction() on an AIAgent to convert it to a function tool that can be provided to another agent:
// Create the inner agent with its own tools
AIAgent weatherAgent = new AzureOpenAIClient(
new Uri("https://<myresource>.openai.azure.com"),
new AzureCliCredential())
.GetChatClient("gpt-4o-mini")
.AsAIAgent(
instructions: "You answer questions about the weather.",
name: "WeatherAgent",
description: "An agent that answers questions about the weather.",
tools: [AIFunctionFactory.Create(GetWeather)]);
// Create the main agent and provide the inner agent as a function tool
AIAgent agent = new AzureOpenAIClient(
new Uri("https://<myresource>.openai.azure.com"),
new AzureCliCredential())
.GetChatClient("gpt-4o-mini")
.AsAIAgent(instructions: "You are a helpful assistant.", tools: [weatherAgent.AsAIFunction()]);
// The main agent can now call the weather agent as a tool
Console.WriteLine(await agent.RunAsync("What is the weather like in Amsterdam?"));
Call .as_tool() on an agent to convert it to a function tool that can be provided to another agent:
from agent_framework.azure import AzureOpenAIChatClient
from azure.identity import AzureCliCredential
# Create the inner agent with its own tools
weather_agent = AzureOpenAIChatClient(credential=AzureCliCredential()).as_agent(
name="WeatherAgent",
description="An agent that answers questions about the weather.",
instructions="You answer questions about the weather.",
tools=get_weather
)
# Create the main agent and provide the inner agent as a function tool
main_agent = AzureOpenAIChatClient(credential=AzureCliCredential()).as_agent(
instructions="You are a helpful assistant.",
tools=weather_agent.as_tool()
)
# The main agent can now call the weather agent as a tool
result = await main_agent.run("What is the weather like in Amsterdam?")
print(result.text)
You can also customize the tool name, description, and argument name:
weather_tool = weather_agent.as_tool(
name="WeatherLookup",
description="Look up weather information for any location",
arg_name="query",
arg_description="The weather query or location"
)