[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-azure-azure-functions-agents":3,"mdc-qd90mq-key":35,"related-repo-azure-azure-functions-agents":2302,"related-org-azure-azure-functions-agents":2397},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":30,"sourceUrl":33,"mdContent":34},"azure-functions-agents","build and deploy Azure Functions agents","Build, scaffold, extend, deploy, and troubleshoot Azure Functions serverless agents and event-driven AI agents using the Azure Functions serverless agents runtime. Use when the user says serverless agent, serverless agents, Azure Functions agent, scheduled agent, morning briefing, daily digest, timer agent, inbox summary, email or Teams briefing, background AI workflow, connector-triggered agent, event-driven AI automation, HTTP\u002Fchat agent, webhook-style agent, or Azure Functions hosted agent.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"azure","Azure (Microsoft)","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fazure.png","Azure",[13,15,18,21],{"name":11,"slug":8,"type":14},"tag",{"name":16,"slug":17,"type":14},"Deployment","deployment",{"name":19,"slug":20,"type":14},"Agents","agents",{"name":22,"slug":23,"type":14},"Serverless","serverless",12,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-functions-skills","2026-07-12T08:19:28.200894",null,1,[],{"repoUrl":25,"stars":24,"forks":28,"topics":31,"description":32},[],"A repository for Azure Functions skills, prompts, and reusable definitions to support agentic development and operational workflows.","https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-functions-skills\u002Ftree\u002FHEAD\u002Ftemplates\u002Fskills\u002Fazure-functions-agents","---\nname: azure-functions-agents\ndescription: \"Build, scaffold, extend, deploy, and troubleshoot Azure Functions serverless agents and event-driven AI agents using the Azure Functions serverless agents runtime. Use when the user says serverless agent, serverless agents, Azure Functions agent, scheduled agent, morning briefing, daily digest, timer agent, inbox summary, email or Teams briefing, background AI workflow, connector-triggered agent, event-driven AI automation, HTTP\u002Fchat agent, webhook-style agent, or Azure Functions hosted agent.\"\nargument-hint: 'Describe the agent, trigger, tools, model needs, and deployment target'\n---\n\n# Azure Functions Agents\n\nUse this skill to build serverless agents on Azure Functions with the Azure Functions serverless\nagents runtime. Align terminology and flows with the Microsoft Learn quickstart \"Build serverless\nagents using Azure Functions\": agents are defined in markdown files, runtime defaults live in\n`agents.config.yaml`, remote MCP servers live in `mcp.json`, and deployment uses `azd`.\n\n## Current Defaults\n\n- Scaffold with Microsoft Foundry as the model provider.\n- Scaffold files may keep `gpt-4.1` as the safe Bicep fallback, but before provisioning or\n  deploying, check the user's subscription\u002Fregion for the best deployable GPT model and quota.\n- Prefer the newest deployable GPT reasoning model with remaining quota when available, such as\n  `gpt-5.4` or newer. Only configure reasoning settings for models known to support them. Older\n  models can fail if `AZURE_FUNCTIONS_AGENTS_REASONING_*` settings are present.\n- For `gpt-5.x` and other reasoning-capable models, use reasoning effort `medium` by default,\n  `high` when the task needs deeper reasoning or the agent is underthinking, `xhigh` only when the\n  selected model supports it, and reasoning summary `concise`.\n- If an agent needs web browsing, current public data, browser automation, data analysis, or code\n  execution, use Azure Container Apps dynamic sessions. Do not write custom web-fetch tools for\n  those cases.\n- Use remote HTTP MCP servers and connection MCP servers from `mcp.json`; local `stdio` MCP\n  servers are not supported by the runtime. When the user brings a stdio MCP server, convert the\n  needed actions into Python custom tools or use a hosted remote MCP endpoint.\n- Use Connector Namespaces, represented as `Microsoft.Web\u002FconnectorGateways` resources in Bicep.\n- Generated apps should include a ready-to-edit `src\u002Flocal.settings.json`, not only a template.\n- Generated `requirements.txt` should use `azurefunctions-agents-runtime[monitor]` whenever the app\n  includes `APPLICATIONINSIGHTS_CONNECTION_STRING` (the scaffolded infra provisions it by default),\n  so the runtime auto-exports `agent.run` and `dynamic_session.execute` spans to Application Insights\n  with no extra code. If the retrieved template ships the base `azurefunctions-agents-runtime`, add\n  the `[monitor]` extra. When the app has no Application Insights, use the base package and either\n  prompt the user to add it or omit telemetry.\n\n## Progressive References\n\nLoad only the files needed for the task:\n\n| Need | Reference |\n| --- | --- |\n| Required files and scaffold contents | [project-files.md](.\u002Freferences\u002Fproject-files.md) |\n| Agent frontmatter, triggers, built-in endpoints | [agent-files.md](.\u002Freferences\u002Fagent-files.md) |\n| Trigger schemas, connector triggers, built-in endpoint routes | [triggers.md](.\u002Freferences\u002Ftriggers.md) |\n| Built-in chat APIs, session IDs, built-in MCP tools | [built-in-endpoints.md](.\u002Freferences\u002Fbuilt-in-endpoints.md) |\n| Local\u002Fdeployed testing recipes by trigger type | [testing.md](.\u002Freferences\u002Ftesting.md) |\n| Foundry model defaults, upgrades, reasoning settings | [models.md](.\u002Freferences\u002Fmodels.md) |\n| Dynamic sessions for code execution and web browsing | [sessions.md](.\u002Freferences\u002Fsessions.md) |\n| Connector Namespace overview, naming, and safety boundaries | [connectors.md](.\u002Freferences\u002Fconnectors.md) |\n| Remote MCP server entries, headers\u002Fauth, Connector MCP server configs, authorization, `mcp.json`, and inspection | [connector-mcp.md](.\u002Freferences\u002Fconnector-mcp.md) |\n| Connector operation IDs, schemas, and dynamic parameters | [connector-schemas.md](.\u002Freferences\u002Fconnector-schemas.md) |\n| Microsoft Teams connector targets, links, schemas, and troubleshooting smoke tests | [connector-teams.md](.\u002Freferences\u002Fconnector-teams.md) |\n| Connector side-effect smoke tests for Teams, Outlook, and MCP tools | [connector-smoke-tests.md](.\u002Freferences\u002Fconnector-smoke-tests.md) |\n| Connector-triggered agents and trigger config deployment | [connector-triggers.md](.\u002Freferences\u002Fconnector-triggers.md) |\n| Custom Python tools and Agent Skills | [tools-and-skills.md](.\u002Freferences\u002Ftools-and-skills.md) |\n| Writing robust agent instructions | [agent-authoring.md](.\u002Freferences\u002Fagent-authoring.md) |\n| Bicep, azd, deployment, local development | [infra-and-deployment.md](.\u002Freferences\u002Finfra-and-deployment.md) |\n| Azure resource naming abbreviations used by the Bicep assets | [abbreviations.json](.\u002Freferences\u002Fabbreviations.json) |\n| Diagnostics and common failures | [troubleshooting.md](.\u002Freferences\u002Ftroubleshooting.md) |\n| Official serverless agents quickstart template and Learn article | [quickstart-reference.md](.\u002Freferences\u002Fquickstart-reference.md) |\n\n## Assess the Workspace\n\nBefore editing, inspect the app. Look for:\n\n- `src\u002Ffunction_app.py` importing `create_function_app()`\n- `src\u002F*.agent.md`\n- `src\u002Fagents.config.yaml`\n- `src\u002Fmcp.json`\n- `src\u002Ftools\u002F` and `src\u002Fskills\u002F`\n- `src\u002Flocal.settings.json`\n- `infra\u002Fmain.bicep`, `infra\u002Fapp\u002F*.bicep`, `infra\u002Fmain.parameters.json`\n- `azure.yaml`\n- `.azure\u002F*\u002Fconfig.json` for existing `azd` environments\n\nFor existing apps, read the current files and preserve the app's structure. Current apps should\nuse explicit `builtin_endpoints`, `trigger.args`, Foundry provider settings, `agents.config.yaml`\nfor shared runtime defaults, and Connector Namespace MCP entries in `mcp.json`.\n\nWhen inspecting deployed connectors, remember that Connector Namespace resources live under\n`Microsoft.Web\u002FconnectorGateways`. Connections are `connectorGateways\u002F\u003Cgateway>\u002Fconnections`, MCP\nserver configs are `connectorGateways\u002F\u003Cgateway>\u002Fmcpserverconfigs`, and trigger configs are\n`connectorGateways\u002F\u003Cgateway>\u002Ftriggerconfigs`. Do not search for legacy top-level\n`Microsoft.Web\u002Fconnections` to find Connector Namespace connections.\n\n## Discuss and Plan the Agent\n\nWhen the user says they want to create an agent, do not jump straight to files unless the request\nalready contains enough detail. First learn enough to shape the app and discuss a short plan.\n\nAsk only the questions needed to move forward, usually covering:\n\n- **Goal:** What should the agent accomplish, and what should a successful run produce?\n- **Invocation:** Should it be chat\u002FAPI-driven, scheduled, event-triggered, connector-triggered,\n  or some combination?\n- **Inputs and outputs:** What data starts the run, and should the result be returned, logged,\n  emailed, posted, drafted, stored, or sent somewhere else?\n- **Interactive surfaces:** Does the user want to chat with the agent, expose a chat\u002FAPI surface,\n  stream responses, or expose the agent as a built-in MCP tool? Enable built-in endpoints only for\n  those interactive scenarios.\n- **Tools and services:** Does it need web\u002Fcode execution, Microsoft Learn, Office 365, Teams,\n  Azure Resource Manager, storage, queues, databases, or custom APIs?\n- **Teams targets:** If the agent needs a Teams team, channel, or chat target, ask the user to\n  paste a Teams link and parse IDs from it on their behalf. Do not ask them to manually find raw\n  team IDs, channel IDs, or chat IDs. Load [connector-teams.md](.\u002Freferences\u002Fconnector-teams.md)\n  before wiring Teams posting or diagnosing a missing Teams message.\n- **Safety boundaries:** For actions like email, Teams posts, ticket creation, or resource changes,\n  should the agent draft, ask for confirmation, or act automatically?\n- **Model selection:** Which Azure subscription and region should be checked for GPT model access\n  and quota? If the user has not specified them, use the current Azure CLI subscription and the\n  planned `AZURE_LOCATION`.\n- **Deployment preference:** Default to building and deploying to Azure with `azd up`, but offer\n  to run locally first if the user wants a local iteration loop.\n\nDo not ask the user to estimate runtime duration unless the workflow is obviously unusual or may\nrun longer than the standard background-agent defaults. Set practical timeouts yourself: keep\nsimple chat\u002FAPI agents at the runtime default, set timer, connector-triggered, queue, and other\nbackground agents to 30 minutes, and align `host.json` `functionTimeout` to the longest agent\ntimeout. For synchronous HTTP work that may take longer than about 230 seconds, choose a\nbackground\u002Fdeferred pattern instead of relying on a longer HTTP response.\n\nDo not add `builtin_endpoints` or a `main.agent.md` debug\u002Fchat agent just to test a scheduled,\ntimer, connector-triggered, queue, or other background workflow. If the user asks for a chat bot,\ndebug chat UI, chat API, streaming API, or says they want to talk to the agent, enable the\nappropriate built-in endpoints for that agent or add a separate interactive agent. Otherwise,\nverify background agents with the admin invoke endpoint and Application Insights.\n\nAfter the discovery, summarize the plan before editing. Include the agent files, trigger or\nbuilt-in endpoints, model choice, tools\u002FMCP\u002Fconnectors, infrastructure changes, and how it will be\ntested. If the user has already provided enough detail, make reasonable choices and proceed.\n\n## Scaffold a New App\n\nUse **manifest discovery + MCP primary retrieval** when Azure MCP tools are available:\n\n1. Fetch the Azure Functions template manifest from\n   `https:\u002F\u002Fcdn.functions.azure.com\u002Fpublic\u002Ftemplates-manifest\u002Fmanifest.json` and find\n   `ai-serverless-agents-python`. Use its catalog metadata (`priority`, `categories`, `tags`,\n   `whatsIncluded`) to explain why this is the correct serverless agents scaffold. Keep\n   `repositoryUrl`, `folderPath`, and `gitRef` for fallback.\n2. Call Azure MCP `functions_template_get` with `language: python` and\n   `template: ai-serverless-agents-python`. This is the primary source for the complete project\n   files.\n3. Write the returned `files` array into the target project. If the output is truncated or saved to\n   a temporary file, read the complete JSON response before deciding retrieval failed.\n4. If MCP returns an actual tool error, cannot retrieve the template, or returns an empty\u002Fzero-file\n   result after reading the complete response, fall back to the manifest `repositoryUrl`,\n   `folderPath`, and `gitRef` using direct GitHub download first and `git clone --depth 1` only if\n   downloads fail. Tell the user that MCP retrieval failed and GitHub fallback was used.\n\nWhen Azure MCP tools are not available, skip directly to the manifest\u002FGitHub fallback above. Do not\ninvent a project structure from memory.\n\nDo not use bundled template files as a scaffold source. This skill intentionally does not include a\nfull copy of the serverless agents template because the template evolves independently; always\nretrieve it from MCP first or from the manifest GitHub coordinates as fallback.\n\nAfter scaffolding from MCP or GitHub, tailor the app to the user's agent.\n\nBaseline structure:\n\n```text\n\u003Cproject-root>\u002F\n  azure.yaml\n  infra\u002F\n    abbreviations.json\n    main.bicep\n    main.parameters.json\n    app\u002F\n      api.bicep\n      connector-gateway.bicep\n      trigger-config.bicep        # if using connector triggers\n      foundry.bicep\n      rbac.bicep\n      session-pool.bicep\n      session-pool-rbac.bicep\n  src\u002F\n    function_app.py\n    host.json\n    local.settings.json\n    requirements.txt\n    .funcignore\n    agents.config.yaml\n    main.agent.md              # only when the user wants chat\u002FAPI\u002FMCP endpoints\n    \u003Cagent-name>.agent.md\n    mcp.json\n```\n\nDefault scaffold choices:\n\n- Python 3.13 in Bicep.\n- Foundry provider. Keep `gpt-4.1` in template defaults only as a safe fallback.\n- Before running `azd provision` or `azd up`, run the model and quota checks in\n  [models.md](.\u002Freferences\u002Fmodels.md), recommend the best deployable GPT model, and set the\n  `FOUNDRY_MODEL`, `FOUNDRY_MODEL_NAME`, `FOUNDRY_MODEL_VERSION`, `FOUNDRY_DEPLOYMENT_CAPACITY`,\n  and reasoning env vars when a better reasoning-capable model is selected.\n- No reasoning app settings unless the app is explicitly upgraded to a reasoning-capable model.\n- ACA dynamic session pool when any agent needs code execution or web browsing.\n- Optional Office 365 Outlook connection MCP server when `TO_EMAIL` is set.\n- Built-in endpoints only when the scenario is interactive. Do not add debug chat UI, chat API,\n  streaming API, built-in MCP, or a general `main.agent.md` to a scheduled-only\u002Fbackground-only app\n  unless the user asked for that surface.\n- Explicit timeout settings: use `functionTimeout: \"00:30:00\"` in `host.json` for background-capable\n  apps, keep simple chat\u002FAPI agents at `timeout: 900`, and set timer, connector-triggered, queue,\n  or other long-running background agents to `timeout: 1800` unless the task clearly needs more.\n- Connector-triggered apps use the preview extension bundle and a second-step trigger config\n  deployment after the `connector_extension` system key exists.\n- `local.settings.json` includes local storage and Foundry\u002FMCP placeholders.\n\nAfter copying, remove or adjust sample-specific agents and instructions. Keep infrastructure\nmodules only when the app needs them.\n\n## Local Development First Rule\n\nDefault to deploying new apps to Azure with `azd up`; these agents are designed for managed\nidentity, Foundry, dynamic sessions, Connector Namespaces, Application Insights, and Functions\nhosting. Offer to run locally first when the user wants to iterate before deploying, and explain\nthe local tools required.\n\nLocal prerequisites:\n\n- Azure Developer CLI (`azd`)\n- Azure Functions Core Tools v4\n- Python 3.13+\n- Azurite, when using `AzureWebJobsStorage=UseDevelopmentStorage=true`\n- Azure CLI login for local managed-identity-equivalent access\n\nWhen an app uses Foundry, dynamic sessions, or connector MCP servers, run `azd provision` before\nlocal development. Local `func start` still calls real Azure resources for model, session pool,\nand connector operations.\n\nLocal loop:\n\n1. `azd init`\n2. `azd provision`\n3. Copy outputs from `azd env get-values` into `src\u002Flocal.settings.json`.\n4. Start Azurite with `azurite --skipApiVersionCheck`.\n5. From `src`, create a venv, install requirements, and run `func start`.\n\nThe scaffolded Bicep grants the deployer\u002Flocal user access to Foundry and the session pool, and\nconnection access policies when optional connectors are enabled.\n\n## Build or Modify Agents\n\nEach `.agent.md` file defines one agent. Use YAML frontmatter for runtime configuration and\nmarkdown for behavior. The file stem becomes the function name and built-in endpoint route\nsegment.\n\nChoose endpoints from the scenario, not from testing convenience. Scheduled-only, timer,\nconnector-triggered, queue, and other background agents should omit `builtin_endpoints` unless the\nuser asks to talk to that agent, expose it as an API, or expose it as a built-in MCP tool. Use the\nadmin endpoint and Application Insights to test background agents.\n\nCurrent trigger example:\n\n```yaml\n---\nname: Daily Report\ndescription: Sends a daily report.\n\ntrigger:\n  type: timer_trigger\n  args:\n    schedule: \"0 0 15 * * *\"\n\nmcp: true\n---\n```\n\nCurrent built-in endpoint example:\n\n```yaml\n---\nname: Chat Agent\ndescription: Interactive agent for testing.\n\nbuiltin_endpoints:\n  debug_chat_ui: true\n  chat_api: true\n  mcp: true\n\nmcp: false\n---\n```\n\nLoad [agent-files.md](.\u002Freferences\u002Fagent-files.md) before adding less common frontmatter fields.\n\n## Model Selection Guidance\n\nFor new scaffolds, keep `gpt-4.1` as the safe Bicep default, but actively try to select the best\ndeployable GPT model before provisioning. Use `az cognitiveservices model list` and\n`az cognitiveservices usage list` to check the user's subscription, target region, model version,\ndeployment SKU, and quota. See [models.md](.\u002Freferences\u002Fmodels.md) for copyable commands.\n\nDo not silently deploy `gpt-4.1` just because it is the template default. Either run the model\nand quota checks and choose\u002Frecommend a better deployable model, or state why the checks could not\nbe run and then use `gpt-4.1` without reasoning settings.\n\nRecommend the newest deployable GPT reasoning model with remaining quota. Ask the user to choose\nwhen there are meaningful tradeoffs, such as newer\u002Fslower\u002Fcostlier reasoning models versus smaller\nmini\u002Fnano models. If no reasoning-capable model has quota, or if availability\u002Fquota discovery\ncannot determine what the user can deploy, use `gpt-4.1` without reasoning settings.\n\nWhen selecting a reasoning-capable model, confirm reasoning support from the Azure OpenAI\nreasoning models documentation, then set model and reasoning values together. Use reasoning effort\n`medium` by default. Offer `high` and increased deployment capacity when the task needs deeper\nreasoning or the deployed agent is underthinking. Use `xhigh` only when the selected model supports\nit and the user wants maximum reasoning with possible latency\u002Fcost tradeoffs. Use reasoning summary\n`concise`.\n\n## Deploy and Verify\n\nFor new apps, use `azd up` from the project root. If the user has agreed to deploy, run the\ndeployment commands yourself instead of stopping after printing them. Set required `azd` env vars,\nrun `azd init` when needed, run model\u002Fquota checks before provisioning, confirm the active Azure\nsubscription, then run `azd up` with a generous timeout. Pause only for information you genuinely\nneed from the user, such as a missing recipient email, region choice, subscription confirmation,\nor portal-only connector authorization. Do not route secrets through chat.\n\nBefore `azd provision` or `azd up`, run `az account show --query \"{name:name,id:id,tenantId:tenantId}\"`\nand show the selected subscription to the user unless they already explicitly named the subscription\nfor this deployment. If it is not the intended subscription, have the user choose or run\n`az account set --subscription \u003Csubscription-id>` before provisioning. Do not deploy to whichever\nAzure CLI subscription happens to be active without making that choice visible.\n\nUnless the user explicitly asks for continuous deployment, deploy from the local workspace with\n`azd up`. Do not create GitHub Actions workflows, CI\u002FCD pipeline files, repository secrets, or run\n`azd pipeline config` for a normal app deployment request.\n\nAfter deployment, verify outputs with `azd env get-values`, open or provide the relevant app URL,\nshow the user how to get the default function key only when built-in chat UI\u002FAPI endpoints are\npresent, open Connector Namespace authorization links when connectors are present, check\nconnection status, and run a smoke test when practical. For timer or other non-HTTP agents,\nmanually trigger the function with the admin endpoint after deployment, then query Application\nInsights requests, traces, and exceptions for that run. For built-in chat agents, open or provide\nthe `\u002Fagents\u002F\u003Cslug>\u002F` URL and call the chat API if useful. Do not rely on `az functionapp log tail`\nfor Flex Consumption agent diagnostics.\n\nWhen a manual trigger starts a timer\u002Fbackground agent, tell the user what to expect before waiting:\nthe admin endpoint often returns `202 Accepted`, the agent may run for several minutes, and\nApplication Insights can lag. Give short progress updates while checking telemetry, especially for\nruns that take 5-10 minutes. If telemetry does not appear after a reasonable wait, or the function\nappears stuck past its expected duration, say so and switch to troubleshooting instead of silently\nwaiting or repeatedly triggering the function.\n\nFor connector actions with visible side effects, such as Teams posts or Outlook messages, verify\nthe downstream side effect after the first run. If the user reports it is missing, do not keep\ntriggering the agent. Inspect the recorded tool result\u002Fsession and run a focused connector smoke\ntest with the same arguments before changing model settings or rerunning the full workflow.\n\nBe hands-on after scaffolding. Do not stop at a command list when the next command is safe and the\nuser already approved the direction. Run `azd up`, open authorization URLs, run `azd env\nget-values`, test deployed endpoints, and report the results. Stop only for user-only actions such\nas signing in to authorize a connector, selecting an ambiguous option, or entering secrets.\n\nWhen creating backing Azure resources beyond this skill's bundled Bicep, use Azure docs. If the\nagent needs searchable docs context, ask the user to connect the Microsoft Learn MCP server at\n`https:\u002F\u002Flearn.microsoft.com\u002Fapi\u002Fmcp`.\n\nUseful endpoints:\n\n- Chat UI, when enabled: `\u002Fagents\u002F\u003Cagent-file-stem>\u002F`\n- Chat API, when enabled: `POST \u002Fagents\u002F\u003Cagent-file-stem>\u002Fchat`\n- Streaming chat API, when enabled: `POST \u002Fagents\u002F\u003Cagent-file-stem>\u002Fchatstream`\n- MCP endpoint, when enabled: `\u002Fruntime\u002Fwebhooks\u002Fmcp`\n- Manual non-HTTP trigger: `POST \u002Fadmin\u002Ffunctions\u002F\u003Cagent-file-stem>`\n",{"data":36,"body":38},{"name":4,"description":6,"argument-hint":37},"Describe the agent, trigger, tools, model needs, and deployment target",{"type":39,"children":40},"root",[41,49,80,87,287,293,298,657,663,668,790,823,867,873,878,883,998,1019,1039,1044,1050,1062,1214,1219,1224,1229,1234,1246,1251,1421,1426,1432,1444,1449,1490,1510,1515,1585,1590,1596,1609,1621,1626,1804,1809,1951,1962,1968,2001,2020,2031,2063,2069,2102,2136,2156,2184,2197,2202,2221,2233,2238,2296],{"type":42,"tag":43,"props":44,"children":45},"element","h1",{"id":4},[46],{"type":47,"value":48},"text","Azure Functions Agents",{"type":42,"tag":50,"props":51,"children":52},"p",{},[53,55,62,64,70,72,78],{"type":47,"value":54},"Use this skill to build serverless agents on Azure Functions with the Azure Functions serverless\nagents runtime. Align terminology and flows with the Microsoft Learn quickstart \"Build serverless\nagents using Azure Functions\": agents are defined in markdown files, runtime defaults live in\n",{"type":42,"tag":56,"props":57,"children":59},"code",{"className":58},[],[60],{"type":47,"value":61},"agents.config.yaml",{"type":47,"value":63},", remote MCP servers live in ",{"type":42,"tag":56,"props":65,"children":67},{"className":66},[],[68],{"type":47,"value":69},"mcp.json",{"type":47,"value":71},", and deployment uses ",{"type":42,"tag":56,"props":73,"children":75},{"className":74},[],[76],{"type":47,"value":77},"azd",{"type":47,"value":79},".",{"type":42,"tag":81,"props":82,"children":84},"h2",{"id":83},"current-defaults",[85],{"type":47,"value":86},"Current Defaults",{"type":42,"tag":88,"props":89,"children":90},"ul",{},[91,97,110,131,175,180,200,213,226],{"type":42,"tag":92,"props":93,"children":94},"li",{},[95],{"type":47,"value":96},"Scaffold with Microsoft Foundry as the model provider.",{"type":42,"tag":92,"props":98,"children":99},{},[100,102,108],{"type":47,"value":101},"Scaffold files may keep ",{"type":42,"tag":56,"props":103,"children":105},{"className":104},[],[106],{"type":47,"value":107},"gpt-4.1",{"type":47,"value":109}," as the safe Bicep fallback, but before provisioning or\ndeploying, check the user's subscription\u002Fregion for the best deployable GPT model and quota.",{"type":42,"tag":92,"props":111,"children":112},{},[113,115,121,123,129],{"type":47,"value":114},"Prefer the newest deployable GPT reasoning model with remaining quota when available, such as\n",{"type":42,"tag":56,"props":116,"children":118},{"className":117},[],[119],{"type":47,"value":120},"gpt-5.4",{"type":47,"value":122}," or newer. Only configure reasoning settings for models known to support them. Older\nmodels can fail if ",{"type":42,"tag":56,"props":124,"children":126},{"className":125},[],[127],{"type":47,"value":128},"AZURE_FUNCTIONS_AGENTS_REASONING_*",{"type":47,"value":130}," settings are present.",{"type":42,"tag":92,"props":132,"children":133},{},[134,136,142,144,150,152,158,160,166,168,174],{"type":47,"value":135},"For ",{"type":42,"tag":56,"props":137,"children":139},{"className":138},[],[140],{"type":47,"value":141},"gpt-5.x",{"type":47,"value":143}," and other reasoning-capable models, use reasoning effort ",{"type":42,"tag":56,"props":145,"children":147},{"className":146},[],[148],{"type":47,"value":149},"medium",{"type":47,"value":151}," by default,\n",{"type":42,"tag":56,"props":153,"children":155},{"className":154},[],[156],{"type":47,"value":157},"high",{"type":47,"value":159}," when the task needs deeper reasoning or the agent is underthinking, ",{"type":42,"tag":56,"props":161,"children":163},{"className":162},[],[164],{"type":47,"value":165},"xhigh",{"type":47,"value":167}," only when the\nselected model supports it, and reasoning summary ",{"type":42,"tag":56,"props":169,"children":171},{"className":170},[],[172],{"type":47,"value":173},"concise",{"type":47,"value":79},{"type":42,"tag":92,"props":176,"children":177},{},[178],{"type":47,"value":179},"If an agent needs web browsing, current public data, browser automation, data analysis, or code\nexecution, use Azure Container Apps dynamic sessions. Do not write custom web-fetch tools for\nthose cases.",{"type":42,"tag":92,"props":181,"children":182},{},[183,185,190,192,198],{"type":47,"value":184},"Use remote HTTP MCP servers and connection MCP servers from ",{"type":42,"tag":56,"props":186,"children":188},{"className":187},[],[189],{"type":47,"value":69},{"type":47,"value":191},"; local ",{"type":42,"tag":56,"props":193,"children":195},{"className":194},[],[196],{"type":47,"value":197},"stdio",{"type":47,"value":199}," MCP\nservers are not supported by the runtime. When the user brings a stdio MCP server, convert the\nneeded actions into Python custom tools or use a hosted remote MCP endpoint.",{"type":42,"tag":92,"props":201,"children":202},{},[203,205,211],{"type":47,"value":204},"Use Connector Namespaces, represented as ",{"type":42,"tag":56,"props":206,"children":208},{"className":207},[],[209],{"type":47,"value":210},"Microsoft.Web\u002FconnectorGateways",{"type":47,"value":212}," resources in Bicep.",{"type":42,"tag":92,"props":214,"children":215},{},[216,218,224],{"type":47,"value":217},"Generated apps should include a ready-to-edit ",{"type":42,"tag":56,"props":219,"children":221},{"className":220},[],[222],{"type":47,"value":223},"src\u002Flocal.settings.json",{"type":47,"value":225},", not only a template.",{"type":42,"tag":92,"props":227,"children":228},{},[229,231,237,239,245,247,253,255,261,263,269,271,277,279,285],{"type":47,"value":230},"Generated ",{"type":42,"tag":56,"props":232,"children":234},{"className":233},[],[235],{"type":47,"value":236},"requirements.txt",{"type":47,"value":238}," should use ",{"type":42,"tag":56,"props":240,"children":242},{"className":241},[],[243],{"type":47,"value":244},"azurefunctions-agents-runtime[monitor]",{"type":47,"value":246}," whenever the app\nincludes ",{"type":42,"tag":56,"props":248,"children":250},{"className":249},[],[251],{"type":47,"value":252},"APPLICATIONINSIGHTS_CONNECTION_STRING",{"type":47,"value":254}," (the scaffolded infra provisions it by default),\nso the runtime auto-exports ",{"type":42,"tag":56,"props":256,"children":258},{"className":257},[],[259],{"type":47,"value":260},"agent.run",{"type":47,"value":262}," and ",{"type":42,"tag":56,"props":264,"children":266},{"className":265},[],[267],{"type":47,"value":268},"dynamic_session.execute",{"type":47,"value":270}," spans to Application Insights\nwith no extra code. If the retrieved template ships the base ",{"type":42,"tag":56,"props":272,"children":274},{"className":273},[],[275],{"type":47,"value":276},"azurefunctions-agents-runtime",{"type":47,"value":278},", add\nthe ",{"type":42,"tag":56,"props":280,"children":282},{"className":281},[],[283],{"type":47,"value":284},"[monitor]",{"type":47,"value":286}," extra. When the app has no Application Insights, use the base package and either\nprompt the user to add it or omit telemetry.",{"type":42,"tag":81,"props":288,"children":290},{"id":289},"progressive-references",[291],{"type":47,"value":292},"Progressive References",{"type":42,"tag":50,"props":294,"children":295},{},[296],{"type":47,"value":297},"Load only the files needed for the task:",{"type":42,"tag":299,"props":300,"children":301},"table",{},[302,321],{"type":42,"tag":303,"props":304,"children":305},"thead",{},[306],{"type":42,"tag":307,"props":308,"children":309},"tr",{},[310,316],{"type":42,"tag":311,"props":312,"children":313},"th",{},[314],{"type":47,"value":315},"Need",{"type":42,"tag":311,"props":317,"children":318},{},[319],{"type":47,"value":320},"Reference",{"type":42,"tag":322,"props":323,"children":324},"tbody",{},[325,344,361,378,395,412,429,446,463,487,504,521,538,555,572,589,606,623,640],{"type":42,"tag":307,"props":326,"children":327},{},[328,334],{"type":42,"tag":329,"props":330,"children":331},"td",{},[332],{"type":47,"value":333},"Required files and scaffold contents",{"type":42,"tag":329,"props":335,"children":336},{},[337],{"type":42,"tag":338,"props":339,"children":341},"a",{"href":340},".\u002Freferences\u002Fproject-files.md",[342],{"type":47,"value":343},"project-files.md",{"type":42,"tag":307,"props":345,"children":346},{},[347,352],{"type":42,"tag":329,"props":348,"children":349},{},[350],{"type":47,"value":351},"Agent frontmatter, triggers, built-in endpoints",{"type":42,"tag":329,"props":353,"children":354},{},[355],{"type":42,"tag":338,"props":356,"children":358},{"href":357},".\u002Freferences\u002Fagent-files.md",[359],{"type":47,"value":360},"agent-files.md",{"type":42,"tag":307,"props":362,"children":363},{},[364,369],{"type":42,"tag":329,"props":365,"children":366},{},[367],{"type":47,"value":368},"Trigger schemas, connector triggers, built-in endpoint routes",{"type":42,"tag":329,"props":370,"children":371},{},[372],{"type":42,"tag":338,"props":373,"children":375},{"href":374},".\u002Freferences\u002Ftriggers.md",[376],{"type":47,"value":377},"triggers.md",{"type":42,"tag":307,"props":379,"children":380},{},[381,386],{"type":42,"tag":329,"props":382,"children":383},{},[384],{"type":47,"value":385},"Built-in chat APIs, session IDs, built-in MCP tools",{"type":42,"tag":329,"props":387,"children":388},{},[389],{"type":42,"tag":338,"props":390,"children":392},{"href":391},".\u002Freferences\u002Fbuilt-in-endpoints.md",[393],{"type":47,"value":394},"built-in-endpoints.md",{"type":42,"tag":307,"props":396,"children":397},{},[398,403],{"type":42,"tag":329,"props":399,"children":400},{},[401],{"type":47,"value":402},"Local\u002Fdeployed testing recipes by trigger type",{"type":42,"tag":329,"props":404,"children":405},{},[406],{"type":42,"tag":338,"props":407,"children":409},{"href":408},".\u002Freferences\u002Ftesting.md",[410],{"type":47,"value":411},"testing.md",{"type":42,"tag":307,"props":413,"children":414},{},[415,420],{"type":42,"tag":329,"props":416,"children":417},{},[418],{"type":47,"value":419},"Foundry model defaults, upgrades, reasoning settings",{"type":42,"tag":329,"props":421,"children":422},{},[423],{"type":42,"tag":338,"props":424,"children":426},{"href":425},".\u002Freferences\u002Fmodels.md",[427],{"type":47,"value":428},"models.md",{"type":42,"tag":307,"props":430,"children":431},{},[432,437],{"type":42,"tag":329,"props":433,"children":434},{},[435],{"type":47,"value":436},"Dynamic sessions for code execution and web browsing",{"type":42,"tag":329,"props":438,"children":439},{},[440],{"type":42,"tag":338,"props":441,"children":443},{"href":442},".\u002Freferences\u002Fsessions.md",[444],{"type":47,"value":445},"sessions.md",{"type":42,"tag":307,"props":447,"children":448},{},[449,454],{"type":42,"tag":329,"props":450,"children":451},{},[452],{"type":47,"value":453},"Connector Namespace overview, naming, and safety boundaries",{"type":42,"tag":329,"props":455,"children":456},{},[457],{"type":42,"tag":338,"props":458,"children":460},{"href":459},".\u002Freferences\u002Fconnectors.md",[461],{"type":47,"value":462},"connectors.md",{"type":42,"tag":307,"props":464,"children":465},{},[466,478],{"type":42,"tag":329,"props":467,"children":468},{},[469,471,476],{"type":47,"value":470},"Remote MCP server entries, headers\u002Fauth, Connector MCP server configs, authorization, ",{"type":42,"tag":56,"props":472,"children":474},{"className":473},[],[475],{"type":47,"value":69},{"type":47,"value":477},", and inspection",{"type":42,"tag":329,"props":479,"children":480},{},[481],{"type":42,"tag":338,"props":482,"children":484},{"href":483},".\u002Freferences\u002Fconnector-mcp.md",[485],{"type":47,"value":486},"connector-mcp.md",{"type":42,"tag":307,"props":488,"children":489},{},[490,495],{"type":42,"tag":329,"props":491,"children":492},{},[493],{"type":47,"value":494},"Connector operation IDs, schemas, and dynamic parameters",{"type":42,"tag":329,"props":496,"children":497},{},[498],{"type":42,"tag":338,"props":499,"children":501},{"href":500},".\u002Freferences\u002Fconnector-schemas.md",[502],{"type":47,"value":503},"connector-schemas.md",{"type":42,"tag":307,"props":505,"children":506},{},[507,512],{"type":42,"tag":329,"props":508,"children":509},{},[510],{"type":47,"value":511},"Microsoft Teams connector targets, links, schemas, and troubleshooting smoke tests",{"type":42,"tag":329,"props":513,"children":514},{},[515],{"type":42,"tag":338,"props":516,"children":518},{"href":517},".\u002Freferences\u002Fconnector-teams.md",[519],{"type":47,"value":520},"connector-teams.md",{"type":42,"tag":307,"props":522,"children":523},{},[524,529],{"type":42,"tag":329,"props":525,"children":526},{},[527],{"type":47,"value":528},"Connector side-effect smoke tests for Teams, Outlook, and MCP tools",{"type":42,"tag":329,"props":530,"children":531},{},[532],{"type":42,"tag":338,"props":533,"children":535},{"href":534},".\u002Freferences\u002Fconnector-smoke-tests.md",[536],{"type":47,"value":537},"connector-smoke-tests.md",{"type":42,"tag":307,"props":539,"children":540},{},[541,546],{"type":42,"tag":329,"props":542,"children":543},{},[544],{"type":47,"value":545},"Connector-triggered agents and trigger config deployment",{"type":42,"tag":329,"props":547,"children":548},{},[549],{"type":42,"tag":338,"props":550,"children":552},{"href":551},".\u002Freferences\u002Fconnector-triggers.md",[553],{"type":47,"value":554},"connector-triggers.md",{"type":42,"tag":307,"props":556,"children":557},{},[558,563],{"type":42,"tag":329,"props":559,"children":560},{},[561],{"type":47,"value":562},"Custom Python tools and Agent Skills",{"type":42,"tag":329,"props":564,"children":565},{},[566],{"type":42,"tag":338,"props":567,"children":569},{"href":568},".\u002Freferences\u002Ftools-and-skills.md",[570],{"type":47,"value":571},"tools-and-skills.md",{"type":42,"tag":307,"props":573,"children":574},{},[575,580],{"type":42,"tag":329,"props":576,"children":577},{},[578],{"type":47,"value":579},"Writing robust agent instructions",{"type":42,"tag":329,"props":581,"children":582},{},[583],{"type":42,"tag":338,"props":584,"children":586},{"href":585},".\u002Freferences\u002Fagent-authoring.md",[587],{"type":47,"value":588},"agent-authoring.md",{"type":42,"tag":307,"props":590,"children":591},{},[592,597],{"type":42,"tag":329,"props":593,"children":594},{},[595],{"type":47,"value":596},"Bicep, azd, deployment, local development",{"type":42,"tag":329,"props":598,"children":599},{},[600],{"type":42,"tag":338,"props":601,"children":603},{"href":602},".\u002Freferences\u002Finfra-and-deployment.md",[604],{"type":47,"value":605},"infra-and-deployment.md",{"type":42,"tag":307,"props":607,"children":608},{},[609,614],{"type":42,"tag":329,"props":610,"children":611},{},[612],{"type":47,"value":613},"Azure resource naming abbreviations used by the Bicep assets",{"type":42,"tag":329,"props":615,"children":616},{},[617],{"type":42,"tag":338,"props":618,"children":620},{"href":619},".\u002Freferences\u002Fabbreviations.json",[621],{"type":47,"value":622},"abbreviations.json",{"type":42,"tag":307,"props":624,"children":625},{},[626,631],{"type":42,"tag":329,"props":627,"children":628},{},[629],{"type":47,"value":630},"Diagnostics and common failures",{"type":42,"tag":329,"props":632,"children":633},{},[634],{"type":42,"tag":338,"props":635,"children":637},{"href":636},".\u002Freferences\u002Ftroubleshooting.md",[638],{"type":47,"value":639},"troubleshooting.md",{"type":42,"tag":307,"props":641,"children":642},{},[643,648],{"type":42,"tag":329,"props":644,"children":645},{},[646],{"type":47,"value":647},"Official serverless agents quickstart template and Learn article",{"type":42,"tag":329,"props":649,"children":650},{},[651],{"type":42,"tag":338,"props":652,"children":654},{"href":653},".\u002Freferences\u002Fquickstart-reference.md",[655],{"type":47,"value":656},"quickstart-reference.md",{"type":42,"tag":81,"props":658,"children":660},{"id":659},"assess-the-workspace",[661],{"type":47,"value":662},"Assess the Workspace",{"type":42,"tag":50,"props":664,"children":665},{},[666],{"type":47,"value":667},"Before editing, inspect the app. Look for:",{"type":42,"tag":88,"props":669,"children":670},{},[671,688,697,706,715,731,739,763,772],{"type":42,"tag":92,"props":672,"children":673},{},[674,680,682],{"type":42,"tag":56,"props":675,"children":677},{"className":676},[],[678],{"type":47,"value":679},"src\u002Ffunction_app.py",{"type":47,"value":681}," importing ",{"type":42,"tag":56,"props":683,"children":685},{"className":684},[],[686],{"type":47,"value":687},"create_function_app()",{"type":42,"tag":92,"props":689,"children":690},{},[691],{"type":42,"tag":56,"props":692,"children":694},{"className":693},[],[695],{"type":47,"value":696},"src\u002F*.agent.md",{"type":42,"tag":92,"props":698,"children":699},{},[700],{"type":42,"tag":56,"props":701,"children":703},{"className":702},[],[704],{"type":47,"value":705},"src\u002Fagents.config.yaml",{"type":42,"tag":92,"props":707,"children":708},{},[709],{"type":42,"tag":56,"props":710,"children":712},{"className":711},[],[713],{"type":47,"value":714},"src\u002Fmcp.json",{"type":42,"tag":92,"props":716,"children":717},{},[718,724,725],{"type":42,"tag":56,"props":719,"children":721},{"className":720},[],[722],{"type":47,"value":723},"src\u002Ftools\u002F",{"type":47,"value":262},{"type":42,"tag":56,"props":726,"children":728},{"className":727},[],[729],{"type":47,"value":730},"src\u002Fskills\u002F",{"type":42,"tag":92,"props":732,"children":733},{},[734],{"type":42,"tag":56,"props":735,"children":737},{"className":736},[],[738],{"type":47,"value":223},{"type":42,"tag":92,"props":740,"children":741},{},[742,748,750,756,757],{"type":42,"tag":56,"props":743,"children":745},{"className":744},[],[746],{"type":47,"value":747},"infra\u002Fmain.bicep",{"type":47,"value":749},", ",{"type":42,"tag":56,"props":751,"children":753},{"className":752},[],[754],{"type":47,"value":755},"infra\u002Fapp\u002F*.bicep",{"type":47,"value":749},{"type":42,"tag":56,"props":758,"children":760},{"className":759},[],[761],{"type":47,"value":762},"infra\u002Fmain.parameters.json",{"type":42,"tag":92,"props":764,"children":765},{},[766],{"type":42,"tag":56,"props":767,"children":769},{"className":768},[],[770],{"type":47,"value":771},"azure.yaml",{"type":42,"tag":92,"props":773,"children":774},{},[775,781,783,788],{"type":42,"tag":56,"props":776,"children":778},{"className":777},[],[779],{"type":47,"value":780},".azure\u002F*\u002Fconfig.json",{"type":47,"value":782}," for existing ",{"type":42,"tag":56,"props":784,"children":786},{"className":785},[],[787],{"type":47,"value":77},{"type":47,"value":789}," environments",{"type":42,"tag":50,"props":791,"children":792},{},[793,795,801,802,808,810,815,817,822],{"type":47,"value":794},"For existing apps, read the current files and preserve the app's structure. Current apps should\nuse explicit ",{"type":42,"tag":56,"props":796,"children":798},{"className":797},[],[799],{"type":47,"value":800},"builtin_endpoints",{"type":47,"value":749},{"type":42,"tag":56,"props":803,"children":805},{"className":804},[],[806],{"type":47,"value":807},"trigger.args",{"type":47,"value":809},", Foundry provider settings, ",{"type":42,"tag":56,"props":811,"children":813},{"className":812},[],[814],{"type":47,"value":61},{"type":47,"value":816},"\nfor shared runtime defaults, and Connector Namespace MCP entries in ",{"type":42,"tag":56,"props":818,"children":820},{"className":819},[],[821],{"type":47,"value":69},{"type":47,"value":79},{"type":42,"tag":50,"props":824,"children":825},{},[826,828,833,835,841,843,849,851,857,859,865],{"type":47,"value":827},"When inspecting deployed connectors, remember that Connector Namespace resources live under\n",{"type":42,"tag":56,"props":829,"children":831},{"className":830},[],[832],{"type":47,"value":210},{"type":47,"value":834},". Connections are ",{"type":42,"tag":56,"props":836,"children":838},{"className":837},[],[839],{"type":47,"value":840},"connectorGateways\u002F\u003Cgateway>\u002Fconnections",{"type":47,"value":842},", MCP\nserver configs are ",{"type":42,"tag":56,"props":844,"children":846},{"className":845},[],[847],{"type":47,"value":848},"connectorGateways\u002F\u003Cgateway>\u002Fmcpserverconfigs",{"type":47,"value":850},", and trigger configs are\n",{"type":42,"tag":56,"props":852,"children":854},{"className":853},[],[855],{"type":47,"value":856},"connectorGateways\u002F\u003Cgateway>\u002Ftriggerconfigs",{"type":47,"value":858},". Do not search for legacy top-level\n",{"type":42,"tag":56,"props":860,"children":862},{"className":861},[],[863],{"type":47,"value":864},"Microsoft.Web\u002Fconnections",{"type":47,"value":866}," to find Connector Namespace connections.",{"type":42,"tag":81,"props":868,"children":870},{"id":869},"discuss-and-plan-the-agent",[871],{"type":47,"value":872},"Discuss and Plan the Agent",{"type":42,"tag":50,"props":874,"children":875},{},[876],{"type":47,"value":877},"When the user says they want to create an agent, do not jump straight to files unless the request\nalready contains enough detail. First learn enough to shape the app and discuss a short plan.",{"type":42,"tag":50,"props":879,"children":880},{},[881],{"type":47,"value":882},"Ask only the questions needed to move forward, usually covering:",{"type":42,"tag":88,"props":884,"children":885},{},[886,897,907,917,927,937,953,963,980],{"type":42,"tag":92,"props":887,"children":888},{},[889,895],{"type":42,"tag":890,"props":891,"children":892},"strong",{},[893],{"type":47,"value":894},"Goal:",{"type":47,"value":896}," What should the agent accomplish, and what should a successful run produce?",{"type":42,"tag":92,"props":898,"children":899},{},[900,905],{"type":42,"tag":890,"props":901,"children":902},{},[903],{"type":47,"value":904},"Invocation:",{"type":47,"value":906}," Should it be chat\u002FAPI-driven, scheduled, event-triggered, connector-triggered,\nor some combination?",{"type":42,"tag":92,"props":908,"children":909},{},[910,915],{"type":42,"tag":890,"props":911,"children":912},{},[913],{"type":47,"value":914},"Inputs and outputs:",{"type":47,"value":916}," What data starts the run, and should the result be returned, logged,\nemailed, posted, drafted, stored, or sent somewhere else?",{"type":42,"tag":92,"props":918,"children":919},{},[920,925],{"type":42,"tag":890,"props":921,"children":922},{},[923],{"type":47,"value":924},"Interactive surfaces:",{"type":47,"value":926}," Does the user want to chat with the agent, expose a chat\u002FAPI surface,\nstream responses, or expose the agent as a built-in MCP tool? Enable built-in endpoints only for\nthose interactive scenarios.",{"type":42,"tag":92,"props":928,"children":929},{},[930,935],{"type":42,"tag":890,"props":931,"children":932},{},[933],{"type":47,"value":934},"Tools and services:",{"type":47,"value":936}," Does it need web\u002Fcode execution, Microsoft Learn, Office 365, Teams,\nAzure Resource Manager, storage, queues, databases, or custom APIs?",{"type":42,"tag":92,"props":938,"children":939},{},[940,945,947,951],{"type":42,"tag":890,"props":941,"children":942},{},[943],{"type":47,"value":944},"Teams targets:",{"type":47,"value":946}," If the agent needs a Teams team, channel, or chat target, ask the user to\npaste a Teams link and parse IDs from it on their behalf. Do not ask them to manually find raw\nteam IDs, channel IDs, or chat IDs. Load ",{"type":42,"tag":338,"props":948,"children":949},{"href":517},[950],{"type":47,"value":520},{"type":47,"value":952},"\nbefore wiring Teams posting or diagnosing a missing Teams message.",{"type":42,"tag":92,"props":954,"children":955},{},[956,961],{"type":42,"tag":890,"props":957,"children":958},{},[959],{"type":47,"value":960},"Safety boundaries:",{"type":47,"value":962}," For actions like email, Teams posts, ticket creation, or resource changes,\nshould the agent draft, ask for confirmation, or act automatically?",{"type":42,"tag":92,"props":964,"children":965},{},[966,971,973,979],{"type":42,"tag":890,"props":967,"children":968},{},[969],{"type":47,"value":970},"Model selection:",{"type":47,"value":972}," Which Azure subscription and region should be checked for GPT model access\nand quota? If the user has not specified them, use the current Azure CLI subscription and the\nplanned ",{"type":42,"tag":56,"props":974,"children":976},{"className":975},[],[977],{"type":47,"value":978},"AZURE_LOCATION",{"type":47,"value":79},{"type":42,"tag":92,"props":981,"children":982},{},[983,988,990,996],{"type":42,"tag":890,"props":984,"children":985},{},[986],{"type":47,"value":987},"Deployment preference:",{"type":47,"value":989}," Default to building and deploying to Azure with ",{"type":42,"tag":56,"props":991,"children":993},{"className":992},[],[994],{"type":47,"value":995},"azd up",{"type":47,"value":997},", but offer\nto run locally first if the user wants a local iteration loop.",{"type":42,"tag":50,"props":999,"children":1000},{},[1001,1003,1009,1011,1017],{"type":47,"value":1002},"Do not ask the user to estimate runtime duration unless the workflow is obviously unusual or may\nrun longer than the standard background-agent defaults. Set practical timeouts yourself: keep\nsimple chat\u002FAPI agents at the runtime default, set timer, connector-triggered, queue, and other\nbackground agents to 30 minutes, and align ",{"type":42,"tag":56,"props":1004,"children":1006},{"className":1005},[],[1007],{"type":47,"value":1008},"host.json",{"type":47,"value":1010}," ",{"type":42,"tag":56,"props":1012,"children":1014},{"className":1013},[],[1015],{"type":47,"value":1016},"functionTimeout",{"type":47,"value":1018}," to the longest agent\ntimeout. For synchronous HTTP work that may take longer than about 230 seconds, choose a\nbackground\u002Fdeferred pattern instead of relying on a longer HTTP response.",{"type":42,"tag":50,"props":1020,"children":1021},{},[1022,1024,1029,1031,1037],{"type":47,"value":1023},"Do not add ",{"type":42,"tag":56,"props":1025,"children":1027},{"className":1026},[],[1028],{"type":47,"value":800},{"type":47,"value":1030}," or a ",{"type":42,"tag":56,"props":1032,"children":1034},{"className":1033},[],[1035],{"type":47,"value":1036},"main.agent.md",{"type":47,"value":1038}," debug\u002Fchat agent just to test a scheduled,\ntimer, connector-triggered, queue, or other background workflow. If the user asks for a chat bot,\ndebug chat UI, chat API, streaming API, or says they want to talk to the agent, enable the\nappropriate built-in endpoints for that agent or add a separate interactive agent. Otherwise,\nverify background agents with the admin invoke endpoint and Application Insights.",{"type":42,"tag":50,"props":1040,"children":1041},{},[1042],{"type":47,"value":1043},"After the discovery, summarize the plan before editing. Include the agent files, trigger or\nbuilt-in endpoints, model choice, tools\u002FMCP\u002Fconnectors, infrastructure changes, and how it will be\ntested. If the user has already provided enough detail, make reasonable choices and proceed.",{"type":42,"tag":81,"props":1045,"children":1047},{"id":1046},"scaffold-a-new-app",[1048],{"type":47,"value":1049},"Scaffold a New App",{"type":42,"tag":50,"props":1051,"children":1052},{},[1053,1055,1060],{"type":47,"value":1054},"Use ",{"type":42,"tag":890,"props":1056,"children":1057},{},[1058],{"type":47,"value":1059},"manifest discovery + MCP primary retrieval",{"type":47,"value":1061}," when Azure MCP tools are available:",{"type":42,"tag":1063,"props":1064,"children":1065},"ol",{},[1066,1140,1169,1182],{"type":42,"tag":92,"props":1067,"children":1068},{},[1069,1071,1077,1079,1085,1087,1093,1094,1100,1101,1107,1109,1115,1117,1123,1124,1130,1132,1138],{"type":47,"value":1070},"Fetch the Azure Functions template manifest from\n",{"type":42,"tag":56,"props":1072,"children":1074},{"className":1073},[],[1075],{"type":47,"value":1076},"https:\u002F\u002Fcdn.functions.azure.com\u002Fpublic\u002Ftemplates-manifest\u002Fmanifest.json",{"type":47,"value":1078}," and find\n",{"type":42,"tag":56,"props":1080,"children":1082},{"className":1081},[],[1083],{"type":47,"value":1084},"ai-serverless-agents-python",{"type":47,"value":1086},". Use its catalog metadata (",{"type":42,"tag":56,"props":1088,"children":1090},{"className":1089},[],[1091],{"type":47,"value":1092},"priority",{"type":47,"value":749},{"type":42,"tag":56,"props":1095,"children":1097},{"className":1096},[],[1098],{"type":47,"value":1099},"categories",{"type":47,"value":749},{"type":42,"tag":56,"props":1102,"children":1104},{"className":1103},[],[1105],{"type":47,"value":1106},"tags",{"type":47,"value":1108},",\n",{"type":42,"tag":56,"props":1110,"children":1112},{"className":1111},[],[1113],{"type":47,"value":1114},"whatsIncluded",{"type":47,"value":1116},") to explain why this is the correct serverless agents scaffold. Keep\n",{"type":42,"tag":56,"props":1118,"children":1120},{"className":1119},[],[1121],{"type":47,"value":1122},"repositoryUrl",{"type":47,"value":749},{"type":42,"tag":56,"props":1125,"children":1127},{"className":1126},[],[1128],{"type":47,"value":1129},"folderPath",{"type":47,"value":1131},", and ",{"type":42,"tag":56,"props":1133,"children":1135},{"className":1134},[],[1136],{"type":47,"value":1137},"gitRef",{"type":47,"value":1139}," for fallback.",{"type":42,"tag":92,"props":1141,"children":1142},{},[1143,1145,1151,1153,1159,1161,1167],{"type":47,"value":1144},"Call Azure MCP ",{"type":42,"tag":56,"props":1146,"children":1148},{"className":1147},[],[1149],{"type":47,"value":1150},"functions_template_get",{"type":47,"value":1152}," with ",{"type":42,"tag":56,"props":1154,"children":1156},{"className":1155},[],[1157],{"type":47,"value":1158},"language: python",{"type":47,"value":1160}," and\n",{"type":42,"tag":56,"props":1162,"children":1164},{"className":1163},[],[1165],{"type":47,"value":1166},"template: ai-serverless-agents-python",{"type":47,"value":1168},". This is the primary source for the complete project\nfiles.",{"type":42,"tag":92,"props":1170,"children":1171},{},[1172,1174,1180],{"type":47,"value":1173},"Write the returned ",{"type":42,"tag":56,"props":1175,"children":1177},{"className":1176},[],[1178],{"type":47,"value":1179},"files",{"type":47,"value":1181}," array into the target project. If the output is truncated or saved to\na temporary file, read the complete JSON response before deciding retrieval failed.",{"type":42,"tag":92,"props":1183,"children":1184},{},[1185,1187,1192,1193,1198,1199,1204,1206,1212],{"type":47,"value":1186},"If MCP returns an actual tool error, cannot retrieve the template, or returns an empty\u002Fzero-file\nresult after reading the complete response, fall back to the manifest ",{"type":42,"tag":56,"props":1188,"children":1190},{"className":1189},[],[1191],{"type":47,"value":1122},{"type":47,"value":1108},{"type":42,"tag":56,"props":1194,"children":1196},{"className":1195},[],[1197],{"type":47,"value":1129},{"type":47,"value":1131},{"type":42,"tag":56,"props":1200,"children":1202},{"className":1201},[],[1203],{"type":47,"value":1137},{"type":47,"value":1205}," using direct GitHub download first and ",{"type":42,"tag":56,"props":1207,"children":1209},{"className":1208},[],[1210],{"type":47,"value":1211},"git clone --depth 1",{"type":47,"value":1213}," only if\ndownloads fail. Tell the user that MCP retrieval failed and GitHub fallback was used.",{"type":42,"tag":50,"props":1215,"children":1216},{},[1217],{"type":47,"value":1218},"When Azure MCP tools are not available, skip directly to the manifest\u002FGitHub fallback above. Do not\ninvent a project structure from memory.",{"type":42,"tag":50,"props":1220,"children":1221},{},[1222],{"type":47,"value":1223},"Do not use bundled template files as a scaffold source. This skill intentionally does not include a\nfull copy of the serverless agents template because the template evolves independently; always\nretrieve it from MCP first or from the manifest GitHub coordinates as fallback.",{"type":42,"tag":50,"props":1225,"children":1226},{},[1227],{"type":47,"value":1228},"After scaffolding from MCP or GitHub, tailor the app to the user's agent.",{"type":42,"tag":50,"props":1230,"children":1231},{},[1232],{"type":47,"value":1233},"Baseline structure:",{"type":42,"tag":1235,"props":1236,"children":1241},"pre",{"className":1237,"code":1239,"language":47,"meta":1240},[1238],"language-text","\u003Cproject-root>\u002F\n  azure.yaml\n  infra\u002F\n    abbreviations.json\n    main.bicep\n    main.parameters.json\n    app\u002F\n      api.bicep\n      connector-gateway.bicep\n      trigger-config.bicep        # if using connector triggers\n      foundry.bicep\n      rbac.bicep\n      session-pool.bicep\n      session-pool-rbac.bicep\n  src\u002F\n    function_app.py\n    host.json\n    local.settings.json\n    requirements.txt\n    .funcignore\n    agents.config.yaml\n    main.agent.md              # only when the user wants chat\u002FAPI\u002FMCP endpoints\n    \u003Cagent-name>.agent.md\n    mcp.json\n","",[1242],{"type":42,"tag":56,"props":1243,"children":1244},{"__ignoreMap":1240},[1245],{"type":47,"value":1239},{"type":42,"tag":50,"props":1247,"children":1248},{},[1249],{"type":47,"value":1250},"Default scaffold choices:",{"type":42,"tag":88,"props":1252,"children":1253},{},[1254,1259,1271,1326,1331,1336,1349,1361,1397,1410],{"type":42,"tag":92,"props":1255,"children":1256},{},[1257],{"type":47,"value":1258},"Python 3.13 in Bicep.",{"type":42,"tag":92,"props":1260,"children":1261},{},[1262,1264,1269],{"type":47,"value":1263},"Foundry provider. Keep ",{"type":42,"tag":56,"props":1265,"children":1267},{"className":1266},[],[1268],{"type":47,"value":107},{"type":47,"value":1270}," in template defaults only as a safe fallback.",{"type":42,"tag":92,"props":1272,"children":1273},{},[1274,1276,1282,1284,1289,1291,1295,1297,1303,1304,1310,1311,1317,1318,1324],{"type":47,"value":1275},"Before running ",{"type":42,"tag":56,"props":1277,"children":1279},{"className":1278},[],[1280],{"type":47,"value":1281},"azd provision",{"type":47,"value":1283}," or ",{"type":42,"tag":56,"props":1285,"children":1287},{"className":1286},[],[1288],{"type":47,"value":995},{"type":47,"value":1290},", run the model and quota checks in\n",{"type":42,"tag":338,"props":1292,"children":1293},{"href":425},[1294],{"type":47,"value":428},{"type":47,"value":1296},", recommend the best deployable GPT model, and set the\n",{"type":42,"tag":56,"props":1298,"children":1300},{"className":1299},[],[1301],{"type":47,"value":1302},"FOUNDRY_MODEL",{"type":47,"value":749},{"type":42,"tag":56,"props":1305,"children":1307},{"className":1306},[],[1308],{"type":47,"value":1309},"FOUNDRY_MODEL_NAME",{"type":47,"value":749},{"type":42,"tag":56,"props":1312,"children":1314},{"className":1313},[],[1315],{"type":47,"value":1316},"FOUNDRY_MODEL_VERSION",{"type":47,"value":749},{"type":42,"tag":56,"props":1319,"children":1321},{"className":1320},[],[1322],{"type":47,"value":1323},"FOUNDRY_DEPLOYMENT_CAPACITY",{"type":47,"value":1325},",\nand reasoning env vars when a better reasoning-capable model is selected.",{"type":42,"tag":92,"props":1327,"children":1328},{},[1329],{"type":47,"value":1330},"No reasoning app settings unless the app is explicitly upgraded to a reasoning-capable model.",{"type":42,"tag":92,"props":1332,"children":1333},{},[1334],{"type":47,"value":1335},"ACA dynamic session pool when any agent needs code execution or web browsing.",{"type":42,"tag":92,"props":1337,"children":1338},{},[1339,1341,1347],{"type":47,"value":1340},"Optional Office 365 Outlook connection MCP server when ",{"type":42,"tag":56,"props":1342,"children":1344},{"className":1343},[],[1345],{"type":47,"value":1346},"TO_EMAIL",{"type":47,"value":1348}," is set.",{"type":42,"tag":92,"props":1350,"children":1351},{},[1352,1354,1359],{"type":47,"value":1353},"Built-in endpoints only when the scenario is interactive. Do not add debug chat UI, chat API,\nstreaming API, built-in MCP, or a general ",{"type":42,"tag":56,"props":1355,"children":1357},{"className":1356},[],[1358],{"type":47,"value":1036},{"type":47,"value":1360}," to a scheduled-only\u002Fbackground-only app\nunless the user asked for that surface.",{"type":42,"tag":92,"props":1362,"children":1363},{},[1364,1366,1372,1374,1379,1381,1387,1389,1395],{"type":47,"value":1365},"Explicit timeout settings: use ",{"type":42,"tag":56,"props":1367,"children":1369},{"className":1368},[],[1370],{"type":47,"value":1371},"functionTimeout: \"00:30:00\"",{"type":47,"value":1373}," in ",{"type":42,"tag":56,"props":1375,"children":1377},{"className":1376},[],[1378],{"type":47,"value":1008},{"type":47,"value":1380}," for background-capable\napps, keep simple chat\u002FAPI agents at ",{"type":42,"tag":56,"props":1382,"children":1384},{"className":1383},[],[1385],{"type":47,"value":1386},"timeout: 900",{"type":47,"value":1388},", and set timer, connector-triggered, queue,\nor other long-running background agents to ",{"type":42,"tag":56,"props":1390,"children":1392},{"className":1391},[],[1393],{"type":47,"value":1394},"timeout: 1800",{"type":47,"value":1396}," unless the task clearly needs more.",{"type":42,"tag":92,"props":1398,"children":1399},{},[1400,1402,1408],{"type":47,"value":1401},"Connector-triggered apps use the preview extension bundle and a second-step trigger config\ndeployment after the ",{"type":42,"tag":56,"props":1403,"children":1405},{"className":1404},[],[1406],{"type":47,"value":1407},"connector_extension",{"type":47,"value":1409}," system key exists.",{"type":42,"tag":92,"props":1411,"children":1412},{},[1413,1419],{"type":42,"tag":56,"props":1414,"children":1416},{"className":1415},[],[1417],{"type":47,"value":1418},"local.settings.json",{"type":47,"value":1420}," includes local storage and Foundry\u002FMCP placeholders.",{"type":42,"tag":50,"props":1422,"children":1423},{},[1424],{"type":47,"value":1425},"After copying, remove or adjust sample-specific agents and instructions. Keep infrastructure\nmodules only when the app needs them.",{"type":42,"tag":81,"props":1427,"children":1429},{"id":1428},"local-development-first-rule",[1430],{"type":47,"value":1431},"Local Development First Rule",{"type":42,"tag":50,"props":1433,"children":1434},{},[1435,1437,1442],{"type":47,"value":1436},"Default to deploying new apps to Azure with ",{"type":42,"tag":56,"props":1438,"children":1440},{"className":1439},[],[1441],{"type":47,"value":995},{"type":47,"value":1443},"; these agents are designed for managed\nidentity, Foundry, dynamic sessions, Connector Namespaces, Application Insights, and Functions\nhosting. Offer to run locally first when the user wants to iterate before deploying, and explain\nthe local tools required.",{"type":42,"tag":50,"props":1445,"children":1446},{},[1447],{"type":47,"value":1448},"Local prerequisites:",{"type":42,"tag":88,"props":1450,"children":1451},{},[1452,1464,1469,1474,1485],{"type":42,"tag":92,"props":1453,"children":1454},{},[1455,1457,1462],{"type":47,"value":1456},"Azure Developer CLI (",{"type":42,"tag":56,"props":1458,"children":1460},{"className":1459},[],[1461],{"type":47,"value":77},{"type":47,"value":1463},")",{"type":42,"tag":92,"props":1465,"children":1466},{},[1467],{"type":47,"value":1468},"Azure Functions Core Tools v4",{"type":42,"tag":92,"props":1470,"children":1471},{},[1472],{"type":47,"value":1473},"Python 3.13+",{"type":42,"tag":92,"props":1475,"children":1476},{},[1477,1479],{"type":47,"value":1478},"Azurite, when using ",{"type":42,"tag":56,"props":1480,"children":1482},{"className":1481},[],[1483],{"type":47,"value":1484},"AzureWebJobsStorage=UseDevelopmentStorage=true",{"type":42,"tag":92,"props":1486,"children":1487},{},[1488],{"type":47,"value":1489},"Azure CLI login for local managed-identity-equivalent access",{"type":42,"tag":50,"props":1491,"children":1492},{},[1493,1495,1500,1502,1508],{"type":47,"value":1494},"When an app uses Foundry, dynamic sessions, or connector MCP servers, run ",{"type":42,"tag":56,"props":1496,"children":1498},{"className":1497},[],[1499],{"type":47,"value":1281},{"type":47,"value":1501}," before\nlocal development. Local ",{"type":42,"tag":56,"props":1503,"children":1505},{"className":1504},[],[1506],{"type":47,"value":1507},"func start",{"type":47,"value":1509}," still calls real Azure resources for model, session pool,\nand connector operations.",{"type":42,"tag":50,"props":1511,"children":1512},{},[1513],{"type":47,"value":1514},"Local loop:",{"type":42,"tag":1063,"props":1516,"children":1517},{},[1518,1527,1535,1554,1566],{"type":42,"tag":92,"props":1519,"children":1520},{},[1521],{"type":42,"tag":56,"props":1522,"children":1524},{"className":1523},[],[1525],{"type":47,"value":1526},"azd init",{"type":42,"tag":92,"props":1528,"children":1529},{},[1530],{"type":42,"tag":56,"props":1531,"children":1533},{"className":1532},[],[1534],{"type":47,"value":1281},{"type":42,"tag":92,"props":1536,"children":1537},{},[1538,1540,1546,1548,1553],{"type":47,"value":1539},"Copy outputs from ",{"type":42,"tag":56,"props":1541,"children":1543},{"className":1542},[],[1544],{"type":47,"value":1545},"azd env get-values",{"type":47,"value":1547}," into ",{"type":42,"tag":56,"props":1549,"children":1551},{"className":1550},[],[1552],{"type":47,"value":223},{"type":47,"value":79},{"type":42,"tag":92,"props":1555,"children":1556},{},[1557,1559,1565],{"type":47,"value":1558},"Start Azurite with ",{"type":42,"tag":56,"props":1560,"children":1562},{"className":1561},[],[1563],{"type":47,"value":1564},"azurite --skipApiVersionCheck",{"type":47,"value":79},{"type":42,"tag":92,"props":1567,"children":1568},{},[1569,1571,1577,1579,1584],{"type":47,"value":1570},"From ",{"type":42,"tag":56,"props":1572,"children":1574},{"className":1573},[],[1575],{"type":47,"value":1576},"src",{"type":47,"value":1578},", create a venv, install requirements, and run ",{"type":42,"tag":56,"props":1580,"children":1582},{"className":1581},[],[1583],{"type":47,"value":1507},{"type":47,"value":79},{"type":42,"tag":50,"props":1586,"children":1587},{},[1588],{"type":47,"value":1589},"The scaffolded Bicep grants the deployer\u002Flocal user access to Foundry and the session pool, and\nconnection access policies when optional connectors are enabled.",{"type":42,"tag":81,"props":1591,"children":1593},{"id":1592},"build-or-modify-agents",[1594],{"type":47,"value":1595},"Build or Modify Agents",{"type":42,"tag":50,"props":1597,"children":1598},{},[1599,1601,1607],{"type":47,"value":1600},"Each ",{"type":42,"tag":56,"props":1602,"children":1604},{"className":1603},[],[1605],{"type":47,"value":1606},".agent.md",{"type":47,"value":1608}," file defines one agent. Use YAML frontmatter for runtime configuration and\nmarkdown for behavior. The file stem becomes the function name and built-in endpoint route\nsegment.",{"type":42,"tag":50,"props":1610,"children":1611},{},[1612,1614,1619],{"type":47,"value":1613},"Choose endpoints from the scenario, not from testing convenience. Scheduled-only, timer,\nconnector-triggered, queue, and other background agents should omit ",{"type":42,"tag":56,"props":1615,"children":1617},{"className":1616},[],[1618],{"type":47,"value":800},{"type":47,"value":1620}," unless the\nuser asks to talk to that agent, expose it as an API, or expose it as a built-in MCP tool. Use the\nadmin endpoint and Application Insights to test background agents.",{"type":42,"tag":50,"props":1622,"children":1623},{},[1624],{"type":47,"value":1625},"Current trigger example:",{"type":42,"tag":1235,"props":1627,"children":1631},{"className":1628,"code":1629,"language":1630,"meta":1240,"style":1240},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","---\nname: Daily Report\ndescription: Sends a daily report.\n\ntrigger:\n  type: timer_trigger\n  args:\n    schedule: \"0 0 15 * * *\"\n\nmcp: true\n---\n","yaml",[1632],{"type":42,"tag":56,"props":1633,"children":1634},{"__ignoreMap":1240},[1635,1646,1668,1686,1696,1710,1728,1741,1769,1777,1796],{"type":42,"tag":1636,"props":1637,"children":1639},"span",{"class":1638,"line":28},"line",[1640],{"type":42,"tag":1636,"props":1641,"children":1643},{"style":1642},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1644],{"type":47,"value":1645},"---\n",{"type":42,"tag":1636,"props":1647,"children":1649},{"class":1638,"line":1648},2,[1650,1656,1662],{"type":42,"tag":1636,"props":1651,"children":1653},{"style":1652},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[1654],{"type":47,"value":1655},"name",{"type":42,"tag":1636,"props":1657,"children":1659},{"style":1658},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1660],{"type":47,"value":1661},":",{"type":42,"tag":1636,"props":1663,"children":1665},{"style":1664},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[1666],{"type":47,"value":1667}," Daily Report\n",{"type":42,"tag":1636,"props":1669,"children":1671},{"class":1638,"line":1670},3,[1672,1677,1681],{"type":42,"tag":1636,"props":1673,"children":1674},{"style":1652},[1675],{"type":47,"value":1676},"description",{"type":42,"tag":1636,"props":1678,"children":1679},{"style":1658},[1680],{"type":47,"value":1661},{"type":42,"tag":1636,"props":1682,"children":1683},{"style":1664},[1684],{"type":47,"value":1685}," Sends a daily report.\n",{"type":42,"tag":1636,"props":1687,"children":1689},{"class":1638,"line":1688},4,[1690],{"type":42,"tag":1636,"props":1691,"children":1693},{"emptyLinePlaceholder":1692},true,[1694],{"type":47,"value":1695},"\n",{"type":42,"tag":1636,"props":1697,"children":1699},{"class":1638,"line":1698},5,[1700,1705],{"type":42,"tag":1636,"props":1701,"children":1702},{"style":1652},[1703],{"type":47,"value":1704},"trigger",{"type":42,"tag":1636,"props":1706,"children":1707},{"style":1658},[1708],{"type":47,"value":1709},":\n",{"type":42,"tag":1636,"props":1711,"children":1713},{"class":1638,"line":1712},6,[1714,1719,1723],{"type":42,"tag":1636,"props":1715,"children":1716},{"style":1652},[1717],{"type":47,"value":1718},"  type",{"type":42,"tag":1636,"props":1720,"children":1721},{"style":1658},[1722],{"type":47,"value":1661},{"type":42,"tag":1636,"props":1724,"children":1725},{"style":1664},[1726],{"type":47,"value":1727}," timer_trigger\n",{"type":42,"tag":1636,"props":1729,"children":1731},{"class":1638,"line":1730},7,[1732,1737],{"type":42,"tag":1636,"props":1733,"children":1734},{"style":1652},[1735],{"type":47,"value":1736},"  args",{"type":42,"tag":1636,"props":1738,"children":1739},{"style":1658},[1740],{"type":47,"value":1709},{"type":42,"tag":1636,"props":1742,"children":1744},{"class":1638,"line":1743},8,[1745,1750,1754,1759,1764],{"type":42,"tag":1636,"props":1746,"children":1747},{"style":1652},[1748],{"type":47,"value":1749},"    schedule",{"type":42,"tag":1636,"props":1751,"children":1752},{"style":1658},[1753],{"type":47,"value":1661},{"type":42,"tag":1636,"props":1755,"children":1756},{"style":1658},[1757],{"type":47,"value":1758}," \"",{"type":42,"tag":1636,"props":1760,"children":1761},{"style":1664},[1762],{"type":47,"value":1763},"0 0 15 * * *",{"type":42,"tag":1636,"props":1765,"children":1766},{"style":1658},[1767],{"type":47,"value":1768},"\"\n",{"type":42,"tag":1636,"props":1770,"children":1772},{"class":1638,"line":1771},9,[1773],{"type":42,"tag":1636,"props":1774,"children":1775},{"emptyLinePlaceholder":1692},[1776],{"type":47,"value":1695},{"type":42,"tag":1636,"props":1778,"children":1780},{"class":1638,"line":1779},10,[1781,1786,1790],{"type":42,"tag":1636,"props":1782,"children":1783},{"style":1652},[1784],{"type":47,"value":1785},"mcp",{"type":42,"tag":1636,"props":1787,"children":1788},{"style":1658},[1789],{"type":47,"value":1661},{"type":42,"tag":1636,"props":1791,"children":1793},{"style":1792},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[1794],{"type":47,"value":1795}," true\n",{"type":42,"tag":1636,"props":1797,"children":1799},{"class":1638,"line":1798},11,[1800],{"type":42,"tag":1636,"props":1801,"children":1802},{"style":1642},[1803],{"type":47,"value":1645},{"type":42,"tag":50,"props":1805,"children":1806},{},[1807],{"type":47,"value":1808},"Current built-in endpoint example:",{"type":42,"tag":1235,"props":1810,"children":1812},{"className":1628,"code":1811,"language":1630,"meta":1240,"style":1240},"---\nname: Chat Agent\ndescription: Interactive agent for testing.\n\nbuiltin_endpoints:\n  debug_chat_ui: true\n  chat_api: true\n  mcp: true\n\nmcp: false\n---\n",[1813],{"type":42,"tag":56,"props":1814,"children":1815},{"__ignoreMap":1240},[1816,1823,1839,1855,1862,1873,1889,1905,1921,1928,1944],{"type":42,"tag":1636,"props":1817,"children":1818},{"class":1638,"line":28},[1819],{"type":42,"tag":1636,"props":1820,"children":1821},{"style":1642},[1822],{"type":47,"value":1645},{"type":42,"tag":1636,"props":1824,"children":1825},{"class":1638,"line":1648},[1826,1830,1834],{"type":42,"tag":1636,"props":1827,"children":1828},{"style":1652},[1829],{"type":47,"value":1655},{"type":42,"tag":1636,"props":1831,"children":1832},{"style":1658},[1833],{"type":47,"value":1661},{"type":42,"tag":1636,"props":1835,"children":1836},{"style":1664},[1837],{"type":47,"value":1838}," Chat Agent\n",{"type":42,"tag":1636,"props":1840,"children":1841},{"class":1638,"line":1670},[1842,1846,1850],{"type":42,"tag":1636,"props":1843,"children":1844},{"style":1652},[1845],{"type":47,"value":1676},{"type":42,"tag":1636,"props":1847,"children":1848},{"style":1658},[1849],{"type":47,"value":1661},{"type":42,"tag":1636,"props":1851,"children":1852},{"style":1664},[1853],{"type":47,"value":1854}," Interactive agent for testing.\n",{"type":42,"tag":1636,"props":1856,"children":1857},{"class":1638,"line":1688},[1858],{"type":42,"tag":1636,"props":1859,"children":1860},{"emptyLinePlaceholder":1692},[1861],{"type":47,"value":1695},{"type":42,"tag":1636,"props":1863,"children":1864},{"class":1638,"line":1698},[1865,1869],{"type":42,"tag":1636,"props":1866,"children":1867},{"style":1652},[1868],{"type":47,"value":800},{"type":42,"tag":1636,"props":1870,"children":1871},{"style":1658},[1872],{"type":47,"value":1709},{"type":42,"tag":1636,"props":1874,"children":1875},{"class":1638,"line":1712},[1876,1881,1885],{"type":42,"tag":1636,"props":1877,"children":1878},{"style":1652},[1879],{"type":47,"value":1880},"  debug_chat_ui",{"type":42,"tag":1636,"props":1882,"children":1883},{"style":1658},[1884],{"type":47,"value":1661},{"type":42,"tag":1636,"props":1886,"children":1887},{"style":1792},[1888],{"type":47,"value":1795},{"type":42,"tag":1636,"props":1890,"children":1891},{"class":1638,"line":1730},[1892,1897,1901],{"type":42,"tag":1636,"props":1893,"children":1894},{"style":1652},[1895],{"type":47,"value":1896},"  chat_api",{"type":42,"tag":1636,"props":1898,"children":1899},{"style":1658},[1900],{"type":47,"value":1661},{"type":42,"tag":1636,"props":1902,"children":1903},{"style":1792},[1904],{"type":47,"value":1795},{"type":42,"tag":1636,"props":1906,"children":1907},{"class":1638,"line":1743},[1908,1913,1917],{"type":42,"tag":1636,"props":1909,"children":1910},{"style":1652},[1911],{"type":47,"value":1912},"  mcp",{"type":42,"tag":1636,"props":1914,"children":1915},{"style":1658},[1916],{"type":47,"value":1661},{"type":42,"tag":1636,"props":1918,"children":1919},{"style":1792},[1920],{"type":47,"value":1795},{"type":42,"tag":1636,"props":1922,"children":1923},{"class":1638,"line":1771},[1924],{"type":42,"tag":1636,"props":1925,"children":1926},{"emptyLinePlaceholder":1692},[1927],{"type":47,"value":1695},{"type":42,"tag":1636,"props":1929,"children":1930},{"class":1638,"line":1779},[1931,1935,1939],{"type":42,"tag":1636,"props":1932,"children":1933},{"style":1652},[1934],{"type":47,"value":1785},{"type":42,"tag":1636,"props":1936,"children":1937},{"style":1658},[1938],{"type":47,"value":1661},{"type":42,"tag":1636,"props":1940,"children":1941},{"style":1792},[1942],{"type":47,"value":1943}," false\n",{"type":42,"tag":1636,"props":1945,"children":1946},{"class":1638,"line":1798},[1947],{"type":42,"tag":1636,"props":1948,"children":1949},{"style":1642},[1950],{"type":47,"value":1645},{"type":42,"tag":50,"props":1952,"children":1953},{},[1954,1956,1960],{"type":47,"value":1955},"Load ",{"type":42,"tag":338,"props":1957,"children":1958},{"href":357},[1959],{"type":47,"value":360},{"type":47,"value":1961}," before adding less common frontmatter fields.",{"type":42,"tag":81,"props":1963,"children":1965},{"id":1964},"model-selection-guidance",[1966],{"type":47,"value":1967},"Model Selection Guidance",{"type":42,"tag":50,"props":1969,"children":1970},{},[1971,1973,1978,1980,1986,1987,1993,1995,1999],{"type":47,"value":1972},"For new scaffolds, keep ",{"type":42,"tag":56,"props":1974,"children":1976},{"className":1975},[],[1977],{"type":47,"value":107},{"type":47,"value":1979}," as the safe Bicep default, but actively try to select the best\ndeployable GPT model before provisioning. Use ",{"type":42,"tag":56,"props":1981,"children":1983},{"className":1982},[],[1984],{"type":47,"value":1985},"az cognitiveservices model list",{"type":47,"value":1160},{"type":42,"tag":56,"props":1988,"children":1990},{"className":1989},[],[1991],{"type":47,"value":1992},"az cognitiveservices usage list",{"type":47,"value":1994}," to check the user's subscription, target region, model version,\ndeployment SKU, and quota. See ",{"type":42,"tag":338,"props":1996,"children":1997},{"href":425},[1998],{"type":47,"value":428},{"type":47,"value":2000}," for copyable commands.",{"type":42,"tag":50,"props":2002,"children":2003},{},[2004,2006,2011,2013,2018],{"type":47,"value":2005},"Do not silently deploy ",{"type":42,"tag":56,"props":2007,"children":2009},{"className":2008},[],[2010],{"type":47,"value":107},{"type":47,"value":2012}," just because it is the template default. Either run the model\nand quota checks and choose\u002Frecommend a better deployable model, or state why the checks could not\nbe run and then use ",{"type":42,"tag":56,"props":2014,"children":2016},{"className":2015},[],[2017],{"type":47,"value":107},{"type":47,"value":2019}," without reasoning settings.",{"type":42,"tag":50,"props":2021,"children":2022},{},[2023,2025,2030],{"type":47,"value":2024},"Recommend the newest deployable GPT reasoning model with remaining quota. Ask the user to choose\nwhen there are meaningful tradeoffs, such as newer\u002Fslower\u002Fcostlier reasoning models versus smaller\nmini\u002Fnano models. If no reasoning-capable model has quota, or if availability\u002Fquota discovery\ncannot determine what the user can deploy, use ",{"type":42,"tag":56,"props":2026,"children":2028},{"className":2027},[],[2029],{"type":47,"value":107},{"type":47,"value":2019},{"type":42,"tag":50,"props":2032,"children":2033},{},[2034,2036,2041,2043,2048,2050,2055,2057,2062],{"type":47,"value":2035},"When selecting a reasoning-capable model, confirm reasoning support from the Azure OpenAI\nreasoning models documentation, then set model and reasoning values together. Use reasoning effort\n",{"type":42,"tag":56,"props":2037,"children":2039},{"className":2038},[],[2040],{"type":47,"value":149},{"type":47,"value":2042}," by default. Offer ",{"type":42,"tag":56,"props":2044,"children":2046},{"className":2045},[],[2047],{"type":47,"value":157},{"type":47,"value":2049}," and increased deployment capacity when the task needs deeper\nreasoning or the deployed agent is underthinking. Use ",{"type":42,"tag":56,"props":2051,"children":2053},{"className":2052},[],[2054],{"type":47,"value":165},{"type":47,"value":2056}," only when the selected model supports\nit and the user wants maximum reasoning with possible latency\u002Fcost tradeoffs. Use reasoning summary\n",{"type":42,"tag":56,"props":2058,"children":2060},{"className":2059},[],[2061],{"type":47,"value":173},{"type":47,"value":79},{"type":42,"tag":81,"props":2064,"children":2066},{"id":2065},"deploy-and-verify",[2067],{"type":47,"value":2068},"Deploy and Verify",{"type":42,"tag":50,"props":2070,"children":2071},{},[2072,2074,2079,2081,2086,2088,2093,2095,2100],{"type":47,"value":2073},"For new apps, use ",{"type":42,"tag":56,"props":2075,"children":2077},{"className":2076},[],[2078],{"type":47,"value":995},{"type":47,"value":2080}," from the project root. If the user has agreed to deploy, run the\ndeployment commands yourself instead of stopping after printing them. Set required ",{"type":42,"tag":56,"props":2082,"children":2084},{"className":2083},[],[2085],{"type":47,"value":77},{"type":47,"value":2087}," env vars,\nrun ",{"type":42,"tag":56,"props":2089,"children":2091},{"className":2090},[],[2092],{"type":47,"value":1526},{"type":47,"value":2094}," when needed, run model\u002Fquota checks before provisioning, confirm the active Azure\nsubscription, then run ",{"type":42,"tag":56,"props":2096,"children":2098},{"className":2097},[],[2099],{"type":47,"value":995},{"type":47,"value":2101}," with a generous timeout. Pause only for information you genuinely\nneed from the user, such as a missing recipient email, region choice, subscription confirmation,\nor portal-only connector authorization. Do not route secrets through chat.",{"type":42,"tag":50,"props":2103,"children":2104},{},[2105,2107,2112,2113,2118,2120,2126,2128,2134],{"type":47,"value":2106},"Before ",{"type":42,"tag":56,"props":2108,"children":2110},{"className":2109},[],[2111],{"type":47,"value":1281},{"type":47,"value":1283},{"type":42,"tag":56,"props":2114,"children":2116},{"className":2115},[],[2117],{"type":47,"value":995},{"type":47,"value":2119},", run ",{"type":42,"tag":56,"props":2121,"children":2123},{"className":2122},[],[2124],{"type":47,"value":2125},"az account show --query \"{name:name,id:id,tenantId:tenantId}\"",{"type":47,"value":2127},"\nand show the selected subscription to the user unless they already explicitly named the subscription\nfor this deployment. If it is not the intended subscription, have the user choose or run\n",{"type":42,"tag":56,"props":2129,"children":2131},{"className":2130},[],[2132],{"type":47,"value":2133},"az account set --subscription \u003Csubscription-id>",{"type":47,"value":2135}," before provisioning. Do not deploy to whichever\nAzure CLI subscription happens to be active without making that choice visible.",{"type":42,"tag":50,"props":2137,"children":2138},{},[2139,2141,2146,2148,2154],{"type":47,"value":2140},"Unless the user explicitly asks for continuous deployment, deploy from the local workspace with\n",{"type":42,"tag":56,"props":2142,"children":2144},{"className":2143},[],[2145],{"type":47,"value":995},{"type":47,"value":2147},". Do not create GitHub Actions workflows, CI\u002FCD pipeline files, repository secrets, or run\n",{"type":42,"tag":56,"props":2149,"children":2151},{"className":2150},[],[2152],{"type":47,"value":2153},"azd pipeline config",{"type":47,"value":2155}," for a normal app deployment request.",{"type":42,"tag":50,"props":2157,"children":2158},{},[2159,2161,2166,2168,2174,2176,2182],{"type":47,"value":2160},"After deployment, verify outputs with ",{"type":42,"tag":56,"props":2162,"children":2164},{"className":2163},[],[2165],{"type":47,"value":1545},{"type":47,"value":2167},", open or provide the relevant app URL,\nshow the user how to get the default function key only when built-in chat UI\u002FAPI endpoints are\npresent, open Connector Namespace authorization links when connectors are present, check\nconnection status, and run a smoke test when practical. For timer or other non-HTTP agents,\nmanually trigger the function with the admin endpoint after deployment, then query Application\nInsights requests, traces, and exceptions for that run. For built-in chat agents, open or provide\nthe ",{"type":42,"tag":56,"props":2169,"children":2171},{"className":2170},[],[2172],{"type":47,"value":2173},"\u002Fagents\u002F\u003Cslug>\u002F",{"type":47,"value":2175}," URL and call the chat API if useful. Do not rely on ",{"type":42,"tag":56,"props":2177,"children":2179},{"className":2178},[],[2180],{"type":47,"value":2181},"az functionapp log tail",{"type":47,"value":2183},"\nfor Flex Consumption agent diagnostics.",{"type":42,"tag":50,"props":2185,"children":2186},{},[2187,2189,2195],{"type":47,"value":2188},"When a manual trigger starts a timer\u002Fbackground agent, tell the user what to expect before waiting:\nthe admin endpoint often returns ",{"type":42,"tag":56,"props":2190,"children":2192},{"className":2191},[],[2193],{"type":47,"value":2194},"202 Accepted",{"type":47,"value":2196},", the agent may run for several minutes, and\nApplication Insights can lag. Give short progress updates while checking telemetry, especially for\nruns that take 5-10 minutes. If telemetry does not appear after a reasonable wait, or the function\nappears stuck past its expected duration, say so and switch to troubleshooting instead of silently\nwaiting or repeatedly triggering the function.",{"type":42,"tag":50,"props":2198,"children":2199},{},[2200],{"type":47,"value":2201},"For connector actions with visible side effects, such as Teams posts or Outlook messages, verify\nthe downstream side effect after the first run. If the user reports it is missing, do not keep\ntriggering the agent. Inspect the recorded tool result\u002Fsession and run a focused connector smoke\ntest with the same arguments before changing model settings or rerunning the full workflow.",{"type":42,"tag":50,"props":2203,"children":2204},{},[2205,2207,2212,2214,2219],{"type":47,"value":2206},"Be hands-on after scaffolding. Do not stop at a command list when the next command is safe and the\nuser already approved the direction. Run ",{"type":42,"tag":56,"props":2208,"children":2210},{"className":2209},[],[2211],{"type":47,"value":995},{"type":47,"value":2213},", open authorization URLs, run ",{"type":42,"tag":56,"props":2215,"children":2217},{"className":2216},[],[2218],{"type":47,"value":1545},{"type":47,"value":2220},", test deployed endpoints, and report the results. Stop only for user-only actions such\nas signing in to authorize a connector, selecting an ambiguous option, or entering secrets.",{"type":42,"tag":50,"props":2222,"children":2223},{},[2224,2226,2232],{"type":47,"value":2225},"When creating backing Azure resources beyond this skill's bundled Bicep, use Azure docs. If the\nagent needs searchable docs context, ask the user to connect the Microsoft Learn MCP server at\n",{"type":42,"tag":56,"props":2227,"children":2229},{"className":2228},[],[2230],{"type":47,"value":2231},"https:\u002F\u002Flearn.microsoft.com\u002Fapi\u002Fmcp",{"type":47,"value":79},{"type":42,"tag":50,"props":2234,"children":2235},{},[2236],{"type":47,"value":2237},"Useful endpoints:",{"type":42,"tag":88,"props":2239,"children":2240},{},[2241,2252,2263,2274,2285],{"type":42,"tag":92,"props":2242,"children":2243},{},[2244,2246],{"type":47,"value":2245},"Chat UI, when enabled: ",{"type":42,"tag":56,"props":2247,"children":2249},{"className":2248},[],[2250],{"type":47,"value":2251},"\u002Fagents\u002F\u003Cagent-file-stem>\u002F",{"type":42,"tag":92,"props":2253,"children":2254},{},[2255,2257],{"type":47,"value":2256},"Chat API, when enabled: ",{"type":42,"tag":56,"props":2258,"children":2260},{"className":2259},[],[2261],{"type":47,"value":2262},"POST \u002Fagents\u002F\u003Cagent-file-stem>\u002Fchat",{"type":42,"tag":92,"props":2264,"children":2265},{},[2266,2268],{"type":47,"value":2267},"Streaming chat API, when enabled: ",{"type":42,"tag":56,"props":2269,"children":2271},{"className":2270},[],[2272],{"type":47,"value":2273},"POST \u002Fagents\u002F\u003Cagent-file-stem>\u002Fchatstream",{"type":42,"tag":92,"props":2275,"children":2276},{},[2277,2279],{"type":47,"value":2278},"MCP endpoint, when enabled: ",{"type":42,"tag":56,"props":2280,"children":2282},{"className":2281},[],[2283],{"type":47,"value":2284},"\u002Fruntime\u002Fwebhooks\u002Fmcp",{"type":42,"tag":92,"props":2286,"children":2287},{},[2288,2290],{"type":47,"value":2289},"Manual non-HTTP trigger: ",{"type":42,"tag":56,"props":2291,"children":2293},{"className":2292},[],[2294],{"type":47,"value":2295},"POST \u002Fadmin\u002Ffunctions\u002F\u003Cagent-file-stem>",{"type":42,"tag":2297,"props":2298,"children":2299},"style",{},[2300],{"type":47,"value":2301},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2303,"total":1798},[2304,2311,2328,2342,2356,2368,2385],{"slug":4,"name":4,"fn":5,"description":6,"org":2305,"tags":2306,"stars":24,"repoUrl":25,"updatedAt":26},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2307,2308,2309,2310],{"name":19,"slug":20,"type":14},{"name":11,"slug":8,"type":14},{"name":16,"slug":17,"type":14},{"name":22,"slug":23,"type":14},{"slug":2312,"name":2312,"fn":2313,"description":2314,"org":2315,"tags":2316,"stars":24,"repoUrl":25,"updatedAt":2327},"azure-functions-best-practices","apply Azure Functions best practices","Use when reviewing an existing Azure Function App against Azure Functions best practices and proposing safe, approval-gated remediations for runtime, configuration, identity, security, observability, performance, scale, cost, triggers, and bindings.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2317,2318,2321,2324],{"name":11,"slug":8,"type":14},{"name":2319,"slug":2320,"type":14},"Best Practices","best-practices",{"name":2322,"slug":2323,"type":14},"Observability","observability",{"name":2325,"slug":2326,"type":14},"Security","security","2026-07-15T06:02:48.801578",{"slug":2329,"name":2329,"fn":2330,"description":2331,"org":2332,"tags":2333,"stars":24,"repoUrl":25,"updatedAt":2341},"azure-functions-common","reference Azure Functions documentation and configuration","Shared Azure Functions reference material for the Azure Functions skill suite: runtime\u002Flanguage routing, trigger\u002Fbinding extension references, official docs and repository pointers. Use only when another Azure Functions skill needs reusable language or binding context. Not intended as a standalone user-facing workflow.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2334,2335,2338],{"name":11,"slug":8,"type":14},{"name":2336,"slug":2337,"type":14},"Configuration","configuration",{"name":2339,"slug":2340,"type":14},"Documentation","documentation","2026-07-15T06:02:47.557542",{"slug":2343,"name":2343,"fn":2344,"description":2345,"org":2346,"tags":2347,"stars":24,"repoUrl":25,"updatedAt":2355},"azure-functions-create","scaffold Azure Functions projects and triggers","Scaffold a new Azure Functions project, or add a new function\u002Ftrigger to an existing project without re-initializing it",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2348,2351,2352],{"name":2349,"slug":2350,"type":14},"API Development","api-development",{"name":11,"slug":8,"type":14},{"name":2353,"slug":2354,"type":14},"Edge Functions","edge-functions","2026-07-12T08:19:36.401016",{"slug":2357,"name":2357,"fn":2358,"description":2359,"org":2360,"tags":2361,"stars":24,"repoUrl":25,"updatedAt":2367},"azure-functions-deploy","deploy Azure Functions applications","Proxy Azure Functions deployment requests to the Azure Skills prepare, validate, and deploy workflow while preserving Azure Functions-specific guidance",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2362,2363,2366],{"name":11,"slug":8,"type":14},{"name":2364,"slug":2365,"type":14},"CI\u002FCD","ci-cd",{"name":16,"slug":17,"type":14},"2026-07-12T08:19:34.579423",{"slug":2369,"name":2369,"fn":2370,"description":2371,"org":2372,"tags":2373,"stars":24,"repoUrl":25,"updatedAt":2384},"azure-functions-diagnostics","diagnose and resolve Azure Functions issues","Use when diagnosing or resolving Azure Functions issues: deployment failures, runtime errors, trigger\u002Fbinding failures, language worker issues, telemetry\u002Flog analysis, known issue research, source investigation, and remediation. Acts as a facade that routes to focused Azure Functions skills and small language\u002Fextension references.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2374,2375,2378,2381],{"name":11,"slug":8,"type":14},{"name":2376,"slug":2377,"type":14},"Debugging","debugging",{"name":2379,"slug":2380,"type":14},"Logs","logs",{"name":2382,"slug":2383,"type":14},"Monitoring","monitoring","2026-07-12T08:19:30.738425",{"slug":2386,"name":2386,"fn":2387,"description":2388,"org":2389,"tags":2390,"stars":24,"repoUrl":25,"updatedAt":2396},"azure-functions-doctor","diagnose Azure Functions workspace configuration","Analyze local Azure Functions workspace code and configuration for common issues. Produces structured JSON findings for integration with the doctor CLI command. This skill targets local workspaces only — use azure-functions-diagnostics for deployed Azure resources.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2391,2392,2395],{"name":11,"slug":8,"type":14},{"name":2393,"slug":2394,"type":14},"Code Analysis","code-analysis",{"name":2376,"slug":2377,"type":14},"2026-07-15T06:02:46.335328",{"items":2398,"total":2567},[2399,2418,2435,2450,2465,2480,2491,2506,2517,2531,2542,2555],{"slug":2400,"name":2400,"fn":2401,"description":2402,"org":2403,"tags":2404,"stars":2415,"repoUrl":2416,"updatedAt":2417},"azure-arg-external-evaluation-policy-author","author and test Azure Resource Graph policies","Use when the user wants to author, design, or test an Azure Policy that queries Azure Resource Graph (ARG) at request-time — i.e. a policy whose deny\u002Faudit decision depends on data from elsewhere in the subscription (sibling\u002Fparent resource state, RG-wide invariants, multi-hop relationships, etc.). Formally called Azure Policy External Evaluation; sometimes referred to colloquially as \"Invoke\". Drives an iterative KQL co-design loop against the user's real subscription via `az graph query`, then emits a policy definition, assignment, `.http` test flow, and an `EXPLANATION.md` companion. Read-only; never provisions anything.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2405,2406,2409,2412],{"name":11,"slug":8,"type":14},{"name":2407,"slug":2408,"type":14},"Compliance","compliance",{"name":2410,"slug":2411,"type":14},"Governance","governance",{"name":2413,"slug":2414,"type":14},"Policy","policy",1686,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-policy","2026-07-12T08:17:48.378432",{"slug":2419,"name":2419,"fn":2420,"description":2421,"org":2422,"tags":2423,"stars":2432,"repoUrl":2433,"updatedAt":2434},"azure-blueprints-migration","migrate Azure Blueprints to Template Specs","Use when a user needs to migrate off Azure Blueprints (definitions and\u002For assignments) to Template Specs and Deployment Stacks before the January 31, 2027 retirement. Covers inventory, export, conversion to Bicep, policy decoupling, Template Spec publishing, Deployment Stack deployment with deny-settings, validation, and cutover.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2424,2425,2426,2429],{"name":11,"slug":8,"type":14},{"name":16,"slug":17,"type":14},{"name":2427,"slug":2428,"type":14},"Infrastructure as Code","infrastructure-as-code",{"name":2430,"slug":2431,"type":14},"Migration","migration",260,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-blueprints","2026-07-12T08:17:49.646405",{"slug":2436,"name":2436,"fn":2437,"description":2438,"org":2439,"tags":2440,"stars":2447,"repoUrl":2448,"updatedAt":2449},"apiview-feedback-resolution","resolve APIView feedback on Azure SDKs","Analyze and resolve APIView review feedback on Azure SDK PRs. **UTILITY SKILL**. USE FOR: APIView comments, API review feedback, SDK API surface changes. DO NOT USE FOR: general code review, non-APIView feedback. INVOKES: azure-sdk-mcp:azsdk_apiview_get_comments, azure-sdk-mcp:azsdk_typespec_customized_code_update.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2441,2442,2443,2446],{"name":2349,"slug":2350,"type":14},{"name":11,"slug":8,"type":14},{"name":2444,"slug":2445,"type":14},"Code Review","code-review",{"name":2339,"slug":2340,"type":14},133,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-tools","2026-07-12T08:17:43.350876",{"slug":2451,"name":2451,"fn":2452,"description":2453,"org":2454,"tags":2455,"stars":2447,"repoUrl":2448,"updatedAt":2464},"azsdk-common-live-and-recorded-tests","deploy resources and run Azure SDK tests","Deploy test resources and run Azure SDK tests in live, record, or playback mode. WHEN: \"run live tests\", \"run recorded tests\", \"deploy test resources\", \"record tests\", \"run tests in record mode\", \"clean up test resources\", \"run tests against live resources\". DO NOT USE FOR: writing new tests, authoring Bicep templates, playback-only test runs without resource deployment. INVOKES: azure-sdk-mcp:azsdk_package_run_tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2456,2457,2458,2461],{"name":11,"slug":8,"type":14},{"name":16,"slug":17,"type":14},{"name":2459,"slug":2460,"type":14},"SDK","sdk",{"name":2462,"slug":2463,"type":14},"Testing","testing","2026-07-12T08:17:44.718943",{"slug":2466,"name":2466,"fn":2467,"description":2468,"org":2469,"tags":2470,"stars":2447,"repoUrl":2448,"updatedAt":2479},"azsdk-common-prepare-release-plan","manage Azure SDK release plan work items","Create, get, update, abandon, and link SDK PRs to release plan work items for Azure SDK releases. **UTILITY SKILL**. USE FOR: \"create release plan\", \"get release plan\", \"update release plan\", \"update API spec in release plan\", \"update SDK details in release plan\", \"abandon release plan\", \"link SDK PR to plan\", \"namespace approval\", \"check release plan status\". DO NOT USE FOR: SDK code generation, pipeline troubleshooting, API review feedback. INVOKES: azure-sdk-mcp:azsdk_create_release_plan, azure-sdk-mcp:azsdk_get_release_plan, azure-sdk-mcp:azsdk_get_release_plan_for_spec_pr, azure-sdk-mcp:azsdk_update_release_plan, azure-sdk-mcp:azsdk_update_api_spec_pull_request_in_release_plan, azure-sdk-mcp:azsdk_update_sdk_details_in_release_plan, azure-sdk-mcp:azsdk_abandon_release_plan, azure-sdk-mcp:azsdk_link_sdk_pull_request_to_release_plan, azure-sdk-mcp:azsdk_link_namespace_approval_issue.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2471,2472,2475,2478],{"name":11,"slug":8,"type":14},{"name":2473,"slug":2474,"type":14},"GitHub","github",{"name":2476,"slug":2477,"type":14},"Project Management","project-management",{"name":2459,"slug":2460,"type":14},"2026-07-12T08:17:38.345387",{"slug":2481,"name":2481,"fn":2482,"description":2483,"org":2484,"tags":2485,"stars":2447,"repoUrl":2448,"updatedAt":2490},"azsdk-common-sdk-release","release Azure SDK packages","Check release readiness and trigger the release pipeline for Azure SDK packages. **UTILITY SKILL**. USE FOR: \"release SDK\", \"trigger release\", \"check release readiness\", \"release pipeline\", \"publish package\", \"ship SDK\". DO NOT USE FOR: SDK development, code generation, pipeline debugging, release plan creation. INVOKES: azure-sdk-mcp:azsdk_release_sdk.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2486,2487,2488,2489],{"name":11,"slug":8,"type":14},{"name":2364,"slug":2365,"type":14},{"name":16,"slug":17,"type":14},{"name":2459,"slug":2460,"type":14},"2026-07-12T08:17:34.27607",{"slug":2492,"name":2492,"fn":2493,"description":2494,"org":2495,"tags":2496,"stars":2447,"repoUrl":2448,"updatedAt":2505},"azure-typespec-author","author and modify Azure TypeSpec API specifications","Authors and modifies Azure TypeSpec (.tsp) API specifications. USE FOR: any TypeSpec\u002Ftsp change — api versions (add, bump, preview, stable, promote), resources, operations, models, properties, decorators, visibility, constraints, breaking changes, LRO, suppressions, operationId, spread model. Covers ARM resource-manager and data-plane services. DO NOT USE FOR: SDK generation, releasing SDK packages, or single MCP tool calls. INVOKES: azure-sdk-mcp:azsdk_typespec_generate_authoring_plan, azure-sdk-mcp:azsdk_run_typespec_validation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2497,2498,2499,2502],{"name":2349,"slug":2350,"type":14},{"name":11,"slug":8,"type":14},{"name":2500,"slug":2501,"type":14},"OpenAPI","openapi",{"name":2503,"slug":2504,"type":14},"Technical Writing","technical-writing","2026-07-12T08:17:39.603232",{"slug":2507,"name":2507,"fn":2508,"description":2509,"org":2510,"tags":2511,"stars":2447,"repoUrl":2448,"updatedAt":2516},"generate-sdk-locally","generate and test Azure SDKs locally","Generate, build, and test Azure SDKs locally from TypeSpec with automatic customization. WHEN: \"generate SDK locally\", \"build SDK\", \"run SDK tests\", \"run CI checks\", \"validate package\", \"run checks\", \"update changelog\", \"fix SDK build errors\", \"fix breaking changes\", \"resolve SDK generation errors\", \"customize TypeSpec\", \"rename SDK client\", \"rename SDK model\", \"hide operation from SDK\", \"fix analyzer errors\", \"resolve customization drift\", \"create subclient\", \"update metadata\", \"update version\". DO NOT USE FOR: publishing to package registries, CI pipeline configuration, API design review. INVOKES: azsdk_verify_setup, azsdk_package_generate_code, azsdk_package_build_code, azsdk_package_run_check, azsdk_package_run_tests, azsdk_customized_code_update, azsdk_package_update_changelog_content, azsdk_package_update_metadata, azsdk_package_update_version.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2512,2513,2514,2515],{"name":11,"slug":8,"type":14},{"name":2364,"slug":2365,"type":14},{"name":2459,"slug":2460,"type":14},{"name":2462,"slug":2463,"type":14},"2026-07-12T08:17:37.08523",{"slug":2518,"name":2518,"fn":2519,"description":2520,"org":2521,"tags":2522,"stars":2447,"repoUrl":2448,"updatedAt":2530},"markdown-token-optimizer","optimize markdown files for token efficiency","Analyze markdown files for token efficiency and reduce context-window bloat. **UTILITY SKILL**. DO NOT USE FOR: code optimization, general file editing, non-markdown files. TRIGGERS: optimize markdown, reduce tokens, token count, token bloat, too many tokens, make concise, shrink file, file too large, optimize for AI, token efficiency, verbose markdown, reduce file size. INVOKES: waza CLI.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2523,2526,2529],{"name":2524,"slug":2525,"type":14},"LLM","llm",{"name":2527,"slug":2528,"type":14},"Performance","performance",{"name":2503,"slug":2504,"type":14},"2026-07-12T08:17:42.080413",{"slug":2532,"name":2532,"fn":2533,"description":2534,"org":2535,"tags":2536,"stars":2447,"repoUrl":2448,"updatedAt":2541},"pipeline-troubleshooting","troubleshoot Azure SDK CI pipelines","Diagnose and resolve failures in Azure SDK CI and generation pipelines. **UTILITY SKILL**. USE FOR: \"pipeline failed\", \"build failure\", \"CI check failing\", \"SDK generation error\", \"reproduce pipeline locally\", \"debug SDK pipeline\". DO NOT USE FOR: local build issues without pipeline context, API design review, SDK publishing. INVOKES: azure-sdk-mcp:azsdk_analyze_pipeline, azure-sdk-mcp:azsdk_package_build_code, azure-sdk-mcp:azsdk_package_run_check.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2537,2538,2539,2540],{"name":11,"slug":8,"type":14},{"name":2364,"slug":2365,"type":14},{"name":2376,"slug":2377,"type":14},{"name":2459,"slug":2460,"type":14},"2026-07-12T08:17:40.821512",{"slug":2543,"name":2543,"fn":2544,"description":2545,"org":2546,"tags":2547,"stars":2447,"repoUrl":2448,"updatedAt":2554},"sensei","improve skill frontmatter compliance","**WORKFLOW SKILL** — Iteratively improve skill frontmatter compliance using the Ralph loop pattern. WHEN: \"run sensei\", \"sensei help\", \"improve skill\", \"fix frontmatter\", \"skill compliance\", \"frontmatter audit\", \"score skill\", \"check skill tokens\". INVOKES: token counting tools, test runners, git commands. FOR SINGLE OPERATIONS: use token CLI directly for counts\u002Fchecks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2548,2549,2550,2553],{"name":11,"slug":8,"type":14},{"name":2407,"slug":2408,"type":14},{"name":2551,"slug":2552,"type":14},"Process Optimization","process-optimization",{"name":2503,"slug":2504,"type":14},"2026-07-12T08:17:32.970921",{"slug":2556,"name":2556,"fn":2557,"description":2558,"org":2559,"tags":2560,"stars":2447,"repoUrl":2448,"updatedAt":2566},"skill-authoring","author agent skills for agentskills.io","Write Agent Skills that comply with the agentskills.io specification. WHEN: \"create a skill\", \"new skill\", \"write a skill\", \"skill template\", \"skill structure\", \"review skill\", \"skill PR\", \"skill compliance\", \"SKILL.md format\", \"skill frontmatter\", \"skill best practices\". DO NOT USE FOR: improving existing skills (use sensei), general documentation. INVOKES: waza CLI.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2561,2562,2565],{"name":2339,"slug":2340,"type":14},{"name":2563,"slug":2564,"type":14},"Plugin Development","plugin-development",{"name":2503,"slug":2504,"type":14},"2026-07-12T08:17:35.873862",109]