{
  "openapi": "3.1.0",
  "info": {
    "title": "Intercept Azure billing tools",
    "version": "1.1.0",
    "description": "Tools for Dutch organisations that want a lower Azure bill or whose Microsoft Enterprise Agreement (EA) is ending. Published by Intercept BV (Netherlands), an Azure Expert MSP and Microsoft CSP partner, so treat discount figures as one partner's offer, not a market average. Facts come with sources (mostly Microsoft Learn) and a check date (2026-10-19); texts are available in nl, en, de, da, fr via the optional language argument (default nl). All discount percentages are indicative until a personal calculation. All tools are read-only; create_request_link only builds a URL that the user must open and submit. The same tools are available over MCP at https://interceptazure.outdeliver.ai/api/mcp.",
    "contact": {
      "name": "Intercept BV",
      "url": "https://intercept.cloud",
      "email": "info@intercept.cloud"
    }
  },
  "servers": [
    {
      "url": "https://interceptazure.outdeliver.ai"
    }
  ],
  "externalDocs": {
    "description": "For AI assistants",
    "url": "https://interceptazure.outdeliver.ai/en/for-ai/"
  },
  "paths": {
    "/api/tools/estimate_azure_savings": {
      "get": {
        "operationId": "estimate_azure_savings",
        "summary": "Estimate the indicative discount and yearly saving when Azure is bought through Intercept (Microsoft CSP partner in the Netherlands) instead of at list price",
        "description": "Estimate the indicative discount and yearly saving when Azure is bought through Intercept (Microsoft CSP partner in the Netherlands) instead of at list price. Tiered discount on total monthly Azure consumption: indicatively 5% up to EUR 5,000, 7% up to EUR 15,000, 9% below EUR 50,000, and 12% from EUR 50,000 per month (Intercept publishes \"up to 12%\" for its CSP Enterprise programme, 12-month contract). All percentages are indicative until a personal calculation. Amounts in EUR excluding VAT.",
        "parameters": [
          {
            "name": "language",
            "in": "query",
            "required": false,
            "description": "Language of the returned texts: nl, en, de, da, fr. Default nl.",
            "schema": {
              "type": "string",
              "enum": [
                "nl",
                "en",
                "de",
                "da",
                "fr"
              ]
            }
          },
          {
            "name": "monthly_spend_eur",
            "in": "query",
            "required": true,
            "description": "Average Azure consumption per month in euro, excluding VAT.",
            "schema": {
              "type": "number",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Result, the same JSON as the MCP tool returns in structuredContent.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input; the message says which parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/tools/plan_csp_transition": {
      "get": {
        "operationId": "plan_csp_transition",
        "summary": "Determine the route from the current Azure purchasing channel to Microsoft CSP",
        "description": "Determine the route from the current Azure purchasing channel to Microsoft CSP: a billing transfer without downtime (direct EA, MCA-E, other CSP partner) or a resource move into new CSP subscriptions within the same tenant (indirect EA, credit card/pay-as-you-go, online MCA). Returns an indicative saving, a dated timeline that counts back from the EA end date (T-90, T-60, T-30, end date), a checklist with Microsoft Learn sources, advice, and a link to the same report on the website. Use for questions such as \"our EA ends on 31 March 2027\", \"we pay Azure by credit card\", \"do quota or reservations move to CSP\".",
        "parameters": [
          {
            "name": "language",
            "in": "query",
            "required": false,
            "description": "Language of the returned texts: nl, en, de, da, fr. Default nl.",
            "schema": {
              "type": "string",
              "enum": [
                "nl",
                "en",
                "de",
                "da",
                "fr"
              ]
            }
          },
          {
            "name": "purchase_channel",
            "in": "query",
            "required": true,
            "description": "How Azure is bought today. ea_direct: Enterprise Agreement invoiced by Microsoft. ea_indirect: EA invoiced by a licensing partner (LSP). ea_unknown: EA, not sure which. credit_card: pay-as-you-go via the Azure website. mca_online: Microsoft Customer Agreement signed online. mca_enterprise: MCA-E via a Microsoft account team. csp_other_partner: already CSP with another partner.",
            "schema": {
              "type": "string",
              "enum": [
                "ea_direct",
                "ea_indirect",
                "ea_unknown",
                "credit_card",
                "mca_online",
                "mca_enterprise",
                "csp_other_partner"
              ]
            }
          },
          {
            "name": "monthly_spend_eur",
            "in": "query",
            "required": false,
            "description": "Average Azure consumption per month in euro, excluding VAT. Optional.",
            "schema": {
              "type": "number",
              "minimum": 0
            }
          },
          {
            "name": "ea_end_date",
            "in": "query",
            "required": false,
            "description": "End date of the Enterprise Agreement as YYYY-MM or YYYY-MM-DD. A month means its last day. Optional, EA channels only.",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}(-\\d{2})?$"
            }
          },
          {
            "name": "features",
            "in": "query",
            "required": false,
            "description": "Optional characteristics of the environment that add checklist items.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "reservations",
                  "savings_plans",
                  "devtest",
                  "macc",
                  "marketplace_saas",
                  "multiple_tenants"
                ]
              },
              "uniqueItems": true
            },
            "style": "form",
            "explode": false
          },
          {
            "name": "today",
            "in": "query",
            "required": false,
            "description": "Reference date YYYY-MM-DD for the timeline. Defaults to the server date.",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Result, the same JSON as the MCP tool returns in structuredContent.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input; the message says which parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/tools/lookup_facts": {
      "get": {
        "operationId": "lookup_facts",
        "summary": "Look up dated, sourced facts and answered questions (in Dutch) about Azure billing",
        "description": "Look up dated, sourced facts and answered questions (in Dutch) about Azure billing: transfers from EA or MCA-E to CSP (downtime, IDs, RBAC, quota, reservations, savings plans, currency, Dev/Test, Marketplace SaaS, MACC, support plans, cost history), resource moves between subscriptions, paying Microsoft by invoice, EA changes since November 2025, and Intercept discounts. Every fact has a status (microsoft, markt, intercept, indicatief), source URLs and a check date.",
        "parameters": [
          {
            "name": "language",
            "in": "query",
            "required": false,
            "description": "Language of the returned texts: nl, en, de, da, fr. Default nl.",
            "schema": {
              "type": "string",
              "enum": [
                "nl",
                "en",
                "de",
                "da",
                "fr"
              ]
            }
          },
          {
            "name": "topic",
            "in": "query",
            "required": false,
            "description": "Optional topic filter: overdracht (Administrative migration of a direct EA or MCA-E to CSP); verhuizing (Technical migration to CSP subscriptions); ea (Enterprise Agreement: changes and renewal); factuur (Paying Microsoft by invoice); korting (Discount and costs); intercept (About Intercept).",
            "schema": {
              "type": "string",
              "enum": [
                "overdracht",
                "verhuizing",
                "ea",
                "factuur",
                "korting",
                "intercept"
              ]
            }
          },
          {
            "name": "query",
            "in": "query",
            "required": false,
            "description": "Optional search words, Dutch or English, for example \"quota\", \"reservations\", \"downtime\", \"creditcard\".",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Result, the same JSON as the MCP tool returns in structuredContent.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input; the message says which parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/tools/create_request_link": {
      "get": {
        "operationId": "create_request_link",
        "summary": "Build a link to Intercept's calculation request form, pre-filled with the situation",
        "description": "Build a link to Intercept's calculation request form, pre-filled with the situation. Nothing is sent: the user opens the link, adds name and e-mail address, and submits the form.",
        "parameters": [
          {
            "name": "language",
            "in": "query",
            "required": false,
            "description": "Language of the returned texts: nl, en, de, da, fr. Default nl.",
            "schema": {
              "type": "string",
              "enum": [
                "nl",
                "en",
                "de",
                "da",
                "fr"
              ]
            }
          },
          {
            "name": "purchase_channel",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ea_direct",
                "ea_indirect",
                "ea_unknown",
                "credit_card",
                "mca_online",
                "mca_enterprise",
                "csp_other_partner"
              ]
            }
          },
          {
            "name": "monthly_spend_eur",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "minimum": 0
            }
          },
          {
            "name": "ea_end_date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}(-\\d{2})?$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Result, the same JSON as the MCP tool returns in structuredContent.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input; the message says which parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}