> ## Documentation Index
> Fetch the complete documentation index at: https://docs.modulex.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Azure Storage Integration for AI Agents & Workflows

> Manage blobs and containers in Microsoft Azure Blob Storage

{/* Self-hosted logo — build-time vendored from modulex.json / Iconify (see scripts/lib/logo.js). */}

<img src="https://mintcdn.com/modulexaillc/zKB2qsP6Q61VNLfB/logos/azure-storage.svg?fit=max&auto=format&n=zKB2qsP6Q61VNLfB&q=85&s=f0e4609d933185a01811e089bc5598b2" alt="Azure Storage logo" width="72" height="72" data-path="logos/azure-storage.svg" />

## Overview

Add **Azure Storage** to any ModuleX agent or workflow. Manage blobs and containers in Microsoft Azure Blob Storage via the Azure Blob Storage REST API (`https://<account>.blob.core.windows.net`).

<Info>
  **Categories**: Cloud Infrastructure · Storage · **Auth**: Microsoft OAuth2 · **Actions**: 4
</Info>

## Authentication

### Microsoft OAuth2

Connect using Microsoft OAuth (recommended)

#### Required Credentials

| Field                | Description                                                   | Required | Format                                     |
| -------------------- | ------------------------------------------------------------- | -------- | ------------------------------------------ |
| Client ID            | Azure AD App Registration Client ID                           | Yes      | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`     |
| Client Secret        | Azure AD App Registration Client Secret                       | Yes      | `xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` |
| Storage Account Name | Azure Storage account name (appears in the blob endpoint URL) | Yes      | `mystorageaccount`                         |

#### OAuth Configuration

* **Authorization URL**: `https://login.microsoftonline.com/common/oauth2/v2.0/authorize`
* **Token URL**: `https://login.microsoftonline.com/common/oauth2/v2.0/token`
* **Scopes**: `https://storage.azure.com/user_impersonation`, `offline_access`

## Available Actions

<AccordionGroup>
  <Accordion title="create_container — Create a new container under the specified storage account">
    ### Parameters

    <ResponseField name="container_name" type="string" required>
      Name of the container to create (lowercase, alphanumeric and hyphens only)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        }
      },
      "required": [
        "success"
      ],
      "title": "CreateContainerOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="delete_blob — Delete a specific blob from a container in Azure Storage">
    ### Parameters

    <ResponseField name="container_name" type="string" required>
      Name of the container holding the blob
    </ResponseField>

    <ResponseField name="blob_name" type="string" required>
      Name of the blob to delete
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        }
      },
      "required": [
        "success"
      ],
      "title": "DeleteBlobOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="list_containers — List all containers in the storage account">
    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "containers": {
          "items": {
            "type": "string"
          },
          "title": "Containers",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListContainersOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="upload_blob — Upload content from a URL to a blob in Azure Storage">
    ### Parameters

    <ResponseField name="container_name" type="string" required>
      Name of the target container
    </ResponseField>

    <ResponseField name="blob_name" type="string" required>
      Name for the blob in the container
    </ResponseField>

    <ResponseField name="file_url" type="string" required>
      Publicly accessible URL of the file to upload
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        }
      },
      "required": [
        "success"
      ],
      "title": "UploadBlobOutput",
      "type": "object"
    }
    ```
  </Accordion>
</AccordionGroup>

## Limits & Quotas

* Azure Storage limits vary by account type and tier; see
  [Azure Storage scalability targets](https://learn.microsoft.com/en-us/azure/storage/common/scalability-targets-standard-account).
* Blob REST API requests are subject to per-account throughput limits
  (up to 20,000 requests/sec for general-purpose v2 accounts).
* Error model: non-2xx responses are caught and returned as
  `success=False` + `error` rather than raising.

## Related integrations

<CardGroup cols={3}>
  <Card title="Amazon Web Services" href="/integrations/tools/aws" />

  <Card title="Dropbox" href="/integrations/tools/dropbox" />

  <Card title="GoDaddy" href="/integrations/tools/godaddy" />
</CardGroup>

## Links

* [Azure Storage](https://azure.microsoft.com/en-us/products/storage/blobs)
