- What Microsoft Foundry is — and the five things it consolidated
- The vocabulary shift — the translation table you must memorise
- The resource model — resource, project, and the legacy hub
- Foundry Models — catalogue, families, and how models are sold
- Deployment options and types — serverless vs managed compute, global vs data zone
- Foundry Tools — the services formerly known as Azure AI Services
- Connections — how Foundry reaches your other Azure resources
- One endpoint, one API — the Responses API and the project client
- Identity, RBAC and keyless auth — the five Foundry roles
- Developer surfaces and a glossary
What Microsoft Foundry is
Microsoft Foundry is the unified platform for building, deploying and governing AI applications and agents on Azure. Its pitch is consolidation: agents, models and tools live under one Azure resource provider namespace, with one set of role assignments, one networking configuration, one policy surface, and one observability plane.
Concretely, Foundry gives you four things:
| Pillar | What it is | Where it shows up on the exam |
|---|---|---|
| Models | A catalogue of 10,000+ models from Microsoft, OpenAI, Anthropic, Meta, Mistral, Cohere and others, plus the deployment machinery to run them. | Model selection, deployment types, quota and cost — Skill 1 |
| Agents | Foundry Agent Service: a managed runtime for prompt agents (declarative) and hosted agents (your container), with conversations, tool calls, versioning and publishing. | The heart of Skill 2 |
| Tools & knowledge | Built-in tools (web search, file search, code interpreter, Azure AI Search, MCP, OpenAPI…), grouped into reusable toolboxes, plus Foundry Tools — Content Understanding, Language, Speech, Translator, Vision. | Skills 2, 3, 4 and 5 |
| Governance & observability | Entra identity, Azure RBAC, guardrails, network isolation, Azure Policy; plus tracing, evaluations and Application Insights dashboards. | Skill 1, and the responsible-AI objectives across every skill |
Framing that wins questions
When a scenario says "the security team requires a single boundary for networking and RBAC across all our AI workloads", the intended answer is almost always one Foundry resource with multiple projects, not one resource per team. Projects are child resources: they inherit the parent's security, connectivity and governance by default, and can add their own RBAC on top. That is the whole point of the design — it takes the IT admin out of the day-to-day loop.
The vocabulary shift you must memorise
Foundry consolidated several previous products, and with them came a full rename. The exam, the portal and the current documentation use the new names. Most third-party material, older Learn modules and many practice tests still use the old ones. Knowing both directions is worth several marks.
| Dimension | Previously | Now |
|---|---|---|
| Brand | Azure AI Studio → Azure AI Foundry | Microsoft Foundry |
| Service family | Azure AI Services (Cognitive Services) | Foundry Tools |
| Portal | Azure AI Foundry portal | Foundry portal (the old one is Foundry (classic)) |
| Agent API | Assistants API (Agents v0.5 / v1) | Responses API (Agents v2) |
| API versioning | Monthly api-version parameters | v1 stable routes (/openai/v1/) |
| Resource model | Hub + Azure OpenAI + Azure AI Services | Foundry resource (single, with projects) |
| SDK | azure-ai-inference, azure-ai-generative, azure-ai-ml, AzureOpenAI() across 5+ endpoints | azure-ai-projects 2.x + OpenAI() against one project endpoint |
| Conversation objects | Threads, Messages, Runs, Assistants | Conversations, Items, Responses, Agent versions |
| Content filtering | Content filters / RAI policies | Guardrails (a named set of controls) |
| RBAC roles | Azure AI User / Owner / Account Owner / Project Manager | Foundry User / Owner / Account Owner / Project Manager |
| Document extraction | Document Intelligence (still exists) | Content Understanding for multimodal, generative extraction |
Read the question, not the brand
Microsoft does not rewrite every exam item the day a rename ships. If a question says "Azure AI Foundry project", treat it as a Foundry project. If it says "Azure AI Services multi-service resource", treat it as a Foundry resource / Foundry Tools. The concepts are what is being tested. Where a question genuinely hinges on old-versus-new — for example Assistants API versus Responses API, or threads versus conversations — the wording will make that explicit.
Agents (classic) is deprecated
The classic Agent Service (Assistants-style threads/runs) is deprecated and retires on 31 March 2027. New work uses Foundry Agent Service with the Responses API. If an answer option offers to build on threads and runs for a new solution, it is almost certainly the distractor.
The resource model
flowchart TB SUB["Azure subscription"] --> RG["Resource group"] RG --> FR["Foundry resource<br/>Microsoft.CognitiveServices/accounts<br/>kind = AIServices"] FR --> P1["Project: dev"] FR --> P2["Project: prod"] FR --> DEP["Model deployments<br/>(resource scope)"] FR --> CONN["Connections<br/>Search · Storage · App Insights"] P1 --> AG1["Agents, files,<br/>vector stores, evals"] P2 --> AG2["Agents, files,<br/>vector stores, evals"] RG -.legacy.-> HUB["Azure AI hub<br/>+ Storage + Key Vault<br/>(only for open-source models,<br/>managed compute, prompt flow)"]
The Foundry resource
The Foundry resource is a single Azure resource that scopes design, deployment, governance and runtime access for generative AI applications and agents. It is the default resource type for anything you create in the Foundry portal, and it supersedes the old combination of hub + Azure OpenAI + Azure AI Services. It carries:
- Model deployments — created at resource scope and usable by the projects underneath.
- Connections — to Azure AI Search, Storage, Application Insights, MCP servers and more.
- Security settings — managed identity, private endpoints, customer-managed keys, Azure Policy.
- Azure OpenAI backward compatibility — the same endpoint shapes and API surface.
The Foundry project
A project is a child resource of the Foundry resource: a folder that organises one team's or one application's work. Agents, files, vector stores, evaluation runs, datasets and traces live in a project. By default a project inherits the parent's settings; it can also carry its own RBAC assignments so a developer can self-serve without an admin in the loop.
The hub — legacy, but still examinable
The Azure AI hub is the older resource type, built on Azure Machine Learning, that required a dependent Storage account and Key Vault. New features land on the Foundry resource, but a hub is still required for a small set of scenarios:
| Scenario | Needs a hub? | Why |
|---|---|---|
| Agents, Foundry Models, evaluations, tracing | No | Native to Foundry projects |
| Open-source model deployments (Hugging Face, NVIDIA NIM) | Yes | Require managed compute, which only hubs provide |
| Managed compute endpoints / compute instances | Yes | Azure Machine Learning capability |
| Prompt flow | Yes | Needs a compute runtime |
| Azure Machine Learning interoperability | Yes | Hubs are AML workspaces underneath |
Hub-vs-project questions have a tell
If the scenario mentions Hugging Face, NVIDIA NIM, fine-tuning an open-source model on your own compute, prompt flow or Azure Machine Learning, the answer involves a hub. Everything else — and certainly anything phrased as "new solution", "agents", "Responses API" — is a Foundry project. Also remember what does not migrate from hub to Foundry project: preview agent state (messages, threads, files) and open-source model deployments. Model deployments, data files, fine-tuned models and vector stores do carry over.
Other resource types you will meet
- Azure OpenAI resource
- A narrower resource that exposes OpenAI models and APIs only. Still valid where a security team refuses to enable the full Foundry surface, but the model catalogue shows only Azure OpenAI models. There is an in-place upgrade to a Foundry resource that preserves the endpoint, API keys and existing state.
- Azure AI Search
- A separate resource for indexing and retrieval. You connect it to Foundry; it is never inside the Foundry resource. It powers RAG, the Azure AI Search tool and Foundry IQ knowledge bases.
- Azure Cosmos DB / Azure Storage / Application Insights
- Optional "bring your own resources" for conversation state, file storage and telemetry, connected when compliance or operations demand you own the data store.
Foundry Models
The catalogue splits along a line that matters for billing, SLA and support — and that the exam likes to test.
| Foundry Models sold by Azure | Models from partners and community | |
|---|---|---|
| Examples | All Azure OpenAI models (GPT family, o-series, embeddings, image, audio), plus selected models from top providers | Anthropic, and specific models from Mistral, Cohere, Meta and others |
| Billing | Azure meters, as First Party Consumption Services | Azure Marketplace, under the Commercial Marketplace Terms |
| SLA and support | Covered by Azure SLAs, supported by Microsoft | Provider defines licence terms and price |
| Guardrails | Guardrail system applies (except audio transcription models) | Varies by model |
Choosing a model for the task
The very first objective in Skill 1 is "choose an appropriate model for each task, including LLMs, small language models, multimodal models, and Foundry Tools". That is a shopping list of trade-offs:
| Family | Pick it when | Avoid it when |
|---|---|---|
| Large language model (LLM) | Broad world knowledge, complex synthesis, open-ended generation, hard tool orchestration | Latency or cost per call dominate, or the task is narrow and repetitive |
| Small language model (SLM) — Phi family, "mini" tiers | High volume, tight latency, edge or on-device, well-scoped tasks like classification, routing or extraction | The task needs deep reasoning or long-tail knowledge |
| Reasoning models (o-series and equivalents) | Multi-step planning, maths, code, agentic decomposition where accuracy beats speed | Chatty, latency-sensitive front ends; they think longer and cost more |
| Multimodal models | Input mixes text with images, audio or video — captioning, visual Q&A, document understanding, audio reasoning | You need deterministic, schema-locked extraction with confidence scores (use Content Understanding) |
| Embedding models | Vectorising content for similarity, clustering and vector/hybrid retrieval | You need generation — embeddings only produce vectors |
| Image / video generation (GPT-image family, Sora) | Creating or editing visual assets from prompts and reference media | Analysing existing media — that is multimodal understanding, not generation |
| Foundry Tools (Language, Speech, Translator, Content Understanding, Vision) | The task is a solved, bounded NLP/vision/speech problem where you want a stable API, predictable cost, confidence scores and no prompt engineering | The task needs free-form reasoning or a bespoke output shape a prompt can express better |
The generative-vs-task-service judgement call
AI-103 repeatedly asks you to choose between "prompt a model" and "call a Foundry Tool". A useful rule: deterministic, auditable, high volume and well defined → Foundry Tool (sentiment, PII redaction, language detection, OCR, translation, transcription). Open-ended, contextual, bespoke output shape → generative model (summarising to a house style, extracting a schema nobody has a prebuilt model for, reasoning over mixed content). Content Understanding deliberately sits in the middle: a schema you define, generative extraction underneath, with confidence scores and source grounding on the way out.
Comparing models before you commit
Foundry has a model leaderboard and benchmarks surface that compares models on quality, cost, throughput and safety across public datasets or your own data, and an evaluation SDK for testing a specific endpoint. Model selection is the first stage of the evaluation lifecycle (base model selection → pre-production evaluation → post-production monitoring); see Skill 2 for the evaluators themselves.
Deployment options and deployment types
Two levels of choice, and the exam expects you to keep them apart. First the deployment option (how the model is hosted), then, for serverless, the deployment type (where data is processed and how you pay).
flowchart TD
A["Need to run a model"] --> B{"Open-source / custom /<br/>Hugging Face / NIM?"}
B -- Yes --> MC["Managed compute<br/>(dedicated VMs, billed by uptime,<br/>needs a hub + compute quota)"]
B -- No --> C["Serverless API<br/>on the Foundry resource"]
C --> D{"Data residency<br/>requirement?"}
D -- "None" --> E["Global"]
D -- "US / EU / APAC" --> F["Data Zone"]
D -- "Specific geography" --> G["Standard or<br/>Regional Provisioned"]
E --> H{"Traffic pattern?"}
F --> H
H -- "Bursty / variable" --> I["Standard<br/>(pay per token)"]
H -- "High and steady, low<br/>latency variance" --> J["Provisioned<br/>(PTUs)"]
H -- "Large async jobs" --> K["Batch<br/>(~50% cheaper)"] Deployment options
| Option | What it is | Where it lives |
|---|---|---|
| Serverless API preferred | Microsoft hosts the model; you call an API. Supports all deployment types, content filtering, keyless auth, private networking and provisioned throughput. | Foundry resource (or Azure OpenAI resource, limited catalogue) |
| Managed compute | A dedicated endpoint on compute you provision, billed per compute uptime. Required for Hugging Face models and NVIDIA NIMs. | Hub resources only; needs compute quota |
| Instant access preview | Call supported models by name with no deployment at all. Ideal for prototyping. | Foundry project (limited regions during preview) |
Deployment types (serverless)
Three categories — standard (pay per token), provisioned (reserved capacity, priced in PTUs) and batch (discounted asynchronous) — crossed with three data-processing scopes. A Developer type also exists for evaluating fine-tuned models, with no SLA.
| Type | SKU name in code | Data processing | Use it for |
|---|---|---|---|
| Global Standard | GlobalStandard | Any Azure region | The default. Newest models first, lowest price, highest default quota, broadest regions |
| Global Provisioned | GlobalProvisionedManaged | Any Azure region | Reserved, predictable throughput with global routing |
| Data Zone Standard | DataZoneStandard | Within US, EU or APAC data zone | Residency inside a data zone, pay per token |
| Data Zone Provisioned | DataZoneProvisionedManaged | Within US, EU or APAC data zone | Residency and reserved throughput |
| Standard | Standard | Customer-specified Azure geography | Strict geography-level residency |
| Regional Provisioned | ProvisionedManaged | Customer-specified Azure geography | Geography residency with reserved capacity |
| Global / Data Zone Batch | GlobalBatch | Global or data zone | Large asynchronous jobs — roughly 50% cheaper, not time-sensitive |
| Developer | Developer | Regional | Evaluating a fine-tuned model. No SLA, lowest cost, temporary |
High-yield deployment facts
- Data at rest always stays in the designated Azure geography — the deployment type governs where inferencing is processed, not storage.
- Global = may be processed in any Azure region. Data Zone = only within US, EU (the Azure EU Data Boundary, which can include EFTA countries such as Norway and Switzerland) or APAC. Standard/Regional = within the specified geography.
- New deployment types arrive in a fixed order: Global first, then Data Zone, then geography-based. Geography-based types arrive last and have no guaranteed date.
- "High consistent volume, latency variance is hurting us" → provisioned (PTUs), not more Standard quota.
- "Millions of documents to classify overnight, cost matters, latency does not" → Batch.
- Managed compute deployments do not use these types at all.
Foundry Tools
Foundry Tools is the new name for what were Azure AI Services (and before that, Cognitive Services). They are available through the Foundry resource and, in most cases, directly in the Foundry portal as playgrounds, as agent tools, and as MCP servers.
| Tool | Does | Main exam home |
|---|---|---|
| Content Understanding | Generative, schema-driven extraction from documents, images, audio and video, with confidence scores, source grounding, classification and segmentation. Outputs markdown or JSON. | Skills 3 and 5 |
| Azure Language | PII detection and redaction, NER (prebuilt and custom), language detection, sentiment and opinion mining, key phrase extraction, summarisation, text analytics for health, CLU, question answering. | Skill 4 |
| Azure Speech | Speech to text, text to speech (standard, HD and MAI voices), custom speech, custom neural voice, personal voice, avatars, speech translation, and the real-time Voice Live API. | Skill 4 |
| Azure Translator | Text and document translation across 100+ languages, plus Custom Translator for domain vocabulary. | Skill 4 |
| Azure AI Vision | Classic image analysis: captions and dense captions, OCR/Read, object and people detection, smart crops, spatial analysis. | Skill 3 |
| Azure AI Content Safety | The classification models behind Guardrails: harm categories, Prompt Shields, groundedness detection, protected material. | Skills 1 and 3 |
| Document Intelligence | The established prebuilt/custom document model service. Content Understanding is the newer, generative path; both still exist. | Skill 5 |
Containers and disconnected environments
Several Language tools ship as containers (sentiment analysis, NER, PII detection, text analytics for health, custom NER, summarisation), and some can run in disconnected environments. If a scenario has an air-gapped facility or data that cannot leave the premises, containers are the answer — generative models in Foundry are not.
Connections
A connection is how a Foundry resource or project reaches something outside itself: an Azure AI Search service, a Storage account, an Application Insights workspace, an MCP server, a Language resource, a Bing grounding resource. Connections can be created at resource scope (shared by every project) or project scope (private to one project).
Each connection carries an authentication method, and the choice matters:
| Auth method | When to use | Caveat |
|---|---|---|
| Microsoft Entra ID (managed identity) | Default and recommended. The project's or agent's managed identity authenticates. | Target resource needs a matching role assignment — this is the step people forget |
| API key | Quick setup, third parties that only support keys | Not supported with private virtual networking for the Azure AI Search tool |
| OAuth On-Behalf-Of (OBO) | The agent must act as the signed-in user, respecting their permissions | Requires identity passthrough support in the target |
| Unauthenticated | Genuinely public endpoints | Rare, and a red flag in enterprise scenarios |
The classic connection trap
"I created the connection but the agent gets 403 / cannot read the data." The connection existing is not the same as the identity being authorised. When you connect a resource created outside Foundry, you must add the Foundry account's or project's managed identity to a role on that resource — for example Storage Blob Data Reader on a storage account, or a Search role on an Azure AI Search service.
One endpoint, one API
The old world had you juggling five or more endpoints and SDK packages. Foundry gives you a single project endpoint:
https://<resource-name>.services.ai.azure.com/api/projects/<project-name>
Everything hangs off it: model inference, agents, conversations, files, vector stores, evaluations and traces. The
OpenAI-compatible surface lives at /openai/v1/ with stable v1 routes instead of
monthly api-version strings.
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
# Every Foundry project exposes exactly one endpoint:
# https://<resource-name>.services.ai.azure.com/api/projects/<project-name>
project = AIProjectClient(
endpoint="https://my-foundry.services.ai.azure.com/api/projects/my-project",
credential=DefaultAzureCredential(), # keyless: Entra ID token, no API key
)
# The project client hands you an OpenAI-compatible client bound to the project.
openai = project.get_openai_client()
response = openai.responses.create(
model="gpt-5-mini", # the deployment name in your project
input="Summarise the AI-103 exam in one sentence.",
)
print(response.output_text) Three details worth memorising from that snippet
AIProjectClientcomes fromazure-ai-projects2.x. The 1.x API is the classic one and is not compatible.project.get_openai_client()returns an OpenAI client already bound to the project — you do not constructAzureOpenAI()with a key and an api-version any more.- The call is
openai.responses.create(...), notchat.completions.create(...). The Responses API is the current surface; chat completions still work for plain model calls but agents and tools are built on responses.
Three ways to build, in one table
Detail lives in Skill 2, but the shape of the choice belongs here because it frames everything else.
| Prompt agent | Hosted agent | Ephemeral (Responses API direct) | |
|---|---|---|---|
| You supply | Instructions, model, tools — declaratively | Your code and framework, as a container or .zip | Your own runtime, anywhere |
| Foundry runs | Everything | Your container, with managed endpoint, scaling and identity | Nothing — you call the API |
| Agent resource in Foundry | Yes, versioned | Yes, versioned | No — the definition lives in your code |
| Cost model | Inference + tool usage | Inference + tool usage + container compute | Inference + tool usage |
| Best for | Fast start, production agents without custom orchestration | Custom code and orchestration, multi-agent systems, custom protocols | Agent logic that ships and versions with your app |
Identity, RBAC and keyless authentication
sequenceDiagram autonumber participant App as Your app participant Entra as Microsoft Entra ID participant Proj as Foundry project endpoint participant Model as Model deployment App->>Entra: DefaultAzureCredential requests a token<br/>(scope: ai.azure.com) Entra-->>App: Access token (no key stored anywhere) App->>Proj: POST /openai/v1/responses<br/>Authorization: Bearer token Proj->>Proj: Check Azure RBAC (Foundry User / Agent Consumer) Proj->>Model: Route to deployment, apply guardrails Model-->>Proj: Completion + content filter annotations Proj-->>App: Response object
The five Foundry roles
Azure separates management actions (control plane: create resources, deploy models) from development actions (data plane: build agents, call models). This is the single most common source of "why can't I do anything?" in Foundry — and a favourite exam target.
| Role | Create projects | Create accounts | Build in a project (data actions) | Assign roles | Manage models | Publish agents | Call agent endpoints |
|---|---|---|---|---|---|---|---|
| Foundry Agent Consumer | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✔ |
| Foundry User | ✘ | ✘ | ✔ | ✘ | ✘ | ✘ | ✔ |
| Foundry Project Manager | ✘ | ✘ | ✔ | ✔ (Foundry User only) | ✘ | ✔ | ✔ |
| Foundry Account Owner | ✔ | ✔ | ✘ | ✔ (limited set) | ✔ | ✘ | ✘ |
| Foundry Owner | ✔ | ✔ | ✔ | ✔ (limited set) | ✔ | ✔ | ✔ |
| Azure Owner | ✔ | ✔ | ✘ | ✔ (any role) | ✔ | ✔ | ✘ |
| Azure Contributor | ✔ | ✔ | ✘ | ✘ | ✔ | ✘ | ✘ |
| Azure Reader | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
The RBAC facts that get tested
- Azure Owner and Contributor grant no data-plane access. A subscription Owner still cannot build in a project without a Foundry role. "The developer is a Contributor but cannot create an agent" → assign Foundry User.
- Least privilege for a developer = Foundry User. Least privilege for something that only calls an agent = Foundry Agent Consumer.
- Fine-tuning needs both planes. Only Foundry Owner has both; otherwise combine Foundry User (data) + Foundry Account Owner (control).
- Publishing an agent needs at least Foundry Project Manager at resource scope.
- Do not assign roles beginning with Cognitive Services, and do not use Azure AI Developer — despite the name it is scoped to AML workspaces and hubs, not Foundry projects.
- Two assignments get you started: Foundry User on the resource for your user principal, and Foundry User for the project's managed identity. Both are automatic only when you create the project in the portal and you can assign roles — not via SDK or CLI.
Keyless, managed identity and network isolation
- Keyless credentials mean Entra ID tokens instead of API keys. In code that is
DefaultAzureCredential(orAzureCliCredentiallocally, a managed identity in Azure). No secret is stored, nothing to rotate, and access is revoked by removing a role assignment. - Agent identity: each agent can have its own dedicated Entra identity, so it authenticates to external MCP servers and APIs with scoped permissions rather than sharing the project's credentials. Hosted agents get a dedicated identity automatically.
- Private networking: private endpoints and VNet integration. Prompt agents support private networking; hosted agents support bring-your-own VNet, where each session runs in a VM-isolated sandbox attached to your network.
- Network egress controls preview restrict which outbound destinations a hosted agent may reach, configured in the same guardrail (RAI policy).
Developer surfaces
| Surface | Best for |
|---|---|
| Foundry portal (ai.azure.com) | Exploring the catalogue, playgrounds, building prompt agents with no code, running evaluations, reading traces |
| SDKs — Python, C#, JavaScript/TypeScript, Java | Application code. Python is what AI-103 shows you |
| Azure Developer CLI (azd) | Scaffolding, running and deploying hosted-agent projects from the command line |
| Visual Studio Code + Foundry extension | Building and debugging agents and workflows in the editor |
| REST API | Anything without an SDK; the exam occasionally shows curl against /openai/v1/responses |
| Coding agents + MCP | Driving Foundry from GitHub Copilot or similar, via the Foundry MCP server and skill |
Foundations glossary
- Foundry resource
- The single Azure resource that scopes models, agents, tools, RBAC, networking and policy.
- Foundry project
- A child resource of the Foundry resource; the workspace where agents, files, vector stores and evaluations live.
- Deployment
- A named, callable instance of a model in your resource. The name you pass as
model=. - Responses API
- The current inference and agent API (Agents v2). Replaces the Assistants API.
- Conversation
- Server-side multi-turn state. Replaces "thread". Holds items (replacing "messages").
- Agent version
- An immutable snapshot of an agent definition. Replaces "assistant"; enables rollback and comparison.
- Toolbox
- A curated, versioned collection of tools exposed through one managed MCP-compatible endpoint, reusable across agents and frameworks.
- Guardrail
- A named collection of controls; each control pairs a risk, an intervention point and an action.
- Foundry IQ
- The managed knowledge layer built on Azure AI Search that turns enterprise content into reusable, permission-aware knowledge bases for agents.
- PTU
- Provisioned Throughput Unit — the unit of reserved model capacity for provisioned deployment types.
- Foundry Tools
- The renamed Azure AI Services: Content Understanding, Language, Speech, Translator, Vision, Content Safety.
Checkpoint before moving on
You should now be able to answer, without looking: what resource do I create for a new agent solution; when do I still need a hub; what is the difference between Global Standard and Data Zone Standard; which role does a developer need versus an application that only calls an agent; and what replaced threads and runs. If any of those is shaky, re-read that section — every skill page below assumes them.