Microsoft Agent Framework talks to Agent Update over MCP. The server is https://api.tryagentupdate.com/v1/mcp, the transport is Streamable HTTP, and the credential is one header.
Setup
from agent_framework import MCPStreamableHTTPTool, ChatAgent
agent_update = MCPStreamableHTTPTool(
name="agent-update",
url="https://api.tryagentupdate.com/v1/mcp",
headers={"Authorization": "Bearer au_live_..."},
description="Text your human: send_message, ask_question, check_replies",
)
async with agent_update:
agent = ChatAgent(chat_client=client, name="assistant", tools=agent_update)
response = await agent.run("Text me when the migration finishes.")Before you file a bug
name and url are the required positional-or-keyword arguments. Everything else, headers included, is keyword-only. Headers bind at construction, so a rotated PAT needs a new instance. approval_mode="always_require" gives you a human gate before the agent texts anyone, and allowed_tools=[...] exposes only a subset of the five tools. The Azure AI Foundry hosted-MCP tool is a different surface: there, headers are supplied per run through tool_resources.
Check it worked
Ask the agent to text you. A 401 means the token is wrong, or the word Bearer is in there twice. No tool at all means the transport string is wrong. Both are covered in troubleshooting.
Next
The five tools and their arguments are on the MCP page. The same tools over plain HTTP are on the REST page. Every other tool is on the docs index.