{
  "schemaVersion": "1.0",
  "item": {
    "slug": "agent-framework-azure-ai-py",
    "name": "Agent Framework Azure Ai Py",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/thegovind/agent-framework-azure-ai-py",
    "canonicalUrl": "https://clawhub.ai/thegovind/agent-framework-azure-ai-py",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/agent-framework-azure-ai-py",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=agent-framework-azure-ai-py",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/acceptance-criteria.md",
      "references/advanced.md",
      "references/mcp.md",
      "references/threads.md",
      "references/tools.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/agent-framework-azure-ai-py"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/agent-framework-azure-ai-py",
    "agentPageUrl": "https://openagent3.xyz/skills/agent-framework-azure-ai-py/agent",
    "manifestUrl": "https://openagent3.xyz/skills/agent-framework-azure-ai-py/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/agent-framework-azure-ai-py/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Agent Framework Azure Hosted Agents",
        "body": "Build persistent agents on Azure AI Foundry using the Microsoft Agent Framework Python SDK."
      },
      {
        "title": "Architecture",
        "body": "User Query → AzureAIAgentsProvider → Azure AI Agent Service (Persistent)\n                    ↓\n              Agent.run() / Agent.run_stream()\n                    ↓\n              Tools: Functions | Hosted (Code/Search/Web) | MCP\n                    ↓\n              AgentThread (conversation persistence)"
      },
      {
        "title": "Installation",
        "body": "# Full framework (recommended)\npip install agent-framework --pre\n\n# Or Azure-specific package only\npip install agent-framework-azure-ai --pre"
      },
      {
        "title": "Environment Variables",
        "body": "export AZURE_AI_PROJECT_ENDPOINT=\"https://<project>.services.ai.azure.com/api/projects/<project-id>\"\nexport AZURE_AI_MODEL_DEPLOYMENT_NAME=\"gpt-4o-mini\"\nexport BING_CONNECTION_ID=\"your-bing-connection-id\"  # For web search"
      },
      {
        "title": "Authentication",
        "body": "from azure.identity.aio import AzureCliCredential, DefaultAzureCredential\n\n# Development\ncredential = AzureCliCredential()\n\n# Production\ncredential = DefaultAzureCredential()"
      },
      {
        "title": "Basic Agent",
        "body": "import asyncio\nfrom agent_framework.azure import AzureAIAgentsProvider\nfrom azure.identity.aio import AzureCliCredential\n\nasync def main():\n    async with (\n        AzureCliCredential() as credential,\n        AzureAIAgentsProvider(credential=credential) as provider,\n    ):\n        agent = await provider.create_agent(\n            name=\"MyAgent\",\n            instructions=\"You are a helpful assistant.\",\n        )\n        \n        result = await agent.run(\"Hello!\")\n        print(result.text)\n\nasyncio.run(main())"
      },
      {
        "title": "Agent with Function Tools",
        "body": "from typing import Annotated\nfrom pydantic import Field\nfrom agent_framework.azure import AzureAIAgentsProvider\nfrom azure.identity.aio import AzureCliCredential\n\ndef get_weather(\n    location: Annotated[str, Field(description=\"City name to get weather for\")],\n) -> str:\n    \"\"\"Get the current weather for a location.\"\"\"\n    return f\"Weather in {location}: 72°F, sunny\"\n\ndef get_current_time() -> str:\n    \"\"\"Get the current UTC time.\"\"\"\n    from datetime import datetime, timezone\n    return datetime.now(timezone.utc).strftime(\"%Y-%m-%d %H:%M:%S UTC\")\n\nasync def main():\n    async with (\n        AzureCliCredential() as credential,\n        AzureAIAgentsProvider(credential=credential) as provider,\n    ):\n        agent = await provider.create_agent(\n            name=\"WeatherAgent\",\n            instructions=\"You help with weather and time queries.\",\n            tools=[get_weather, get_current_time],  # Pass functions directly\n        )\n        \n        result = await agent.run(\"What's the weather in Seattle?\")\n        print(result.text)"
      },
      {
        "title": "Agent with Hosted Tools",
        "body": "from agent_framework import (\n    HostedCodeInterpreterTool,\n    HostedFileSearchTool,\n    HostedWebSearchTool,\n)\nfrom agent_framework.azure import AzureAIAgentsProvider\nfrom azure.identity.aio import AzureCliCredential\n\nasync def main():\n    async with (\n        AzureCliCredential() as credential,\n        AzureAIAgentsProvider(credential=credential) as provider,\n    ):\n        agent = await provider.create_agent(\n            name=\"MultiToolAgent\",\n            instructions=\"You can execute code, search files, and search the web.\",\n            tools=[\n                HostedCodeInterpreterTool(),\n                HostedWebSearchTool(name=\"Bing\"),\n            ],\n        )\n        \n        result = await agent.run(\"Calculate the factorial of 20 in Python\")\n        print(result.text)"
      },
      {
        "title": "Streaming Responses",
        "body": "async def main():\n    async with (\n        AzureCliCredential() as credential,\n        AzureAIAgentsProvider(credential=credential) as provider,\n    ):\n        agent = await provider.create_agent(\n            name=\"StreamingAgent\",\n            instructions=\"You are a helpful assistant.\",\n        )\n        \n        print(\"Agent: \", end=\"\", flush=True)\n        async for chunk in agent.run_stream(\"Tell me a short story\"):\n            if chunk.text:\n                print(chunk.text, end=\"\", flush=True)\n        print()"
      },
      {
        "title": "Conversation Threads",
        "body": "from agent_framework.azure import AzureAIAgentsProvider\nfrom azure.identity.aio import AzureCliCredential\n\nasync def main():\n    async with (\n        AzureCliCredential() as credential,\n        AzureAIAgentsProvider(credential=credential) as provider,\n    ):\n        agent = await provider.create_agent(\n            name=\"ChatAgent\",\n            instructions=\"You are a helpful assistant.\",\n            tools=[get_weather],\n        )\n        \n        # Create thread for conversation persistence\n        thread = agent.get_new_thread()\n        \n        # First turn\n        result1 = await agent.run(\"What's the weather in Seattle?\", thread=thread)\n        print(f\"Agent: {result1.text}\")\n        \n        # Second turn - context is maintained\n        result2 = await agent.run(\"What about Portland?\", thread=thread)\n        print(f\"Agent: {result2.text}\")\n        \n        # Save thread ID for later resumption\n        print(f\"Conversation ID: {thread.conversation_id}\")"
      },
      {
        "title": "Structured Outputs",
        "body": "from pydantic import BaseModel, ConfigDict\nfrom agent_framework.azure import AzureAIAgentsProvider\nfrom azure.identity.aio import AzureCliCredential\n\nclass WeatherResponse(BaseModel):\n    model_config = ConfigDict(extra=\"forbid\")\n    \n    location: str\n    temperature: float\n    unit: str\n    conditions: str\n\nasync def main():\n    async with (\n        AzureCliCredential() as credential,\n        AzureAIAgentsProvider(credential=credential) as provider,\n    ):\n        agent = await provider.create_agent(\n            name=\"StructuredAgent\",\n            instructions=\"Provide weather information in structured format.\",\n            response_format=WeatherResponse,\n        )\n        \n        result = await agent.run(\"Weather in Seattle?\")\n        weather = WeatherResponse.model_validate_json(result.text)\n        print(f\"{weather.location}: {weather.temperature}°{weather.unit}\")"
      },
      {
        "title": "Provider Methods",
        "body": "MethodDescriptioncreate_agent()Create new agent on Azure AI serviceget_agent(agent_id)Retrieve existing agent by IDas_agent(sdk_agent)Wrap SDK Agent object (no HTTP call)"
      },
      {
        "title": "Hosted Tools Quick Reference",
        "body": "ToolImportPurposeHostedCodeInterpreterToolfrom agent_framework import HostedCodeInterpreterToolExecute Python codeHostedFileSearchToolfrom agent_framework import HostedFileSearchToolSearch vector storesHostedWebSearchToolfrom agent_framework import HostedWebSearchToolBing web searchHostedMCPToolfrom agent_framework import HostedMCPToolService-managed MCPMCPStreamableHTTPToolfrom agent_framework import MCPStreamableHTTPToolClient-managed MCP"
      },
      {
        "title": "Complete Example",
        "body": "import asyncio\nfrom typing import Annotated\nfrom pydantic import BaseModel, Field\nfrom agent_framework import (\n    HostedCodeInterpreterTool,\n    HostedWebSearchTool,\n    MCPStreamableHTTPTool,\n)\nfrom agent_framework.azure import AzureAIAgentsProvider\nfrom azure.identity.aio import AzureCliCredential\n\n\ndef get_weather(\n    location: Annotated[str, Field(description=\"City name\")],\n) -> str:\n    \"\"\"Get weather for a location.\"\"\"\n    return f\"Weather in {location}: 72°F, sunny\"\n\n\nclass AnalysisResult(BaseModel):\n    summary: str\n    key_findings: list[str]\n    confidence: float\n\n\nasync def main():\n    async with (\n        AzureCliCredential() as credential,\n        MCPStreamableHTTPTool(\n            name=\"Docs MCP\",\n            url=\"https://learn.microsoft.com/api/mcp\",\n        ) as mcp_tool,\n        AzureAIAgentsProvider(credential=credential) as provider,\n    ):\n        agent = await provider.create_agent(\n            name=\"ResearchAssistant\",\n            instructions=\"You are a research assistant with multiple capabilities.\",\n            tools=[\n                get_weather,\n                HostedCodeInterpreterTool(),\n                HostedWebSearchTool(name=\"Bing\"),\n                mcp_tool,\n            ],\n        )\n        \n        thread = agent.get_new_thread()\n        \n        # Non-streaming\n        result = await agent.run(\n            \"Search for Python best practices and summarize\",\n            thread=thread,\n        )\n        print(f\"Response: {result.text}\")\n        \n        # Streaming\n        print(\"\\nStreaming: \", end=\"\")\n        async for chunk in agent.run_stream(\"Continue with examples\", thread=thread):\n            if chunk.text:\n                print(chunk.text, end=\"\", flush=True)\n        print()\n        \n        # Structured output\n        result = await agent.run(\n            \"Analyze findings\",\n            thread=thread,\n            response_format=AnalysisResult,\n        )\n        analysis = AnalysisResult.model_validate_json(result.text)\n        print(f\"\\nConfidence: {analysis.confidence}\")\n\n\nif __name__ == \"__main__\":\n    asyncio.run(main())"
      },
      {
        "title": "Conventions",
        "body": "Always use async context managers: async with provider:\nPass functions directly to tools= parameter (auto-converted to AIFunction)\nUse Annotated[type, Field(description=...)] for function parameters\nUse get_new_thread() for multi-turn conversations\nPrefer HostedMCPTool for service-managed MCP, MCPStreamableHTTPTool for client-managed"
      },
      {
        "title": "Reference Files",
        "body": "references/tools.md: Detailed hosted tool patterns\nreferences/mcp.md: MCP integration (hosted + local)\nreferences/threads.md: Thread and conversation management\nreferences/advanced.md: OpenAPI, citations, structured outputs"
      }
    ],
    "body": "Agent Framework Azure Hosted Agents\n\nBuild persistent agents on Azure AI Foundry using the Microsoft Agent Framework Python SDK.\n\nArchitecture\nUser Query → AzureAIAgentsProvider → Azure AI Agent Service (Persistent)\n                    ↓\n              Agent.run() / Agent.run_stream()\n                    ↓\n              Tools: Functions | Hosted (Code/Search/Web) | MCP\n                    ↓\n              AgentThread (conversation persistence)\n\nInstallation\n# Full framework (recommended)\npip install agent-framework --pre\n\n# Or Azure-specific package only\npip install agent-framework-azure-ai --pre\n\nEnvironment Variables\nexport AZURE_AI_PROJECT_ENDPOINT=\"https://<project>.services.ai.azure.com/api/projects/<project-id>\"\nexport AZURE_AI_MODEL_DEPLOYMENT_NAME=\"gpt-4o-mini\"\nexport BING_CONNECTION_ID=\"your-bing-connection-id\"  # For web search\n\nAuthentication\nfrom azure.identity.aio import AzureCliCredential, DefaultAzureCredential\n\n# Development\ncredential = AzureCliCredential()\n\n# Production\ncredential = DefaultAzureCredential()\n\nCore Workflow\nBasic Agent\nimport asyncio\nfrom agent_framework.azure import AzureAIAgentsProvider\nfrom azure.identity.aio import AzureCliCredential\n\nasync def main():\n    async with (\n        AzureCliCredential() as credential,\n        AzureAIAgentsProvider(credential=credential) as provider,\n    ):\n        agent = await provider.create_agent(\n            name=\"MyAgent\",\n            instructions=\"You are a helpful assistant.\",\n        )\n        \n        result = await agent.run(\"Hello!\")\n        print(result.text)\n\nasyncio.run(main())\n\nAgent with Function Tools\nfrom typing import Annotated\nfrom pydantic import Field\nfrom agent_framework.azure import AzureAIAgentsProvider\nfrom azure.identity.aio import AzureCliCredential\n\ndef get_weather(\n    location: Annotated[str, Field(description=\"City name to get weather for\")],\n) -> str:\n    \"\"\"Get the current weather for a location.\"\"\"\n    return f\"Weather in {location}: 72°F, sunny\"\n\ndef get_current_time() -> str:\n    \"\"\"Get the current UTC time.\"\"\"\n    from datetime import datetime, timezone\n    return datetime.now(timezone.utc).strftime(\"%Y-%m-%d %H:%M:%S UTC\")\n\nasync def main():\n    async with (\n        AzureCliCredential() as credential,\n        AzureAIAgentsProvider(credential=credential) as provider,\n    ):\n        agent = await provider.create_agent(\n            name=\"WeatherAgent\",\n            instructions=\"You help with weather and time queries.\",\n            tools=[get_weather, get_current_time],  # Pass functions directly\n        )\n        \n        result = await agent.run(\"What's the weather in Seattle?\")\n        print(result.text)\n\nAgent with Hosted Tools\nfrom agent_framework import (\n    HostedCodeInterpreterTool,\n    HostedFileSearchTool,\n    HostedWebSearchTool,\n)\nfrom agent_framework.azure import AzureAIAgentsProvider\nfrom azure.identity.aio import AzureCliCredential\n\nasync def main():\n    async with (\n        AzureCliCredential() as credential,\n        AzureAIAgentsProvider(credential=credential) as provider,\n    ):\n        agent = await provider.create_agent(\n            name=\"MultiToolAgent\",\n            instructions=\"You can execute code, search files, and search the web.\",\n            tools=[\n                HostedCodeInterpreterTool(),\n                HostedWebSearchTool(name=\"Bing\"),\n            ],\n        )\n        \n        result = await agent.run(\"Calculate the factorial of 20 in Python\")\n        print(result.text)\n\nStreaming Responses\nasync def main():\n    async with (\n        AzureCliCredential() as credential,\n        AzureAIAgentsProvider(credential=credential) as provider,\n    ):\n        agent = await provider.create_agent(\n            name=\"StreamingAgent\",\n            instructions=\"You are a helpful assistant.\",\n        )\n        \n        print(\"Agent: \", end=\"\", flush=True)\n        async for chunk in agent.run_stream(\"Tell me a short story\"):\n            if chunk.text:\n                print(chunk.text, end=\"\", flush=True)\n        print()\n\nConversation Threads\nfrom agent_framework.azure import AzureAIAgentsProvider\nfrom azure.identity.aio import AzureCliCredential\n\nasync def main():\n    async with (\n        AzureCliCredential() as credential,\n        AzureAIAgentsProvider(credential=credential) as provider,\n    ):\n        agent = await provider.create_agent(\n            name=\"ChatAgent\",\n            instructions=\"You are a helpful assistant.\",\n            tools=[get_weather],\n        )\n        \n        # Create thread for conversation persistence\n        thread = agent.get_new_thread()\n        \n        # First turn\n        result1 = await agent.run(\"What's the weather in Seattle?\", thread=thread)\n        print(f\"Agent: {result1.text}\")\n        \n        # Second turn - context is maintained\n        result2 = await agent.run(\"What about Portland?\", thread=thread)\n        print(f\"Agent: {result2.text}\")\n        \n        # Save thread ID for later resumption\n        print(f\"Conversation ID: {thread.conversation_id}\")\n\nStructured Outputs\nfrom pydantic import BaseModel, ConfigDict\nfrom agent_framework.azure import AzureAIAgentsProvider\nfrom azure.identity.aio import AzureCliCredential\n\nclass WeatherResponse(BaseModel):\n    model_config = ConfigDict(extra=\"forbid\")\n    \n    location: str\n    temperature: float\n    unit: str\n    conditions: str\n\nasync def main():\n    async with (\n        AzureCliCredential() as credential,\n        AzureAIAgentsProvider(credential=credential) as provider,\n    ):\n        agent = await provider.create_agent(\n            name=\"StructuredAgent\",\n            instructions=\"Provide weather information in structured format.\",\n            response_format=WeatherResponse,\n        )\n        \n        result = await agent.run(\"Weather in Seattle?\")\n        weather = WeatherResponse.model_validate_json(result.text)\n        print(f\"{weather.location}: {weather.temperature}°{weather.unit}\")\n\nProvider Methods\nMethod\tDescription\ncreate_agent()\tCreate new agent on Azure AI service\nget_agent(agent_id)\tRetrieve existing agent by ID\nas_agent(sdk_agent)\tWrap SDK Agent object (no HTTP call)\nHosted Tools Quick Reference\nTool\tImport\tPurpose\nHostedCodeInterpreterTool\tfrom agent_framework import HostedCodeInterpreterTool\tExecute Python code\nHostedFileSearchTool\tfrom agent_framework import HostedFileSearchTool\tSearch vector stores\nHostedWebSearchTool\tfrom agent_framework import HostedWebSearchTool\tBing web search\nHostedMCPTool\tfrom agent_framework import HostedMCPTool\tService-managed MCP\nMCPStreamableHTTPTool\tfrom agent_framework import MCPStreamableHTTPTool\tClient-managed MCP\nComplete Example\nimport asyncio\nfrom typing import Annotated\nfrom pydantic import BaseModel, Field\nfrom agent_framework import (\n    HostedCodeInterpreterTool,\n    HostedWebSearchTool,\n    MCPStreamableHTTPTool,\n)\nfrom agent_framework.azure import AzureAIAgentsProvider\nfrom azure.identity.aio import AzureCliCredential\n\n\ndef get_weather(\n    location: Annotated[str, Field(description=\"City name\")],\n) -> str:\n    \"\"\"Get weather for a location.\"\"\"\n    return f\"Weather in {location}: 72°F, sunny\"\n\n\nclass AnalysisResult(BaseModel):\n    summary: str\n    key_findings: list[str]\n    confidence: float\n\n\nasync def main():\n    async with (\n        AzureCliCredential() as credential,\n        MCPStreamableHTTPTool(\n            name=\"Docs MCP\",\n            url=\"https://learn.microsoft.com/api/mcp\",\n        ) as mcp_tool,\n        AzureAIAgentsProvider(credential=credential) as provider,\n    ):\n        agent = await provider.create_agent(\n            name=\"ResearchAssistant\",\n            instructions=\"You are a research assistant with multiple capabilities.\",\n            tools=[\n                get_weather,\n                HostedCodeInterpreterTool(),\n                HostedWebSearchTool(name=\"Bing\"),\n                mcp_tool,\n            ],\n        )\n        \n        thread = agent.get_new_thread()\n        \n        # Non-streaming\n        result = await agent.run(\n            \"Search for Python best practices and summarize\",\n            thread=thread,\n        )\n        print(f\"Response: {result.text}\")\n        \n        # Streaming\n        print(\"\\nStreaming: \", end=\"\")\n        async for chunk in agent.run_stream(\"Continue with examples\", thread=thread):\n            if chunk.text:\n                print(chunk.text, end=\"\", flush=True)\n        print()\n        \n        # Structured output\n        result = await agent.run(\n            \"Analyze findings\",\n            thread=thread,\n            response_format=AnalysisResult,\n        )\n        analysis = AnalysisResult.model_validate_json(result.text)\n        print(f\"\\nConfidence: {analysis.confidence}\")\n\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n\nConventions\nAlways use async context managers: async with provider:\nPass functions directly to tools= parameter (auto-converted to AIFunction)\nUse Annotated[type, Field(description=...)] for function parameters\nUse get_new_thread() for multi-turn conversations\nPrefer HostedMCPTool for service-managed MCP, MCPStreamableHTTPTool for client-managed\nReference Files\nreferences/tools.md: Detailed hosted tool patterns\nreferences/mcp.md: MCP integration (hosted + local)\nreferences/threads.md: Thread and conversation management\nreferences/advanced.md: OpenAPI, citations, structured outputs"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/thegovind/agent-framework-azure-ai-py",
    "publisherUrl": "https://clawhub.ai/thegovind/agent-framework-azure-ai-py",
    "owner": "thegovind",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/agent-framework-azure-ai-py",
    "downloadUrl": "https://openagent3.xyz/downloads/agent-framework-azure-ai-py",
    "agentUrl": "https://openagent3.xyz/skills/agent-framework-azure-ai-py/agent",
    "manifestUrl": "https://openagent3.xyz/skills/agent-framework-azure-ai-py/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/agent-framework-azure-ai-py/agent.md"
  }
}