How the Microsoft Programs Assistant works
It works in Microsoft Teams. An AI model reads the question and calls one of three read-only tools on our MCP server, which reads Microsoft Partner Center. Every fact comes from tested code, so the same question gets the same facts every time.
// .vscode/mcp.json
{
"servers": {
"microsoft-programs-assistant-demo": {
"type": "http",
"url": "<DEMO-URL>",
"headers": { "x-api-key": "<TEST-KEY>" }
}
}
}
curl <DEMO-URL> \
-H "x-api-key: <TEST-KEY>" \
-H "content-type: application/json" \
-H "accept: application/json, text/event-stream" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": {"name": "portfolio_insights", "arguments": {"product": "Intune"}}}'
# pip install "mcp>=2.3"
import asyncio
import httpx2
from mcp.client import Client
from mcp.client.streamable_http import streamable_http_client
URL = "<DEMO-URL>"
KEY = "<TEST-KEY>"
async def main():
http = httpx2.AsyncClient(headers={"x-api-key": KEY})
async with Client(streamable_http_client(URL, http_client=http)) as client:
result = await client.call_tool("portfolio_insights", {"product": "Intune"})
print(result.content[0].text)
asyncio.run(main())
At a glance
- Runs in
- Microsoft Teams, as a Copilot Studio agent
- Who can use it
- MDS staff we invite, signed in with Microsoft Entra ID
- AI model
- Claude, provided by Microsoft in Copilot Studio. The live demo uses Claude on Microsoft Foundry
- Tools
- 3 tools on our MCP server, all read-only
- Data
- Microsoft Partner Center: the incentive catalog, our claims per client, and payment statements
- Hosting
- Azure App Service, run by MDS
How it answers a question
- A person asks in Teams, signed in with Microsoft Entra ID. The agent’s AI model reads the question.
- The model picks a tool by its name and description, and calls it on our MCP server. MCP (Model Context Protocol) is an open standard that lets an AI model call tools on a server.
- The tool reads Microsoft Partner Center, applies our business rules, and returns facts and warnings. The model writes the answer from them and keeps every warning.
The AI model never decides a fact or a number. Those come from code that has unit tests. The model only picks the tool and words the answer.
Architecture
Tools
Three tools, each with one job. Each one is marked read-only, and the server has no tool that sends, claims or changes anything.
| Tool | Ask it | Inputs | What it returns | Limits |
|---|---|---|---|---|
list_programs | “Which programs pay on Copilot?” | None | Every program in Microsoft’s incentive catalog, with the products it pays on | The catalog doesn’t show which programs we’re enrolled in |
customer_incentives | “What can we still claim at Northwind Traders?” | customer: a name or tenant ID. Or products: a prospect’s products, separated by commas | The products we haven’t claimed yet at that client, and the one to offer next | When several clients match, it lists them, and the agent asks which one |
portfolio_insights | “Who should we take Intune to?” | product, optional | Without a product: the biggest gaps across all clients. With one: the clients without a claim for it, most other claims first | Eligibility isn’t in the data, so every answer says to check it in Partner Center |
Test it yourself
Both ways use our demo server. It runs the same code and tools on made-up data for Trey Research, a made-up partner. No real client data is on it.
In your browser
Ask the live demo your own questions. A real AI agent picks the tool and writes the answer.
Try DemoWith your own MCP client
We send you the demo server’s address and a test key. Put them in place of <DEMO-URL> and <TEST-KEY> in the samples at the top of this page. Any MCP client that can send a header works, for example VS Code.
Ask the questions it was made for
- Which incentive are we missing out on the most?
- Who should we take Intune to?
- What can we still claim at Northwind Traders?
- A prospect uses Exchange Online, Intune and Power BI. What could we claim?
- Which programs pay on Copilot?
You askWho should we take Intune to?
The model callsportfolio_insights {"product": "Intune"}
The tool returnsIntune: Trey Research has claimed it at 21 of 32 customers.
Customers without a Trey Research claim for it, most other Trey Research claims first (11 in all): Tailwind Traders (11), Adventure Works Cycles (9), Margie's Travel (7), Fabrikam, Inc. (5), Lamna Healthcare Company (5)
Eligibility isn't in the data. Check it in Partner Center before you contact the customer.
The model then writes a short answer from this text, and keeps the warning.
| In Teams | Demo server | |
|---|---|---|
| Code, tools and rules | Ours | The same |
| Data | Microsoft Partner Center | Made up, for Trey Research |
| Who can use it | MDS staff we invite, signed in | Anyone, in the live demo. With your own client: anyone with a test key |
| AI model | Claude, in Copilot Studio | Claude on Microsoft Foundry in the live demo, or the model in your MCP client |
| Key | Private | A test key from us |
Limits
- It only reads. No tool can enroll, claim or change anything, so a person makes every decision.
- Eligibility isn’t in the data. Our consultants check it, and that check will be added to the assistant later.
- The demo answers a limited number of questions each day, and we can change test keys at any time.
Want one for your team?
Tell us how your team works today, and we’ll show you what this assistant could do.