Azure MCP Server
The Azure MCP Server enables interaction with Azure services through the Model Context Protocol (MCP), supporting the following capabilities:
Azure Blob Storage: Create, list, and delete containers; upload, delete, list, and read blobs (files)
Azure Cosmos DB (NoSQL API): Create, describe, list, and delete containers; create, read, replace, delete, and query items using SQL queries
Azure App Configuration: Read, write, and delete key-value pairs
Audit Logging: All operations are automatically logged and accessible via the
audit://azure-operationsendpointCan be installed and configured for use with the Claude Desktop App
Provides tools for interacting with Azure services, specifically Azure Blob Storage and Azure Cosmos DB (NoSQL API). Enables operations like creating/listing/deleting containers, uploading/reading/deleting blobs, and creating/reading/querying/deleting items in Cosmos DB.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Azure MCP Serverlist all containers in my blob storage account"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Azure MCP Server
An implementation of a Model Context Protocol server for interacting with Azure services. Currently supports Azure Blob Storage and Azure Cosmos DB (NoSQL API). All operations performed through this server are automatically logged and accessible via the audit://azure-operations resource endpoint.
Running Locally with the Claude Desktop App
Installing via Smithery
To install Azure MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @mashriram/azure_mcp_server --client claudeManual Installation
Clone the Repository: Clone this repository to your local machine.
Configure Azure Credentials: Configure your Azure credentials. This server requires an Azure account with appropriate permissions for Blob Storage, Cosmos DB and App Configuration. We recommend using
DefaultAzureCredentialwhich attempts to authenticate via various methods in order.Environment Variables: Set the following environment variables:
AZURE_STORAGE_ACCOUNT_URL: The URL of your Azure Storage account (e.g.,https://<your_account_name>.blob.core.windows.net).AZURE_COSMOSDB_ENDPOINT: The endpoint URL for your Azure Cosmos DB account.AZURE_COSMOSDB_KEY: The primary or secondary key for your Azure Cosmos DB account. Important: Treat this key like a password and keep it secure.AZURE_APP_CONFIGURATION_ENDPOINT: The URL of your Azure App Configuration instance.
Azure CLI: Alternatively, you can authenticate using the Azure CLI. Ensure you are logged in with an account that has the necessary permissions. This server uses
DefaultAzureCredentialso it will automatically authenticate with the Azure CLI credentials if environment variables are not specified. Useaz loginto log in.
Configure Claude Desktop: Add the following configuration to your
claude_desktop_config.jsonfile:macOS:
~/Library/Application\ Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%/Claude/claude_desktop_config.json
"mcpServers": { "mcp-server-azure": { "command": "uv", "args": [ "--directory", "/path/to/repo/azure-mcp-server", "run", "azure-mcp-server" ] } }Replace
/path/to/repo/azure-mcp-serverwith the actual path to the cloned repository.Install and Launch Claude Desktop: Install and open the Claude desktop app.
Test the Setup: Ask Claude to perform a read or write operation using the Azure tools (e.g., create a Blob Storage container or add an item to Cosmos DB). If you encounter issues, consult the MCP debugging documentation here.
Related MCP server: MCP Server for Apache OpenDAL™
Available Tools
Azure Blob Storage Operations
blob_container_create: Creates a new Blob Storage container. Requires the
container_name.blob_container_list: Lists all Blob Storage containers in the configured account.
blob_container_delete: Deletes a Blob Storage container. Requires the
container_name.blob_upload: Uploads a blob (file) to a Blob Storage container. Requires the
container_name,blob_name, and thefile_content(Base64 encoded).blob_delete: Deletes a blob from a Blob Storage container. Requires the
container_nameandblob_name.blob_list: Lists the blobs within a Blob Storage container. Requires the
container_name.blob_read: Reads the content of a blob from Blob Storage. Requires the
container_nameandblob_name. Returns the content as text.
Azure Cosmos DB (NoSQL API) Operations
Container Operations
cosmosdb_container_create: Creates a new Cosmos DB container within a database. Requires the
container_nameandpartition_key. Thedatabase_nameis optional and defaults todefaultdb. Thepartition_keyshould be a JSON object defining the partition key (e.g.,{"paths": ["/myPartitionKey"], "kind": "Hash"}).cosmosdb_container_describe: Retrieves details about a Cosmos DB container. Requires the
container_name. Thedatabase_nameis optional and defaults todefaultdb.cosmosdb_container_list: Lists all Cosmos DB containers within a database. The
database_nameis optional and defaults todefaultdb.cosmosdb_container_delete: Deletes a Cosmos DB container. Requires the
container_name. Thedatabase_nameis optional and defaults todefaultdb.
Item Operations
cosmosdb_item_create: Creates a new item within a Cosmos DB container. Requires the
container_nameand theitem(a JSON object representing the item). Thedatabase_nameis optional and defaults todefaultdb. Make sure youritemincludes the partition key field and value.cosmosdb_item_read: Reads an item from a Cosmos DB container. Requires the
container_name,item_id, andpartition_key. Thedatabase_nameis optional and defaults todefaultdb. Thepartition_keymust match the partition key value of the item being read.cosmosdb_item_replace: Replaces an existing item within a Cosmos DB container. Requires the
container_name,item_id,partition_key, and theitem(a JSON object representing the complete updated item). Thedatabase_nameis optional and defaults todefaultdb. Thepartition_keymust match the partition key value of the item being replaced.cosmosdb_item_delete: Deletes an item from a Cosmos DB container. Requires the
container_name,item_id, andpartition_key. Thedatabase_nameis optional and defaults todefaultdb. Thepartition_keymust match the partition key value of the item being deleted.cosmosdb_item_query: Queries items in a Cosmos DB container using a SQL query. Requires the
container_nameandquery. Thedatabase_nameis optional and defaults todefaultdb. Optionally accepts aparametersarray for parameterized queries.
Azure App Configuration Operations
app_configuration_kv_read: Reads key-values from Azure App Configuration. The
keyparameter is optional and allows filtering by key patterns (supports wildcards, e.g., 'app1/'). Thelabelparameter is optional for filtering by label values ('\0' for no label, '' for any label).app_configuration_kv_write: Writes or updates a key-value in Azure App Configuration. Requires the
keyandvalueparameters. Optional parameters includelabelto apply a label to the key-value andcontent_typeto specify the content type (e.g., 'application/json').app_configuration_kv_delete: Deletes a key-value from Azure App Configuration. Requires the
keyparameter. Thelabelparameter is optional and specifies which labeled version of the key to delete.
Important Cosmos DB Notes:
Partition Keys: Cosmos DB requires a partition key for efficient data storage and retrieval. When creating containers, you must define a partition key. When reading, replacing, or deleting items, you must provide the correct partition key value for the item you are accessing. The partition key is a property within your data.
Case Sensitivity: Cosmos DB resource names (databases, containers, item IDs) and partition key values are case-sensitive. Ensure that you use the correct casing in your tool calls.
Default Database: If the
database_nameis not provided, the server defaults to a database namedSampleDB. Ensure this database exists, or explicitly provide the name of your desired database in the tool call arguments.
This README provides the information needed to set up and use the Azure MCP Server with the Claude desktop application. Remember to handle your Azure credentials securely and consult the MCP documentation for further information on the protocol
Available Tools
19 toolsapp_configuration_kv_deleteC
Delete a key-value from Azure App Configuration
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | The key to delete | |
| label | No | The label of the key-value to delete (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Delete' implies a destructive mutation, the description doesn't specify whether this operation is reversible, requires specific permissions, has side effects (e.g., affecting other configurations), or what happens on success/failure. This is a significant gap for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a destructive operation with no output schema and no annotations), the description is incomplete. It lacks crucial details like behavioral traits (e.g., idempotency, error handling), usage context relative to siblings, and expected outcomes, which are essential for safe and effective tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting both parameters ('key' and optional 'label'). The description doesn't add any additional meaning beyond what the schema provides, such as format examples or constraints. With high schema coverage, the baseline score of 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete') and the resource ('a key-value from Azure App Configuration'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'app_configuration_kv_write' or 'blob_delete', which would require more specific context about Azure App Configuration vs. other services.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing the key to exist), exclusions, or comparisons to siblings like 'app_configuration_kv_read' or 'app_configuration_kv_write', leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
app_configuration_kv_readC
Read key-values from Azure App Configuration
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | The key to read (optional, use * for wildcards, e.g. 'app1/*') | |
| label | No | The label filter (optional, use '\0' for no label, '*' for any label) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action ('Read') without detailing aspects like authentication requirements, rate limits, error handling, or what happens if parameters are omitted (e.g., default behavior). This leaves significant gaps for a tool that interacts with a cloud service.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It is front-loaded and appropriately sized for its simple function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of interacting with Azure App Configuration, no annotations, and no output schema, the description is insufficient. It lacks details on return values, error cases, or behavioral nuances, making it incomplete for effective agent use in a real-world scenario.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema fully documents both parameters ('key' and 'label') with descriptions and optionality. The description adds no additional semantic context beyond what's in the schema, resulting in the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Read') and resource ('key-values from Azure App Configuration'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'app_configuration_kv_write' or 'app_configuration_kv_delete' beyond the verb choice, which is why it doesn't reach a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'app_configuration_kv_write' for writing or 'app_configuration_kv_delete' for deletion, nor does it specify any prerequisites or contextual cues for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
app_configuration_kv_writeB
Write or update a key-value in Azure App Configuration
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | The key to write | |
| value | Yes | The value to store | |
| label | No | The label for the key-value (optional) | |
| content_type | No | Content type of the value (optional, e.g. 'application/json') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Write or update' implies a mutation, it lacks details on permissions, idempotency, error handling, or side effects. For a write tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and wastes no space, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity as a write operation with no annotations and no output schema, the description is incomplete. It lacks information on behavioral traits, return values, and usage context, which are critical for an AI agent to invoke it correctly and safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters. The description does not add any semantic details beyond what the schema provides, such as examples or constraints. Baseline 3 is appropriate when the schema handles parameter documentation effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Write or update') and resource ('a key-value in Azure App Configuration'), distinguishing it from sibling tools like app_configuration_kv_read (read) and app_configuration_kv_delete (delete). It precisely communicates the tool's function without redundancy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, such as authentication or existing configuration, nor does it differentiate from sibling tools beyond the obvious action contrast. Usage context is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blob_container_createC
Create a new Blob Storage container
| Name | Required | Description | Default |
|---|---|---|---|
| container_name | Yes | Name of the Blob Storage container to create |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states 'Create' which implies a write/mutation operation, but doesn't mention permissions required, whether it's idempotent, error conditions (e.g., naming constraints), or what happens on success/failure. For a creation tool with zero annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero wasted words. It's front-loaded with the core action and resource, making it immediately understandable. Every word earns its place in conveying the essential purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't address what the tool returns, error handling, authentication requirements, or naming constraints. Given the complexity of creating a storage resource and the lack of structured metadata, the description should provide more contextual information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the single parameter 'container_name' well-documented in the schema. The description adds no additional parameter information beyond what the schema provides, which is acceptable given the high schema coverage. The baseline score of 3 reflects adequate but minimal value added by the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and resource ('new Blob Storage container'), making the purpose immediately understandable. It distinguishes from siblings like blob_container_delete and blob_container_list by specifying creation rather than deletion or listing. However, it doesn't explicitly differentiate from cosmosdb_container_create, which creates a different type of container.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing storage account access), when not to use it (e.g., if container already exists), or direct alternatives among siblings. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blob_container_deleteC
Delete a Blob Storage container
| Name | Required | Description | Default |
|---|---|---|---|
| container_name | Yes | Name of the Blob Storage container to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action is 'Delete,' implying a destructive mutation, but fails to disclose critical traits: whether deletion is permanent, if it requires specific permissions, what happens to contained blobs, or error conditions (e.g., non-empty containers). This leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with zero wasted words, making it highly concise and front-loaded. It immediately conveys the core action without unnecessary elaboration, which is efficient for a simple tool. Every word earns its place by stating the essential purpose clearly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's destructive nature and lack of annotations or output schema, the description is incomplete. It doesn't address key contextual aspects: the irreversible impact, prerequisites (e.g., empty container), error handling, or what the response contains. For a deletion tool with no structured safety hints, more detail is needed to ensure safe and correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter 'container_name' fully documented in the schema. The description adds no additional meaning beyond what the schema provides, such as format constraints or examples. Since the schema handles the parameter documentation adequately, the baseline score of 3 is appropriate, though no extra value is contributed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete') and the resource ('a Blob Storage container'), making the purpose immediately understandable. It distinguishes from siblings like blob_container_create and blob_container_list by specifying deletion rather than creation or listing. However, it doesn't explicitly mention that this is irreversible or that it deletes all blobs within, which would make it more specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., container must be empty or require force deletion), compare to blob_delete for individual blob removal, or warn about irreversible consequences. Without such context, users might misuse it without understanding the implications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blob_container_listB
List all Blob Storage containers
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'List' implies a read-only operation, the description doesn't address whether this requires specific permissions, returns paginated results, includes metadata, or has rate limits. For a listing tool with zero annotation coverage, this leaves significant behavioral gaps unaddressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the core functionality without any wasted words. It's front-loaded with the essential action and resource, making it immediately scannable and appropriately sized for a simple listing tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema), the description is minimally adequate. However, with no annotations and no output schema, it should ideally provide more behavioral context (e.g., what the list returns, any limitations). The description covers the basic purpose but leaves the agent to assume details about the operation's behavior and results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description adds no parameter information, which is appropriate since there are no parameters to describe. The baseline for 0 parameters with full schema coverage is 4, as no additional parameter semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('all Blob Storage containers'), making the purpose immediately understandable. It distinguishes from siblings like blob_container_create and blob_container_delete by specifying a read-only listing operation. However, it doesn't explicitly differentiate from blob_list (which lists blobs within containers) or cosmosdb_container_list (which lists CosmosDB containers).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to use blob_container_list versus blob_list (for listing blobs within containers) or cosmosdb_container_list (for CosmosDB containers). There are no prerequisites, exclusions, or explicit alternatives named, leaving the agent to infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blob_deleteC
Delete a blob from Blob Storage
| Name | Required | Description | Default |
|---|---|---|---|
| container_name | Yes | Name of the Blob Storage container | |
| blob_name | Yes | Name of the blob to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Delete' implies a destructive mutation, it doesn't specify whether the deletion is permanent, reversible, requires specific permissions, or has side effects (e.g., affecting other blobs). For a destructive tool with zero annotation coverage, this is a significant gap in safety and operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with zero waste—it states the action and resource without fluff. It's appropriately sized for a simple tool and front-loaded with the core purpose, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's destructive nature, lack of annotations, and no output schema, the description is incomplete. It doesn't cover critical aspects like return values (e.g., success/failure indicators), error conditions, or behavioral nuances (e.g., idempotency). For a mutation tool with no structured safety hints, more context is needed to ensure reliable use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters (container_name, blob_name) clearly documented in the schema. The description adds no additional parameter details beyond what the schema provides, such as format examples or constraints. This meets the baseline score of 3 when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete') and resource ('a blob from Blob Storage'), making the purpose immediately understandable. It distinguishes from siblings like blob_container_delete (which deletes containers) and blob_read/list/upload (which perform different operations). However, it doesn't specify whether this deletes a single blob or has broader scope, keeping it from a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing the blob to exist), exclusions (e.g., not for containers), or sibling tools like blob_container_delete for container deletion. Without such context, an agent might misuse it or overlook better options.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blob_listC
List blobs in a Blob Storage container
| Name | Required | Description | Default |
|---|---|---|---|
| container_name | Yes | Name of the Blob Storage container |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states it's a list operation but doesn't cover important aspects like whether it's paginated, what format the output takes (e.g., list of blob names vs. metadata), authentication requirements, rate limits, or error conditions. This leaves significant gaps for an agent to understand how to use it effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence that efficiently conveys the core purpose without any unnecessary words. It's appropriately sized for a simple list operation and front-loads the essential information, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete for a tool that likely returns structured data. It doesn't explain what the output contains (e.g., blob names, sizes, metadata) or handle complexities like pagination or error cases, which are crucial for an agent to use the tool correctly in a storage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the single parameter 'container_name' clearly documented in the schema. The description doesn't add any additional parameter semantics beyond what the schema already provides, such as format constraints or examples of valid container names, which keeps it at the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and resource ('blobs in a Blob Storage container'), making the tool's purpose immediately understandable. However, it doesn't differentiate from the sibling 'blob_container_list' tool, which lists containers rather than blobs within a container, missing an opportunity for clearer sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites (e.g., needing an existing container), comparison to similar tools like 'blob_read' for individual blobs, or exclusions for when other tools might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blob_readC
Read a blob's content from Blob Storage
| Name | Required | Description | Default |
|---|---|---|---|
| container_name | Yes | Name of the Blob Storage container | |
| blob_name | Yes | Name of the blob to read |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Read') but doesn't mention whether this is a safe read operation, potential errors (e.g., if the blob doesn't exist), authentication requirements, rate limits, or the format of the returned content. This leaves significant gaps for an agent to understand the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't address what the tool returns (e.g., raw content, metadata), error conditions, or behavioral nuances. For a read operation with no structured output documentation, more context is needed to guide an agent effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with clear parameter descriptions in the schema itself. The description doesn't add any meaning beyond what the schema provides, such as explaining the relationship between 'container_name' and 'blob_name' or providing examples. This meets the baseline of 3 when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Read') and resource ('blob's content from Blob Storage'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'blob_list' or 'cosmosdb_item_read', which would require more specificity to earn a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing blob), exclusions, or comparisons to siblings like 'blob_list' for listing blobs or 'cosmosdb_item_read' for reading from a different service.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blob_uploadC
Upload a blob to Blob Storage
| Name | Required | Description | Default |
|---|---|---|---|
| container_name | Yes | Name of the Blob Storage container | |
| blob_name | Yes | Name of the blob in the container | |
| file_content | Yes | Base64 encoded file content for upload |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action without behavioral details. It doesn't mention whether this is a write operation (implied but not explicit), what permissions are required, potential rate limits, error conditions, or what happens if a blob already exists (overwrite vs. error). This leaves significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action and resource, making it immediately scannable and easy to parse. Every word earns its place by conveying essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., success confirmation, blob URL, error details), behavioral traits like idempotency or side effects, or how it fits into the broader blob storage workflow with siblings. This leaves the agent under-informed for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting all three parameters (container_name, blob_name, file_content). The description adds no additional parameter semantics beyond what's in the schema, such as format constraints or examples. This meets the baseline of 3 since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Upload') and target resource ('a blob to Blob Storage'), making the purpose immediately understandable. However, it doesn't differentiate itself from sibling tools like blob_container_create or blob_delete, which would require mentioning it specifically handles file content uploads rather than container or metadata operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like blob_container_create for creating containers first, or blob_read for retrieving blobs. It lacks any context about prerequisites (e.g., needing an existing container) or typical use cases, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cosmosdb_container_createC
Create a new Cosmos DB container
| Name | Required | Description | Default |
|---|---|---|---|
| container_name | Yes | Name of the Cosmos DB container | |
| database_name | No | Name of the Cosmos DB database (optional, defaults to 'defaultdb') | |
| partition_key | Yes | Partition key definition for the container (e.g., {'paths': ['/partitionKey'], 'kind': 'Hash'}) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It states this creates a new container but doesn't disclose critical traits like required permissions, whether it's idempotent, potential costs, rate limits, or what happens on failure. For a creation tool with zero annotation coverage, this leaves significant gaps in understanding the operation's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero wasted words. It's front-loaded with the core action and resource, making it immediately scannable and efficient. Every word earns its place without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a creation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what the tool returns (e.g., success confirmation, container details), error conditions, or behavioral nuances like idempotency. For a tool that creates resources in a database system, more context is needed to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all three parameters (container_name, database_name, partition_key) with their types and descriptions. The description adds no additional parameter semantics beyond what's in the schema, which is acceptable given the high coverage, resulting in the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and resource ('Cosmos DB container'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like cosmosdb_container_describe or cosmosdb_container_list, which would require mentioning this is specifically for creating new containers rather than describing or listing existing ones.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing database), when not to use it (e.g., if container already exists), or refer to sibling tools like cosmosdb_container_describe for checking existing containers first. The agent must infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cosmosdb_container_deleteC
Delete a Cosmos DB container
| Name | Required | Description | Default |
|---|---|---|---|
| container_name | Yes | Name of the Cosmos DB container | |
| database_name | No | Name of the Cosmos DB database (optional, defaults to 'defaultdb') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Delete' implies a destructive mutation, it doesn't specify whether this action is irreversible, requires specific permissions, has side effects (e.g., data loss), or returns confirmation details. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no wasted words, making it highly concise and front-loaded. Every word ('Delete a Cosmos DB container') earns its place by clearly conveying the core action and target.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (destructive operation with 2 parameters) and lack of annotations or output schema, the description is incomplete. It doesn't address critical aspects like return values, error conditions, or safety warnings, which are essential for an agent to use this tool correctly in context with its siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for both parameters in the input schema. The description doesn't add any additional meaning beyond what the schema provides (e.g., it doesn't explain parameter interactions or constraints), so it meets the baseline score of 3 where the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete') and resource ('a Cosmos DB container'), making the purpose immediately understandable. However, it doesn't distinguish this tool from other delete operations like 'blob_container_delete' or 'cosmosdb_item_delete', which would require mentioning it specifically removes containers (not items or blobs) to achieve a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. Given sibling tools like 'cosmosdb_container_describe' (for inspection) and 'cosmosdb_item_delete' (for deleting items within containers), the description lacks context about prerequisites (e.g., ensure container is empty) or warnings about irreversible deletion, which are critical for a destructive operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cosmosdb_container_describeB
Get details about a Cosmos DB container
| Name | Required | Description | Default |
|---|---|---|---|
| container_name | Yes | Name of the Cosmos DB container | |
| database_name | No | Name of the Cosmos DB database (optional, defaults to 'defaultdb') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read-only operation ('Get details'), but doesn't specify whether it's safe, if it requires specific permissions, what happens on errors (e.g., if the container doesn't exist), or any rate limits. For a tool with zero annotation coverage, this lack of behavioral context is a significant gap, though it doesn't contradict any annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It is front-loaded and appropriately sized for a simple read operation, making it easy for an agent to parse quickly. Every word earns its place by conveying essential information concisely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (a read operation with two parameters) and high schema coverage, the description is minimally adequate. However, with no annotations and no output schema, it lacks details on behavioral traits (e.g., error handling) and return values (e.g., what details are included). This leaves gaps that could hinder an agent's ability to use the tool effectively, though it meets the basic requirement for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, fully documenting both parameters (container_name and database_name) with their types and optionality. The description adds no additional parameter semantics beyond what the schema provides, such as format examples or constraints. According to the rules, with high schema coverage (>80%), the baseline is 3, which is appropriate here as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get details about') and resource ('a Cosmos DB container'), making the purpose immediately understandable. It distinguishes from siblings like cosmosdb_container_create, cosmosdb_container_delete, and cosmosdb_container_list by specifying it retrieves details rather than creating, deleting, or listing containers. However, it doesn't specify what details are included (e.g., properties, settings, or metadata), which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over cosmosdb_container_list for listing containers or cosmosdb_item_read for reading items within a container, nor does it specify prerequisites like authentication or required permissions. The absence of usage context leaves the agent without direction on appropriate tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cosmosdb_container_listC
List all Cosmos DB containers in a database
| Name | Required | Description | Default |
|---|---|---|---|
| database_name | No | Name of the Cosmos DB database (optional, defaults to 'defaultdb') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action but does not cover critical aspects like whether this is a read-only operation, potential rate limits, authentication needs, or the format of the returned list (e.g., pagination). This leaves significant gaps for an agent to understand the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that efficiently conveys the core purpose without unnecessary words. It is front-loaded and appropriately sized for a simple list operation, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It does not address behavioral traits, return values, or usage context, which are essential for an agent to effectively select and invoke this tool in a real-world scenario with sibling alternatives available.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single parameter 'database_name' fully documented in the schema as optional with a default. The description does not add any additional meaning beyond what the schema provides, such as examples or constraints, so it meets the baseline for adequate but not enhanced coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and resource ('all Cosmos DB containers in a database'), making the purpose immediately understandable. However, it does not explicitly differentiate from sibling tools like 'cosmosdb_container_describe' or 'blob_container_list', which would require more specific scope or context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'cosmosdb_container_describe' for detailed container info or 'blob_container_list' for blob storage. The description lacks context on prerequisites, exclusions, or typical scenarios for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cosmosdb_item_createC
Create a new item in a Cosmos DB container
| Name | Required | Description | Default |
|---|---|---|---|
| container_name | Yes | Name of the Cosmos DB container | |
| database_name | No | Name of the Cosmos DB database (optional, defaults to 'defaultdb') | |
| item | Yes | Item data to create (JSON object) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states 'Create' implying a write operation but doesn't cover critical aspects like authentication needs, error handling (e.g., conflicts), rate limits, or what happens on success (e.g., returns created item ID). For a mutation tool, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (mutation with 3 parameters, no output schema, and no annotations), the description is incomplete. It lacks information on return values, error conditions, prerequisites (e.g., container must exist), and behavioral traits like idempotency. For a database write operation, this leaves too many unknowns for reliable agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for all parameters (container_name, database_name, item). The description adds no additional parameter semantics beyond what's in the schema, such as format details for 'item' or constraints on names. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and target resource ('new item in a Cosmos DB container'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like cosmosdb_item_replace or cosmosdb_item_query, which would require more specific language about creating versus updating or querying items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., existing container/database), contrast with siblings like cosmosdb_item_replace for updates, or specify use cases (e.g., initial data insertion). This leaves the agent without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cosmosdb_item_deleteC
Delete an item from a Cosmos DB container
| Name | Required | Description | Default |
|---|---|---|---|
| container_name | Yes | Name of the Cosmos DB container | |
| database_name | No | Name of the Cosmos DB database (optional, defaults to 'defaultdb') | |
| item_id | Yes | ID of the item to delete | |
| partition_key | Yes | Partition key value for the item |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool performs a deletion, which implies a destructive mutation, but doesn't mention critical aspects like whether the deletion is permanent, requires specific permissions, has rate limits, or returns confirmation. This leaves significant gaps for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description is incomplete. It lacks information on behavioral traits (e.g., permanence, permissions), output expectations, and usage context relative to siblings. Given the complexity of database operations, this minimal description doesn't provide enough guidance for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter-specific information beyond what the input schema provides. Since schema description coverage is 100%, the baseline score is 3. The description doesn't explain parameter relationships (e.g., that 'partition_key' is required alongside 'item_id' for Cosmos DB operations) or provide usage examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete') and resource ('an item from a Cosmos DB container'), making the purpose immediately understandable. However, it doesn't distinguish this tool from sibling tools like 'cosmosdb_container_delete' or 'blob_delete', which would require mentioning the specific resource type (item vs. container vs. blob).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'cosmosdb_item_replace' for updates or 'cosmosdb_item_query' for finding items, nor does it specify prerequisites (e.g., needing to identify an item first) or exclusions (e.g., not for containers).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cosmosdb_item_queryC
Query items in a Cosmos DB container using SQL
| Name | Required | Description | Default |
|---|---|---|---|
| container_name | Yes | Name of the Cosmos DB container | |
| database_name | No | Name of the Cosmos DB database (optional, defaults to 'defaultdb') | |
| query | Yes | Cosmos DB SQL query string | |
| parameters | No | Parameters for the SQL query (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the action is a query but doesn't mention whether this is read-only (likely but not confirmed), what permissions are required, whether there are rate limits, what the return format looks like, or if there are pagination considerations. For a database query tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for the tool's complexity and front-loads the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a database query tool with no annotations, no output schema, and multiple sibling tools, the description is incomplete. It doesn't explain what the tool returns, how results are formatted, whether there are limitations on query complexity, or how it differs from other Cosmos DB item operations. The agent would need to guess about important behavioral aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters thoroughly. The description mentions 'using SQL' which implies the query parameter accepts SQL syntax, but this doesn't add significant meaning beyond what the schema provides. The baseline of 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Query items') and resource ('in a Cosmos DB container using SQL'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like cosmosdb_item_read or cosmosdb_item_create, which would require more specific scope information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With multiple Cosmos DB item operations available (create, read, delete, replace), there's no indication whether this is for complex queries versus simple lookups, or when SQL queries are preferred over direct item operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cosmosdb_item_readC
Read an item from a Cosmos DB container
| Name | Required | Description | Default |
|---|---|---|---|
| container_name | Yes | Name of the Cosmos DB container | |
| database_name | No | Name of the Cosmos DB database (optional, defaults to 'defaultdb') | |
| item_id | Yes | ID of the item to read | |
| partition_key | Yes | Partition key value for the item |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Read' implies a read-only operation, it doesn't specify important behavioral traits such as authentication requirements, error handling (e.g., what happens if the item doesn't exist), rate limits, or whether this is a safe operation. The description is too minimal to adequately inform the agent about how this tool behaves in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that efficiently communicates the core purpose without any wasted words. It's appropriately sized for a simple read operation and front-loads the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a database operation with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what format the returned item will be in (e.g., JSON document), whether it includes metadata, or what happens on errors. For a tool interacting with a complex system like Cosmos DB, more context is needed for the agent to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are documented in the input schema. The description adds no additional semantic context about the parameters beyond what's already in the schema (e.g., it doesn't explain relationships between parameters like why both item_id and partition_key are required). This meets the baseline expectation when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Read') and resource ('an item from a Cosmos DB container'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'cosmosdb_item_query' or 'cosmosdb_container_describe', which also involve reading data from Cosmos DB but with different approaches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'cosmosdb_item_query' (for querying multiple items) or 'cosmosdb_container_describe' (for container metadata), leaving the agent to guess based on tool names alone. No explicit when/when-not instructions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cosmosdb_item_replaceC
Replace an item in a Cosmos DB container
| Name | Required | Description | Default |
|---|---|---|---|
| container_name | Yes | Name of the Cosmos DB container | |
| database_name | No | Name of the Cosmos DB database (optional, defaults to 'defaultdb') | |
| item_id | Yes | ID of the item to replace | |
| partition_key | Yes | Partition key value for the item | |
| item | Yes | Updated item data (JSON object) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Replace an item' which implies a destructive write operation, but doesn't clarify critical aspects: whether this overwrites the entire item or merges fields, what happens if the item doesn't exist (e.g., error vs. creation), authentication requirements, rate limits, or response format. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse. Every part of the sentence earns its place by conveying essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a database mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits (e.g., overwrite behavior, error handling), usage context compared to siblings, and return values. For a tool that modifies data in a Cosmos DB container, more context is needed to guide safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all parameters clearly documented in the schema (e.g., container_name, item_id, partition_key, item as JSON object). The description adds no additional parameter semantics beyond what's in the schema, such as format examples or constraints. According to the rules, with high schema coverage (>80%), the baseline is 3 even without param info in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Replace') and resource ('an item in a Cosmos DB container'), making the purpose immediately understandable. It distinguishes from siblings like cosmosdb_item_create, cosmosdb_item_delete, and cosmosdb_item_read by specifying replacement rather than creation, deletion, or reading. However, it doesn't explicitly differentiate from cosmosdb_item_query or other Cosmos DB operations beyond the basic verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., existing item), contrast with cosmosdb_item_create for new items or cosmosdb_item_read for retrieval, or specify error conditions like missing items. This leaves the agent to infer usage from the name and context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Every tool has a clearly distinct purpose with no ambiguity. The tools are organized by Azure service (App Configuration, Blob Storage, Cosmos DB) and specific resource/action pairs, making it easy for an agent to select the correct tool without confusion. For example, blob_read and blob_upload target different operations on the same resource, but their names clearly differentiate them.
All tool names follow a consistent verb_noun pattern with underscores, such as 'app_configuration_kv_delete' and 'cosmosdb_item_query'. The naming is highly predictable across all 19 tools, using a service_resource_action structure that enhances readability and agent usability. There are no deviations in style or convention.
With 19 tools, the count is slightly high but reasonable for covering multiple Azure services (App Configuration, Blob Storage, Cosmos DB). Each tool earns its place by providing specific CRUD operations, though it might feel a bit heavy compared to more focused servers. The scope is well-defined, avoiding extreme bloat.
The tool set offers complete CRUD/lifecycle coverage for each Azure service domain. For Blob Storage and Cosmos DB, it includes create, read, update (via replace or write), delete, and list operations, with no obvious gaps. App Configuration has read, write, and delete, covering its key-value management needs effectively.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A Model Context Protocol server for Wix AI tools
Model Context Protocol server for Studex tools, notifications, and profile integrations
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Related MCP Servers
- FlicenseNot gradedqualityFmaintenanceThis server implements the Model Context Protocol to facilitate meaningful interaction and understanding development between humans and AI through structured tools and progressive interaction patterns.57
- AlicenseBqualityCmaintenanceA Model Context Protocol server that provides seamless access to multiple storage services including S3, Azure Blob Storage, and Google Cloud Storage through Apache OpenDAL™.335Apache 2.0
- AlicenseNot gradedqualityDmaintenanceA server that implements the Model Context Protocol, providing a standardized way to connect AI models to different data sources and tools.1511MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables real-time communication using Server-Sent Events (SSE), providing standardized model management and resource templating capabilities.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mashriram/azure_mcp_server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server