You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Add support for the Foundry Toolbox in MAF
Introduces a Foundry Toolbox integration: FoundryChatClient gains a
get_toolbox() helper plus select_toolbox_tools(), normalize_tools in
the core package flattens tool-collection wrappers (ToolboxVersionObject
and generic iterables, while leaving Pydantic BaseModel instances
alone), and the new agent_framework.foundry namespace re-exports the
toolbox helpers. Ships with unit tests, a sample, and a design doc.
azure-ai-projects is pinned to the public >=2.0.0,<3.0 range and the
lockfile resolves from public PyPI. The toolbox test module skips when
Toolbox* types are unavailable so CI stays green until the public 2.1.0
SDK lands. OMC tooling directories (.omc/, .omx/) are gitignored.
* Update to latest azure ai projects package
* Improve sample
* Rename ADR to 0025
* Update ADR
* Apply suggestion from @alliscode
Co-authored-by: Ben Thomas <ben.thomas@microsoft.com>
* Improve samples
* Update test
---------
Co-authored-by: Ben Thomas <ben.thomas@microsoft.com>
This package contains the Microsoft Foundry integrations for Microsoft Agent Framework, including Foundry chat clients, preconfigured Foundry agents, Foundry embedding clients, and Foundry memory providers.
4
+
5
+
## Toolboxes
6
+
7
+
A *toolbox* is a named, versioned bundle of hosted tool configurations — code interpreter, file search, image generation, MCP, web search, and so on — stored inside a Microsoft Foundry project. Toolboxes let you manage tool configuration once and reuse it across agents.
8
+
9
+
### Authoring a toolbox
10
+
11
+
Toolboxes can be authored two ways:
12
+
13
+
-**Foundry portal** — create and version toolboxes through the UI without touching code.
14
+
-**Programmatically** — use the [`azure-ai-projects`](https://pypi.org/project/azure-ai-projects/) SDK to create, update, and version toolboxes from Python.
15
+
16
+
> Toolbox authoring APIs (`ToolboxVersionObject`, `ToolboxObject`, `project_client.beta.toolboxes.*`) require `azure-ai-projects>=2.1.0`. Earlier versions can only consume toolboxes that already exist.
17
+
18
+
### Using toolboxes with `FoundryAgent`
19
+
20
+
For hosted `FoundryAgent`, the toolbox must already be attached to the agent in the Microsoft Foundry project. Once attached, the agent invokes its toolbox tools transparently — no client-side wiring required — and you interact with the agent the same way you would with any other tool-equipped Foundry agent.
21
+
22
+
### Using toolboxes with `FoundryChatClient`
23
+
24
+
There are two patterns for wiring a toolbox into a `FoundryChatClient`-backed agent.
25
+
26
+
**1. Fetch, optionally filter, and pass the tools directly**
27
+
28
+
Load the toolbox from the Microsoft Foundry project, optionally select a subset of its tools, and hand them to an `Agent` alongside any other tools you own:
29
+
30
+
```python
31
+
from agent_framework import Agent
32
+
from agent_framework.foundry import FoundryChatClient, select_toolbox_tools
See [`foundry_chat_client_with_toolbox.py`](../../samples/02-agents/providers/foundry/foundry_chat_client_with_toolbox.py) for a full example, including combining multiple toolboxes.
46
+
47
+
**2. Connect to the toolbox's MCP endpoint with `MCPStreamableHTTPTool`**
48
+
49
+
Each toolbox is reachable as an MCP server. Instead of fetching and fanning out its individual tool definitions, you can point a MAF `MCPStreamableHTTPTool` at the toolbox's MCP endpoint — the agent then discovers and calls its tools over MCP at runtime:
50
+
51
+
```python
52
+
from agent_framework import Agent, MCPStreamableHTTPTool
53
+
from agent_framework.foundry import FoundryChatClient
54
+
55
+
asyncwith Agent(
56
+
client=FoundryChatClient(...),
57
+
instructions="You are a helpful assistant. Use the toolbox tools when useful.",
58
+
tools=MCPStreamableHTTPTool(
59
+
name="my_toolbox",
60
+
description="Tools served by my Foundry toolbox",
61
+
url="https://<your-toolbox-mcp-endpoint>",
62
+
),
63
+
) as agent:
64
+
result =await agent.run("What tools are available?")
0 commit comments