Invoke Foundry Agent
Invoke deployed agents in Azure AI Foundry. Manage sessions and file operations for hosted agents.
Quick Reference
| Property | Value |
|---|---|
| Agent types | Prompt (LLM-based), Hosted |
| MCP server | azure |
| Key Foundry MCP tools | agent_invoke, agent_get, session_create, session_get, session_delete, session_list |
| File operation tools | session_file_upload, session_file_download, session_file_list, session_file_delete, session_file_stat, session_file_mkdir |
| Conversation support | Single-turn and multi-turn (via conversationId for responses protocol, via session state for invocations protocol) |
| Session support | Managed sessions for hosted agents (via session_create) |
| Protocols | responses (OpenAI-compatible), invocations (custom payloads) |
When to Use This Skill
- Send messages to a deployed agent (single or multi-turn)
- Create/manage sessions for hosted agents
- Upload/download files to/from hosted agent sessions
- Test agent behavior after creation or deployment
MCP Tools
| Tool | Description | Parameters |
|---|---|---|
agent_invoke | Send a message to an agent and get a response | projectEndpoint, agentName, inputText (required); agentVersion, conversationId, sessionId, protocol, stream (optional) |
agent_get | Get agent details to verify existence and type | projectEndpoint (required), agentName (optional) |
session_create | Create a new session for a hosted agent | projectEndpoint, agentName (required); sessionId (optional) |
session_get | Get session status and details | projectEndpoint, agentName, sessionId (required) |
session_delete | Delete a session and release compute | projectEndpoint, agentName, sessionId (required) |
session_list | List sessions with pagination | projectEndpoint, agentName (required); limit, order, after, before (optional) |
session_logstream | Stream console logs (stdout/stderr) from a session | projectEndpoint, agentName, sessionId (required); maxLines (optional) |
For session file operation tools (session_file_upload, session_file_download, session_file_list, session_file_delete, session_file_stat, session_file_mkdir), see File Operations.
Protocols
Hosted agents support two invocation protocols declared at deployment time.
| Protocol | Recommended Version | Route | Best For |
|---|---|---|---|
responses | 1.0.0 | .../agents/{agentName}/endpoint/protocols/openai/responses | Conversational agents, OpenAI-compatible |
invocations | 1.0.0 | .../agents/{agentName}/endpoint/protocols/invocations | Custom payloads, protocol bridges, webhook callers |
Key difference: responses takes a natural language inputText message with platform-managed history. invocations is bytes in, bytes out โ the request body is forwarded as-is to the container and the raw response is returned. The developer defines the schema; the platform is pure pass-through. See Invocations Protocol Guide for I/O details, schema discovery, and examples.
โ ๏ธ Critical for invocations:
inputTextis forwarded as the raw HTTP request body. The agent developer defines what the container accepts. Do not guess โ fetch the agent's OpenAPI spec or inspect its source code first.
๐ก Tip: The
agent_invokeMCP tool supports both protocols. Setprotocol: 'invocations'when targeting an invocations-protocol agent.
Workflow
Step 1: Verify Agent Readiness
Use agent_get to verify the agent exists. For hosted agents, also verify the targeted version is active.
Step 2: Create Session (Hosted Agents)
For hosted agents, create a session before invoking using session_create with projectEndpoint and agentName. Optionally provide a sessionId (must match ^[A-Za-z0-9_-]{8,128}$). Store the returned sessionId for subsequent calls.
โ ๏ธ Skip this step for prompt agents โ they do not use sessions.
For full session lifecycle details, see Session Management.
Step 3: Invoke Agent
Use the project endpoint and agent name from the project context. Use agent_invoke with:
projectEndpoint,agentName,inputText(required)agentVersion,conversationId,sessionId,protocol,stream(optional)
Responses protocol (default): inputText is a natural language message string. Multi-turn via conversationId.
Invocations protocol: Set protocol: 'invocations'. This is bytes in, bytes out โ inputText is forwarded as the raw HTTP request body to the container. The developer defines the expected schema.
โ ๏ธ Do not guess the invocations request body. To discover the expected schema:
- Fetch the OpenAPI spec:
GET {projectEndpoint}/agents/{agentName}/endpoint/protocols/invocations/docs/openapi.json(if the developer registered one)- Inspect the agent's route handler code or README for the expected payload shape
- If unknown, ask the user for the agent's API contract before invoking
Example invocations call (agent expects {"message": "<text>"}):
agent_invoke(projectEndpoint, agentName, inputText: "{\"message\":\"hello\"}", protocol: "invocations", sessionId: "<id>")See Invocations Protocol Guide for full details and examples.
Step 4: Multi-Turn Conversations
Responses protocol โ Pass conversationId from previous response to continue the thread. Platform manages history.
Invocations protocol โ Reuse same sessionId; conversation state is agent-managed via $HOME. Do not pass conversationId โ it has no effect for invocations.
Step 5: File Operations (Hosted Agents)
Upload/download files to pass data to and retrieve results from agents. All file operations require an active session. See File Operations.
Step 6: Clean Up
Use session_delete to release compute resources when done. Undeleted sessions expire per platform policies.
Agent Type Differences
| Behavior | Prompt Agent | Hosted Agent |
|---|---|---|
| Readiness | Immediate | After deployment, version must be active |
| Session | Not applicable | Required via session_create |
| Multi-turn | Via conversationId | Via conversationId (responses) or session state (invocations) |
| File operations | โ | โ via session file tools |
| Protocol | responses only | responses or invocations |
Error Handling
| Error | Cause | Resolution |
|---|---|---|
| Agent not found | Invalid name or endpoint | Use agent_get to list agents |
| Hosted agent not active | Version still provisioning or failed | Check version status via agent_get |
| Session not found | Invalid ID or expired | Create new session with session_create |
| Invocation failed | Model error, timeout, or invalid input | Check agent logs, verify model deployment |
| Invocations schema mismatch | Request body does not match what the agent expects | Inspect agent's route handler or API docs for the correct JSON schema; do not guess |
| File operation failed | Session not active or invalid path | Verify session with session_get |
| Permission error | Missing RBAC | Follow troubleshoot skill |
| Rate limit exceeded | Too many requests | Implement backoff and retry |