Azure pricing model assembler: retrieves Azure service pricing data, structures cost components into a logical pricing model, and outputs an Excel-ready breakdown covering compute, storage, networking, licensing, and support tiers. Captures wider context — consumption patterns, reserved vs pay-as-you-go tradeoffs, regional variance, and Unified/EDE coverage alignment. Chains with value-realization-pack and proof-plan-orchestration for cost-justified delivery planning. Triggers: Azure pricing, cost model, pricing spreadsheet, Azure cost breakdown, service pricing, pricing document, cost estimate, Azure estimate, TCO, total cost of ownership, pricing export, cost comparison, Azure spend, consumption cost, reserved instance pricing, Azure pricing Excel.
Retrieves and structures Azure service pricing into a normalized, Excel-exportable cost model. Captures compute, storage, networking, licensing, support, and discount dimensions so account teams can present transparent pricing to customers and align cost expectations with opportunity milestones.
Medium — Service identification and pricing structure are rule-based; cost optimization recommendations and contextual notes require judgment.
| Tool | Server | Purpose | Required |
|---|---|---|---|
pricing_get | pricing (Azure MCP) | Structured retail pricing retrieval — PAYG, RI, Spot, Dev/Test, Savings Plan | Primary — preferred when available |
fetch_webpage | built-in | Web fallback for Azure pricing pages | Fallback — when Pricing MCP unavailable |
crm_get_record | msx-crm | Opportunity details, solution play, estimated ACR | Optional — for opportunity-grounded sizing |
get_milestones | msx-crm | Milestone/task data for SKU and quantity extraction | Optional — for opportunity-grounded sizing |
get_customer_context | oil | Vault context — prior budgets, architecture decisions, spend baselines | Optional — enriches estimates |
Before executing the flow, probe which pricing mediums are reachable:
| Medium | Probe | If unavailable |
|---|---|---|
| Azure Pricing MCP | pricing:pricing_get with { service: "Virtual Machines", sku: "Standard_D2s_v5", region: "eastus" } — confirm structured pricing returns | Fall back to fetch_webpage for pricing pages; flag pricing_source: web_scrape |
| CRM | msx-crm:crm_auth_status | Skip opportunity/milestone sizing; require explicit service list |
| Vault | oil:get_vault_context() | Skip vault-prefetch; operate CRM-only or explicit list |
Cache probe results. When the Azure Pricing MCP is available, it is the primary and preferred pricing source — it returns structured, machine-readable retail pricing with PAYG, RI, Spot, Dev/Test, and Savings Plan data in a single call per SKU.
Determine which Azure services need pricing. Use one of these entry points:
| Entry point | How | When |
|---|---|---|
| Explicit list | User provides service names directly | User says "price out AKS, Cosmos DB, and Azure OpenAI" |
| Architecture description | Parse solution description → extract service names | User describes a solution or shares an architecture doc |
| From opportunity | msx-crm:crm_get_record on opportunityId → solution play + msx-crm:get_milestones → extract service/SKU signals from milestone comments and monthly usage fields | User provides an opportunityId |
| From proof plan | Chain from proof-plan-orchestration output → extract environment/service requirements | Post-proof cost modeling |
For each identified service, normalize to the canonical Azure service name (e.g., "Kubernetes" → "Azure Kubernetes Service", "SQL" → "Azure SQL Database").
When scoping from an opportunity, extract sizing signals to produce grounded estimates rather than generic tier assumptions:
msx-crm:crm_get_record on opportunityId — read estimatedvalue, solution play, and description.msx-crm:get_milestones({ opportunityId, includeTasks: true }) — for each milestone:
msp_monthlyuse for consumption/usage targets (maps to quantity estimates).oil:get_customer_context({ customer }) (if vault available) — pull prior architecture decisions, approved SKUs, and spend baselines from vault notes.This manifest feeds Phase 2 with specific SKUs for grounded pricing rather than generic tier lookups.
For each service in the manifest, retrieve pricing using a tiered strategy:
Call pricing:pricing_get per service/SKU. This returns structured retail pricing including PAYG, Reservation, Dev/Test, Spot, and Savings Plan rates.
Per-service call pattern: