MongoDB MCP Server
Offers containerized deployment of the MongoDB MCP Server, allowing isolated execution without requiring a local Node.js installation.
Enables interaction with MongoDB databases and MongoDB Atlas, providing tools for querying, updating, and managing collections and documents, as well as creating and managing Atlas clusters, projects, database users, and access lists.
Click on "Deploy 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., "@MongoDB MCP Servershow me the last 10 orders from the ecommerce database"
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.
MongoDB MCP Server
A Model Context Protocol server for interacting with MongoDB Databases and MongoDB Atlas.
đ Table of Contents
Related MCP server: MongoDB MCP Server for LLMs
Prerequisites
Node.js (v20.10.0 or later)
node -vA MongoDB connection string or Atlas API credentials, the Server will not start unless configured.
Service Accounts Atlas API credentials are required to use the Atlas tools. You can create a service account in MongoDB Atlas and use its credentials for authentication. See Atlas API Access for more details.
If you have a MongoDB connection string, you can use it directly to connect to your MongoDB instance.
Setup
Quick Start
Note: When using Atlas API credentials, be sure to assign only the minimum required permissions to your service account. See Atlas API Permissions for details.
Most MCP clients require a configuration file to be created or modified to add the MCP server.
Note: The configuration file syntax can be different across clients. Please refer to the following links for the latest expected syntax:
Windsurf: https://docs.windsurf.com/windsurf/mcp
VSCode: https://code.visualstudio.com/docs/copilot/chat/mcp-servers
Claude Desktop: https://modelcontextprotocol.io/quickstart/user
Cursor: https://docs.cursor.com/context/model-context-protocol
Option 1: Connection String args
You can pass your connection string via args, make sure to use a valid username and password.
{
"mcpServers": {
"MongoDB": {
"command": "npx",
"args": [
"-y",
"mongodb-mcp-server",
"--connectionString",
"mongodb://localhost:27017/myDatabase"
]
}
}
}NOTE: The connection string can be configured to connect to any MongoDB cluster, whether it's a local instance or an Atlas cluster.
Option 2: Atlas API credentials args
Use your Atlas API Service Accounts credentials. Must follow all the steps in Atlas API Access section.
{
"mcpServers": {
"MongoDB": {
"command": "npx",
"args": [
"-y",
"mongodb-mcp-server",
"--apiClientId",
"your-atlas-service-accounts-client-id",
"--apiClientSecret",
"your-atlas-service-accounts-client-secret"
]
}
}
}Option 3: Standalone Service using command arguments
Start Server using npx command:
npx -y mongodb-mcp-server --apiClientId="your-atlas-service-accounts-client-id" --apiClientSecret="your-atlas-service-accounts-client-secret"For a complete list of arguments see Configuration Options
To configure your Atlas Service Accounts credentials please refer to Atlas API Access
Option 4: Standalone Service using environment variables
npx -y mongodb-mcp-serverYou can use environment variables in the config file or set them and run the server via npx.
Connection String via environment variables in the MCP file example
Atlas API credentials via environment variables in the MCP file example
Option 5: Using Docker
You can run the MongoDB MCP Server in a Docker container, which provides isolation and doesn't require a local Node.js installation.
Run with Environment Variables
You may provide either a MongoDB connection string OR Atlas API credentials:
Option A: No configuration
docker run --rm -i \
mongodb/mongodb-mcp-server:latestOption B: With MongoDB connection string
docker run --rm -i \
-e MDB_MCP_CONNECTION_STRING="mongodb+srv://username:password@cluster.mongodb.net/myDatabase" \
mongodb/mongodb-mcp-server:latestOption C: With Atlas API credentials
docker run --rm -i \
-e MDB_MCP_API_CLIENT_ID="your-atlas-service-accounts-client-id" \
-e MDB_MCP_API_CLIENT_SECRET="your-atlas-service-accounts-client-secret" \
mongodb/mongodb-mcp-server:latestDocker in MCP Configuration File
Without options:
{
"mcpServers": {
"MongoDB": {
"command": "docker",
"args": ["run", "--rm", "-i", "mongodb/mongodb-mcp-server:latest"]
}
}
}With connection string:
{
"mcpServers": {
"MongoDB": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"MDB_MCP_CONNECTION_STRING=mongodb+srv://username:password@cluster.mongodb.net/myDatabase",
"mongodb/mongodb-mcp-server:latest"
]
}
}
}With Atlas API credentials:
{
"mcpServers": {
"MongoDB": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"MDB_MCP_API_CLIENT_ID=your-atlas-service-accounts-client-id",
"-e",
"MDB_MCP_API_CLIENT_SECRET=your-atlas-service-accounts-client-secret",
"mongodb/mongodb-mcp-server:latest"
]
}
}
}đ ī¸ Supported Tools
Tool List
MongoDB Atlas Tools
atlas-list-orgs- Lists MongoDB Atlas organizationsatlas-list-projects- Lists MongoDB Atlas projectsatlas-create-project- Creates a new MongoDB Atlas projectatlas-list-clusters- Lists MongoDB Atlas clustersatlas-inspect-cluster- Inspect a specific MongoDB Atlas clusteratlas-create-free-cluster- Create a free MongoDB Atlas clusteratlas-connect-cluster- Connects to MongoDB Atlas clusteratlas-inspect-access-list- Inspect IP/CIDR ranges with access to MongoDB Atlas clustersatlas-create-access-list- Configure IP/CIDR access list for MongoDB Atlas clustersatlas-list-db-users- List MongoDB Atlas database usersatlas-create-db-user- Creates a MongoDB Atlas database useratlas-list-alerts- List MongoDB Atlas Alerts for a Project
NOTE: atlas tools are only available when you set credentials on configuration section.
MongoDB Database Tools
connect- Connect to a MongoDB instancefind- Run a find query against a MongoDB collectionaggregate- Run an aggregation against a MongoDB collectioncount- Get the number of documents in a MongoDB collectioninsert-one- Insert a single document into a MongoDB collectioninsert-many- Insert multiple documents into a MongoDB collectioncreate-index- Create an index for a MongoDB collectionupdate-one- Update a single document in a MongoDB collectionupdate-many- Update multiple documents in a MongoDB collectionrename-collection- Rename a MongoDB collectiondelete-one- Delete a single document from a MongoDB collectiondelete-many- Delete multiple documents from a MongoDB collectiondrop-collection- Remove a collection from a MongoDB databasedrop-database- Remove a MongoDB databaselist-databases- List all databases for a MongoDB connectionlist-collections- List all collections for a given databasecollection-indexes- Describe the indexes for a collectioncollection-schema- Describe the schema for a collectioncollection-storage-size- Get the size of a collection in MBdb-stats- Return statistics about a MongoDB database
Configuration
The MongoDB MCP Server can be configured using multiple methods, with the following precedence (highest to lowest):
Command-line arguments
Environment variables
Configuration Options
Option | Description |
| Atlas API client ID for authentication. Required for running Atlas tools. |
| Atlas API client secret for authentication. Required for running Atlas tools. |
| MongoDB connection string for direct database connections. Optional, if not set, you'll need to call the |
| Folder to store logs. |
| An array of tool names, operation types, and/or categories of tools that will be disabled. |
| When set to true, only allows read and metadata operation types, disabling create/update/delete operations. |
| When set to true, enforces that query operations must use an index, rejecting queries that perform a collection scan. |
| When set to disabled, disables telemetry collection. |
Log Path
Default log location is as follows:
Windows:
%LOCALAPPDATA%\mongodb\mongodb-mcp\.app-logsmacOS/Linux:
~/.mongodb/mongodb-mcp/.app-logs
Disabled Tools
You can disable specific tools or categories of tools by using the disabledTools option. This option accepts an array of strings,
where each string can be a tool name, operation type, or category.
The way the array is constructed depends on the type of configuration method you use:
For environment variable configuration, use a comma-separated string:
export MDB_MCP_DISABLED_TOOLS="create,update,delete,atlas,collectionSchema".For command-line argument configuration, use a space-separated string:
--disabledTools create update delete atlas collectionSchema.
Categories of tools:
atlas- MongoDB Atlas tools, such as list clusters, create cluster, etc.mongodb- MongoDB database tools, such as find, aggregate, etc.
Operation types:
create- Tools that create resources, such as create cluster, insert document, etc.update- Tools that update resources, such as update document, rename collection, etc.delete- Tools that delete resources, such as delete document, drop collection, etc.read- Tools that read resources, such as find, aggregate, list clusters, etc.metadata- Tools that read metadata, such as list databases, list collections, collection schema, etc.
Read-Only Mode
The readOnly configuration option allows you to restrict the MCP server to only use tools with "read" and "metadata" operation types. When enabled, all tools that have "create", "update" or "delete" operation types will not be registered with the server.
This is useful for scenarios where you want to provide access to MongoDB data for analysis without allowing any modifications to the data or infrastructure.
You can enable read-only mode using:
Environment variable:
export MDB_MCP_READ_ONLY=trueCommand-line argument:
--readOnly
When read-only mode is active, you'll see a message in the server logs indicating which tools were prevented from registering due to this restriction.
Index Check Mode
The indexCheck configuration option allows you to enforce that query operations must use an index. When enabled, queries that perform a collection scan will be rejected to ensure better performance.
This is useful for scenarios where you want to ensure that database queries are optimized.
You can enable index check mode using:
Environment variable:
export MDB_MCP_INDEX_CHECK=trueCommand-line argument:
--indexCheck
When index check mode is active, you'll see an error message if a query is rejected due to not using an index.
Telemetry
The telemetry configuration option allows you to disable telemetry collection. When enabled, the MCP server will collect usage data and send it to MongoDB.
You can disable telemetry using:
Environment variable:
export MDB_MCP_TELEMETRY=disabledCommand-line argument:
--telemetry disabledDO_NOT_TRACK environment variable:
export DO_NOT_TRACK=1
Atlas API Access
To use the Atlas API tools, you'll need to create a service account in MongoDB Atlas:
âšī¸ Note: For a detailed breakdown of the minimum required permissions for each Atlas operation, see the Atlas API Permissions section below.
Create a Service Account:
Log in to MongoDB Atlas at cloud.mongodb.com
Navigate to Access Manager > Organization Access
Click Add New > Applications > Service Accounts
Enter name, description and expiration for your service account (e.g., "MCP, MCP Server Access, 7 days")
Assign only the minimum permissions needed for your use case.
See Atlas API Permissions for details.
Click "Create"
To learn more about Service Accounts, check the MongoDB Atlas documentation.
Save Client Credentials:
After creation, you'll be shown the Client ID and Client Secret
Important: Copy and save the Client Secret immediately as it won't be displayed again
Add Access List Entry:
Add your IP address to the API access list
Configure the MCP Server:
Use one of the configuration methods below to set your
apiClientIdandapiClientSecret
Atlas API Permissions
Security Warning: Granting the Organization Owner role is rarely necessary and can be a security risk. Assign only the minimum permissions needed for your use case.
Quick Reference: Required roles per operation
What you want to do | Safest Role to Assign (where) |
List orgs/projects | Org Member or Org Read Only (Org) |
Create new projects | Org Project Creator (Org) |
View clusters/databases in a project | Project Read Only (Project) |
Create/manage clusters in a project | Project Cluster Manager (Project) |
Manage project access lists | Project IP Access List Admin (Project) |
Manage database users | Project Database Access Admin (Project) |
Prefer project-level roles for most operations. Assign only to the specific projects you need to manage or view.
Avoid Organization Owner unless you require full administrative control over all projects and settings in the organization.
For a full list of roles and their privileges, see the Atlas User Roles documentation.
Configuration Methods
Environment Variables
Set environment variables with the prefix MDB_MCP_ followed by the option name in uppercase with underscores:
# Set Atlas API credentials (via Service Accounts)
export MDB_MCP_API_CLIENT_ID="your-atlas-service-accounts-client-id"
export MDB_MCP_API_CLIENT_SECRET="your-atlas-service-accounts-client-secret"
# Set a custom MongoDB connection string
export MDB_MCP_CONNECTION_STRING="mongodb+srv://username:password@cluster.mongodb.net/myDatabase"
export MDB_MCP_LOG_PATH="/path/to/logs"
MCP configuration file examples
Connection String with environment variables
{
"mcpServers": {
"MongoDB": {
"command": "npx",
"args": ["-y", "mongodb-mcp-server"],
"env": {
"MDB_MCP_CONNECTION_STRING": "mongodb+srv://username:password@cluster.mongodb.net/myDatabase"
}
}
}
}Atlas API credentials with environment variables
{
"mcpServers": {
"MongoDB": {
"command": "npx",
"args": ["-y", "mongodb-mcp-server"],
"env": {
"MDB_MCP_API_CLIENT_ID": "your-atlas-service-accounts-client-id",
"MDB_MCP_API_CLIENT_SECRET": "your-atlas-service-accounts-client-secret"
}
}
}
}Command-Line Arguments
Pass configuration options as command-line arguments when starting the server:
npx -y mongodb-mcp-server --apiClientId="your-atlas-service-accounts-client-id" --apiClientSecret="your-atlas-service-accounts-client-secret" --connectionString="mongodb+srv://username:password@cluster.mongodb.net/myDatabase" --logPath=/path/to/logs --readOnly --indexCheckMCP configuration file examples
Connection String with command-line arguments
{
"mcpServers": {
"MongoDB": {
"command": "npx",
"args": [
"-y",
"mongodb-mcp-server",
"--connectionString",
"mongodb+srv://username:password@cluster.mongodb.net/myDatabase"
]
}
}
}Atlas API credentials with command-line arguments
{
"mcpServers": {
"MongoDB": {
"command": "npx",
"args": [
"-y",
"mongodb-mcp-server",
"--apiClientId",
"your-atlas-service-accounts-client-id",
"--apiClientSecret",
"your-atlas-service-accounts-client-secret"
]
}
}
}đ¤Contributing
Interested in contributing? Great! Please check our Contributing Guide for guidelines on code contributions, standards, adding new tools, and troubleshooting information.
Available Tools
22 toolsaggregateARead-only
Run an aggregation against a MongoDB collection
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database name | |
| collection | Yes | Collection name | |
| pipeline | Yes | An array of aggregation stages to execute. | |
| responseBytesLimit | No | The maximum number of bytes to return in the response. This value is capped by the server's configured maxBytesPerQuery and cannot be exceeded. Note to LLM: If the entire aggregation result is required, use the "export" tool instead of increasing this limit. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond the annotations: it mentions the responseBytesLimit constraint and server-side capping, plus the alternative 'export' tool for larger results. While annotations already declare readOnlyHint=true and destructiveHint=false, the description provides practical implementation details about result size limitations that aren't captured in structured fields.
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 extremely concise - a single sentence that directly states the tool's purpose without any unnecessary elaboration. Every word earns its place, and the structure is front-loaded with the core functionality. This is model efficiency in description writing.
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 read-only aggregation tool with good annotations and full schema coverage, the description is minimally complete. It covers the basic purpose and hints at result size limitations, but lacks information about return format, error conditions, or performance characteristics. Without an output schema, more guidance about what the aggregation returns would be helpful for agent understanding.
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?
With 100% schema description coverage, the input schema already documents all parameters thoroughly. The description doesn't add meaningful parameter semantics beyond what's in the schema - it mentions aggregation generally but provides no additional context about pipeline construction, database/collection selection, or response limit implications beyond what the schema descriptions already state.
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 ('Run an aggregation') and target ('against a MongoDB collection'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate this tool from sibling tools like 'find' or 'count' which also query MongoDB collections, missing an opportunity for clearer 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 some implied usage context through the responseBytesLimit parameter note about using the 'export' tool for larger results, but lacks explicit guidance on when to choose this tool over alternatives like 'find' or 'count'. No clear when/when-not instructions or sibling tool comparisons are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
collection-indexesBRead-only
Describe the indexes for a collection
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database name | |
| collection | Yes | Collection name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds no behavioral context beyond this, such as rate limits, authentication needs, or what 'Describe' entails (e.g., returns index details). It does not contradict annotations, but offers minimal value beyond them.
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 no wasted words. It is front-loaded, immediately stating the tool's purpose without unnecessary elaboration. Every part of the sentence earns its place by conveying essential information directly.
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 (2 parameters, no output schema) and rich annotations (read-only, non-destructive), the description is minimally adequate. It states what the tool does but lacks details on output format or usage context. For a simple read tool, this is acceptable but leaves gaps in guiding the agent fully.
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 'database' and 'collection' parameters. The description does not add meaning beyond the schema, such as explaining parameter relationships or constraints. With high schema coverage, the baseline score of 3 is appropriate, as the schema handles parameter documentation adequately.
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 'Describe the indexes for a collection' states the tool's purpose clearly with a verb ('Describe') and resource ('indexes for a collection'), but it does not differentiate from siblings like 'collection-schema' or 'collection-storage-size', which also describe collection metadata. It avoids tautology by specifying what is described (indexes), but lacks specificity on scope or format.
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 needing an existing database and collection, or compare it to siblings like 'list-collections' for broader metadata. Without explicit when/when-not instructions, 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.
collection-schemaBRead-only
Describe the schema for a collection
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database name | |
| collection | Yes | Collection name | |
| sampleSize | No | Number of documents to sample for schema inference | |
| responseBytesLimit | No | The maximum number of bytes to return in the response. This value is capped by the server's configured maxBytesPerQuery and cannot be exceeded. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds context about schema inference (sampling documents), which isn't covered by annotations. However, it doesn't disclose behavioral traits like rate limits, authentication needs, or what happens if the collection doesn't exist. With annotations covering safety, a 3 is appropriateâsome added value but limited behavioral detail.
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: 'Describe the schema for a collection.' It's front-loaded with the core purpose, has zero wasted words, and is appropriately sized for a tool with clear annotations and schema. Every word earns its place.
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 (schema inference with sampling), annotations cover safety, and schema coverage is 100%, the description is minimally adequate. However, with no output schema, it doesn't explain what the schema description includes (e.g., field types, nested structures) or potential limitations (e.g., inference accuracy). For a read-only tool with good schema support, it meets basic needs but lacks depth.
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 four parameters (database, collection, sampleSize, responseBytesLimit). The description doesn't add any parameter-specific semantics beyond what the schema provides (e.g., it doesn't explain how sampleSize affects accuracy or what responseBytesLimit entails). Baseline 3 is correct 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 tool's purpose: 'Describe the schema for a collection' specifies the verb ('describe') and resource ('schema for a collection'). It distinguishes from siblings like 'collection-indexes' or 'collection-storage-size' by focusing on schema inference rather than indexes or storage metrics. However, it doesn't explicitly differentiate from 'list-collections' or 'find', which might also involve schema-related 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. It doesn't mention prerequisites (e.g., needing database/collection names), exclusions, or compare to siblings like 'find' (which might return data samples) or 'list-collections' (which lists collections without schema details). Usage 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.
collection-storage-sizeBRead-only
Gets the size of the collection
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database name | |
| collection | Yes | Collection name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds no behavioral context beyond this, such as performance implications, rate limits, or what the size measurement includes (e.g., storage vs. document count). With annotations covering safety, a baseline score is appropriate, but more detail would enhance 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 extremely concise with a single, direct sentence that front-loads the core purpose. There's no wasted language or redundancy, making it efficient for quick understanding, though this conciseness comes at the cost of omitted details like usage guidelines.
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 (2 required parameters, no output schema) and rich annotations (readOnlyHint, destructiveHint), the description is minimally adequate. However, it lacks context on return values (e.g., size units, format) and doesn't leverage the absence of an output schema to explain what the tool returns, leaving gaps in completeness for agent 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?
Schema description coverage is 100%, with clear documentation for both 'database' and 'collection' parameters. The description doesn't add any semantic details beyond what the schema provides, such as examples or constraints on valid names. Since the schema handles parameter documentation adequately, the baseline score reflects no additional value from 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 tool's purpose with a specific verb ('Gets') and resource ('size of the collection'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'db-stats' or 'collection-schema', which might also provide size-related information, leaving some ambiguity about uniqueness.
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, such as needing an existing database and collection, or compare it to sibling tools like 'db-stats' for broader database statistics, leaving the agent to infer usage context independently.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connectARead-only
Connect to a MongoDB instance. The config resource captures if the server is already connected to a MongoDB cluster. If the user has configured a connection string or has previously called the connect tool, a connection is already established and there's no need to call this tool unless the user has explicitly requested to switch to a new MongoDB cluster.
| Name | Required | Description | Default |
|---|---|---|---|
| connectionString | Yes | MongoDB connection string (in the mongodb:// or mongodb+srv:// format) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true and destructiveHint=false, which the description aligns with by describing a connection-establishment action without implying data modification. The description adds context about checking existing connections and switching clusters, which is useful beyond annotations. However, it lacks details on error handling, timeout behavior, or authentication requirements that aren't covered by 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 concise and well-structured, consisting of two sentences that efficiently convey purpose and usage guidelines. Every sentence adds value: the first states the core function, and the second provides critical context about when to use or avoid the tool. There is no redundant or unnecessary 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 tool's moderate complexity (connection management), the description is reasonably complete. It covers purpose, usage conditions, and existing connection checks. However, without an output schema, it doesn't describe what happens after connection (e.g., success/failure responses), and annotations only cover safety aspects. For a connection tool, more behavioral details (like error cases) would enhance completeness.
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 the 'connectionString' parameter fully documented in the schema. The description doesn't add any parameter-specific details beyond what the schema provides, such as format examples or validation rules. With high schema coverage, a baseline score of 3 is appropriate as the description doesn't compensate but doesn't need to.
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 tool's purpose: 'Connect to a MongoDB instance.' It specifies the verb ('Connect') and resource ('MongoDB instance'), making the intent unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'atlas-connect-cluster', which might serve a similar purpose but for Atlas-specific connections.
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 explicit guidance on when to use this tool: 'If the user has configured a connection string or has previously called the connect tool, a connection is already established and there's no need to call this tool unless the user has explicitly requested to switch to a new MongoDB cluster.' It clearly states conditions for usage and non-usage, helping the agent avoid redundant calls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
countARead-only
Gets the number of documents in a MongoDB collection using db.collection.count() and query as an optional filter parameter
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database name | |
| collection | Yes | Collection name | |
| query | No | A filter/query parameter. Allows users to filter the documents to count. Matches the syntax of the filter argument of db.collection.count(). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true and destructiveHint=false, indicating a safe read operation. The description adds value by specifying the MongoDB method used ('db.collection.count()') and that the query is optional, which gives context beyond annotations. However, it doesn't disclose additional behavioral traits like performance implications, rate limits, or error handling. No contradiction with annotations exists.
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 front-loads the core purpose and includes key details (MongoDB method and optional query). There is no wasted text, and it's appropriately sized for the tool's complexity. Every part of the sentence contributes to understanding the tool's 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 tool's moderate complexity (3 parameters, nested object in query), annotations cover safety, and schema coverage is high, the description is adequate but has gaps. It lacks details on output (e.g., what the count returns, error cases) and doesn't fully address behavioral context like performance. For a read-only tool with good schema support, it meets minimum viability but could be more complete.
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 'database', 'collection', and 'query'. The description adds minimal semantics by noting the query is 'optional' and matches 'db.collection.count()' syntax, but this is largely redundant with the schema's details. Since schema coverage is high, the baseline score of 3 is appropriate, as the description doesn't significantly enhance parameter understanding.
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 tool's purpose: 'Gets the number of documents in a MongoDB collection' with a specific verb ('Gets') and resource ('documents in a MongoDB collection'). It distinguishes from siblings like 'find' or 'aggregate' by focusing on counting rather than retrieving or processing documents. However, it doesn't explicitly differentiate from all siblings (e.g., 'db-stats' might also provide counts in a broader 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?
The description implies usage by mentioning 'query as an optional filter parameter' for filtering documents, suggesting when to use it for filtered counts. However, it doesn't provide explicit guidance on when to choose this tool over alternatives like 'aggregate' for counting or other siblings, nor does it specify prerequisites or exclusions. The context is clear but lacks detailed alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-collectionA
Creates a new collection in a database. If the database doesn't exist, it will be created automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database name | |
| collection | Yes | Collection name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, covering the safety profile. The description adds value by disclosing the automatic database creation behavior, which is a key trait not covered by annotations. It doesn't detail other behaviors like error handling or permissions, but with annotations present, this is adequate.
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 two sentences, front-loaded with the main action and followed by a critical behavioral detail. Every word contributes essential information without redundancy, making it highly efficient 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 moderate complexity (creation with side effects), no output schema, and rich annotations, the description is mostly complete. It covers the core action and a key behavioral trait, but could benefit from mentioning potential outcomes or errors, though annotations help mitigate this gap.
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 ('database' and 'collection') well-documented in the schema. The description doesn't add any additional meaning or examples beyond what the schema provides, such as format constraints or naming rules, so it meets the baseline for high 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 ('Creates a new collection') and resource ('in a database'), distinguishing it from siblings like 'list-collections' or 'drop-collection'. It specifies the scope of creation, making the purpose explicit and distinct.
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 clear context for usage by mentioning automatic database creation if it doesn't exist, which is useful guidance. However, it doesn't explicitly state when to use this tool versus alternatives like 'insert-many' or 'rename-collection', or any prerequisites beyond the parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-indexB
Create an index for a collection
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database name | |
| collection | Yes | Collection name | |
| name | No | The name of the index | |
| definition | Yes | The index definition. Use 'classic' for standard indexes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a non-readOnly, non-destructive operation (readOnlyHint=false, destructiveHint=false), which the description doesn't contradict. The description adds minimal behavioral context beyond annotationsâit doesn't specify performance impact, permissions needed, or what happens if the index already exists. With annotations covering safety, this meets baseline expectations.
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 and wastes no space, 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 tool with 4 parameters, 100% schema coverage, and annotations covering safety, the description is minimally adequate. However, it lacks output information (no output schema) and doesn't address key behavioral aspects like error conditions or indexing best practices, leaving gaps in completeness.
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 schema. The description doesn't add any meaning beyond what the schema provides (e.g., it doesn't explain index types or usage scenarios). This meets the baseline score for high schema 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 ('create') and resource ('index for a collection'), making the purpose immediately understandable. It distinguishes from siblings like 'drop-index' (deletion) and 'collection-indexes' (listing), but doesn't explicitly differentiate from other creation tools like 'create-collection' beyond the resource type.
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. The description doesn't mention prerequisites (e.g., existing database/collection), when indexing is beneficial, or when to choose this over other indexing-related tools like 'drop-index' or 'collection-indexes'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
db-statsBRead-only
Returns statistics that reflect the use state of a single database
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds value by specifying that it returns 'statistics' and focuses on 'use state', which provides context beyond the annotations. However, it lacks details on rate limits, authentication needs, or error handling, leaving some behavioral aspects unclear.
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 function without unnecessary words. It is front-loaded with the core action ('Returns statistics'), making it easy to understand at a glance. Every part of the sentence contributes to clarifying the 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?
Given the tool's low complexity (1 parameter, no output schema) and good annotations, the description is somewhat complete but has gaps. It lacks details on what specific statistics are returned (e.g., size, query counts) or how to interpret them, which could be important for users. With no output schema, more elaboration on return values would be beneficial.
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 the 'database' parameter clearly documented. The description does not add any additional meaning beyond the schema, such as explaining what constitutes a valid database name or examples. Since the schema does the heavy lifting, a baseline score of 3 is appropriate.
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 tool's purpose with a specific verb ('Returns') and resource ('statistics'), and specifies the scope ('use state of a single database'). However, it does not explicitly differentiate this tool from potential siblings like 'list-databases' or 'collection-storage-size', which might also provide database-related information, so it falls short of 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 does not mention prerequisites, such as needing an existing database, or compare it to sibling tools like 'list-databases' for broader information. Without such context, users might struggle to select the appropriate tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete-manyADestructive
Removes all documents that match the filter from a MongoDB collection
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database name | |
| collection | Yes | Collection name | |
| filter | No | The query filter, specifying the deletion criteria. Matches the syntax of the filter argument of db.collection.deleteMany() |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this is a destructive write operation. The description adds valuable context by specifying it removes 'all documents that match the filter' (not just one) and references MongoDB's deleteMany() syntax, which helps anticipate behavior. However, it doesn't mention permissions needed, atomicity, or what happens on empty filters.
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 front-loads the core action ('Removes all documents') and includes essential technical context (MongoDB collection, filter matching deleteMany syntax). Every word earns its place with no 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 destructive tool with good annotations (destructiveHint=true) and full schema coverage, the description is reasonably completeâit clarifies scope and references MongoDB syntax. However, without an output schema, it doesn't describe return values (e.g., deletion count), and it lacks guidance on error conditions or permissions, leaving some gaps for a high-stakes operation.
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 database, collection, and filter parameters. The description adds marginal value by mentioning the filter 'matches the syntax of db.collection.deleteMany()', but doesn't provide additional syntax examples or constraints beyond what the schema already documents.
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 ('Removes all documents'), the resource ('from a MongoDB collection'), and the scope ('that match the filter'), distinguishing it from siblings like drop-collection (which removes the entire collection) or update-many (which modifies rather than deletes).
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 implies usage for deleting multiple documents based on a filter, but doesn't explicitly state when to use this vs. alternatives like drop-collection (for entire collections) or update-many (for modifications). No guidance on prerequisites or exclusions is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drop-collectionADestructive
Removes a collection or view from the database. The method also removes any indexes associated with the dropped collection.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database name | |
| collection | Yes | Collection name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, indicating a destructive write operation. The description adds valuable behavioral context by specifying that associated indexes are also removed, which goes beyond the annotations. However, it doesn't mention permissions needed, irreversibility, or confirmation requirements.
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 two concise sentences with zero wasted words. The first sentence states the core action and resource, while the second adds important behavioral detail about index removal. Every sentence earns its place.
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 good annotations (destructiveHint=true) but no output schema, the description provides adequate context about what gets removed. However, it could better address the irreversible nature or potential data loss implications to help the agent understand the severity of this operation.
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 ('database' and 'collection') clearly documented in the schema. The description doesn't add any parameter-specific information beyond what the schema provides, so it meets the baseline for high schema 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 ('Removes') and resource ('a collection or view from the database'), distinguishing it from siblings like 'drop-database' (removes entire database) or 'rename-collection' (renames rather than removes). It also specifies that associated indexes are removed, adding important scope details.
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 implies usage context by specifying what gets removed (collection/view and associated indexes), but doesn't explicitly state when to use this vs. alternatives like 'drop-database' or 'delete-many'. It provides clear scope but lacks explicit comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drop-databaseADestructive
Removes the specified database, deleting the associated data files
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, but the description adds valuable context by specifying that data files are deleted, which clarifies the irreversible nature beyond just 'destructive'. It doesn't mention permissions, rate limits, or confirmation steps, but the added detail about data files enhances 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 front-loads the core action ('Removes the specified database') and adds necessary detail ('deleting the associated data files') without any wasted words. Every part earns its place by clarifying scope and impact.
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 output schema, the description adequately covers the action and data deletion, but lacks details on return values, error conditions, or dependencies. Given the high-risk nature, more context on irreversible effects or success indicators would improve completeness, but it's minimally viable.
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 'database' fully documented in the schema as 'Database name'. The description does not add any additional meaning or examples beyond what the schema provides, so it meets the baseline for high schema coverage without extra value.
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 ('Removes') and the resource ('the specified database'), and distinguishes it from sibling tools like 'drop-collection' by specifying database-level deletion rather than collection-level. It's specific about what gets affected ('deleting the associated data files').
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 'drop-collection' or 'delete-many', nor does it mention prerequisites such as ensuring the database exists or is not in use. It lacks explicit when/when-not instructions or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drop-indexBDestructive
Drop an index for the provided database and collection.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database name | |
| collection | Yes | Collection name | |
| indexName | Yes | The name of the index to be dropped. | |
| type | No | The type of index to be deleted. Is always set to 'classic'. | classic |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true and readOnlyHint=false, which the description aligns with by using 'Drop' (implying mutation and destruction). The description adds minimal context beyond annotations, specifying the database and collection scope but not detailing effects like performance impacts or irreversibility.
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 front-loads the core action ('Drop an index') and essential parameters. There is no wasted verbiage, 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 output schema, the description is minimal but covers the basic operation. It lacks details on behavioral outcomes (e.g., what happens post-drop, error conditions) and doesn't compensate for the absence of output schema, though annotations provide some safety 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?
Schema description coverage is 100%, so parameters are fully documented in the schema. The description mentions 'database and collection' and 'indexName' but adds no extra meaning beyond schema details like constraints (e.g., minLength for indexName) or the fixed 'type' parameter.
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 ('Drop') and target ('an index'), specifying the required database and collection context. It distinguishes from siblings like 'create-index' and 'collection-indexes' by focusing on deletion rather than creation or listing, though it doesn't explicitly contrast with them.
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. While the purpose implies it's for removing indexes, there's no mention of prerequisites (e.g., ensuring the index exists), consequences, or when to choose other tools like 'collection-indexes' for inspection first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explainBRead-only
Returns statistics describing the execution of the winning plan chosen by the query optimizer for the evaluated method
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database name | |
| collection | Yes | Collection name | |
| method | Yes | The method and its arguments to run | |
| verbosity | No | The verbosity of the explain plan, defaults to queryPlanner. If the user wants to know how fast is a query in execution time, use executionStats. It supports all verbosities as defined in the MongoDB Driver. | queryPlanner |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds that it 'returns statistics,' which aligns with annotations. However, it doesn't disclose additional behavioral traits like performance impact (e.g., whether running explain affects database load), output format details (since no output schema exists), or any rate limits. With annotations covering safety, the description adds minimal context beyond them.
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, well-structured sentence that efficiently conveys the core functionality: 'Returns statistics describing the execution of the winning plan chosen by the query optimizer for the evaluated method.' It's front-loaded with the main action ('returns statistics') and avoids unnecessary words, making it highly concise and easy to parse.
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 (analyzing query execution with multiple method types) and rich schema (100% coverage, detailed parameter docs), the description is adequate but minimal. It lacks output details (no output schema provided), doesn't explain the relationship to sibling tools like 'export' for full results, and omits practical use cases. For a tool with no output schema and moderate complexity, it should provide more context on what 'statistics' entail and when to use it.
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 4 parameters (database, collection, method, verbosity) with detailed descriptions. The description doesn't add any parameter-specific information beyond what's in the schema, such as clarifying how 'method' relates to query execution or examples of use. 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 tool's purpose: 'Returns statistics describing the execution of the winning plan chosen by the query optimizer for the evaluated method.' It specifies the verb ('returns statistics'), resource ('execution of the winning plan'), and scope ('for the evaluated method'), making it clear this is an analysis tool. However, it doesn't explicitly differentiate from sibling tools like 'atlas-get-performance-advisor' or 'mongodb-logs' which might also provide performance insights.
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 query to analyze), compare it to sibling tools like 'export' (referenced in the schema) for full results, or specify scenarios where explain plans are useful (e.g., query optimization, debugging). Usage 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.
exportARead-only
Export a query or aggregation results in the specified EJSON format.
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database name | |
| collection | Yes | Collection name | |
| exportTitle | Yes | A short description to uniquely identify the export. | |
| exportTarget | Yes | The export target along with its arguments. | |
| jsonExportFormat | No | The format to be used when exporting collection data as EJSON with default being relaxed. relaxed: A string format that emphasizes readability and interoperability at the expense of type preservation. That is, conversion from relaxed format to BSON can lose type information. canonical: A string format that emphasizes type preservation at the expense of readability and interoperability. That is, conversion from canonical to BSON will generally preserve type information except in certain specific cases. | relaxed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds that it exports results in EJSON format, which provides useful context about output behavior. However, it doesn't mention potential limitations like export size constraints, performance implications, or authentication requirements beyond what annotations cover.
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 clearly states the tool's purpose without unnecessary words. It's front-loaded with the core functionality and includes essential details about format. Every element serves a purpose with zero waste.
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 read-only export tool with comprehensive schema documentation (100% coverage) and clear annotations, the description provides adequate context. It specifies the output format (EJSON) which is crucial for understanding the tool's behavior. However, without an output schema, some additional detail about the export result structure or potential limitations would be helpful for full completeness.
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 thoroughly documents all 5 parameters. The description mentions 'query or aggregation results' which aligns with the exportTarget parameter's structure, but adds no additional semantic context beyond what's in the schema. With complete schema documentation, the baseline score of 3 is appropriate.
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 ('Export') and the target ('a query or aggregation results') with the output format specified ('EJSON format'). It distinguishes from sibling tools like 'find' and 'aggregate' by focusing on export functionality rather than direct query execution. However, it doesn't explicitly contrast with all potential export-related alternatives that might exist.
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 implies usage for exporting query/aggregation results in EJSON format, but doesn't explicitly state when to use this tool versus alternatives like direct 'find' or 'aggregate' tools. The schema's 'responseBytesLimit' notes suggest using 'export' for entire results, but this guidance isn't in the description itself. No explicit when-not-to-use or prerequisite information is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
findBRead-only
Run a find query against a MongoDB collection
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database name | |
| collection | Yes | Collection name | |
| filter | No | The query filter, matching the syntax of the query argument of db.collection.find() | |
| projection | No | The projection, matching the syntax of the projection argument of db.collection.find() | |
| limit | No | The maximum number of documents to return | |
| sort | No | A document, describing the sort order, matching the syntax of the sort argument of cursor.sort(). The keys of the object are the fields to sort on, while the values are the sort directions (1 for ascending, -1 for descending). | |
| responseBytesLimit | No | The maximum number of bytes to return in the response. This value is capped by the server's configured maxBytesPerQuery and cannot be exceeded. Note to LLM: If the entire query result is required, use the "export" tool instead of increasing this limit. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds minimal behavioral context beyond this - it mentions it's a 'find query' which implies document retrieval, but doesn't disclose rate limits, authentication requirements, or what happens when responseBytesLimit is exceeded. With annotations covering safety, a 3 is appropriate.
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 appropriately sized for a tool with comprehensive schema documentation and gets straight to the point 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 the tool's complexity (7 parameters, nested objects) and lack of output schema, the description is minimally adequate. The annotations cover safety, and the schema documents parameters thoroughly, but the description doesn't help the agent understand result formats, error conditions, or practical usage patterns. For a query tool with no output schema, more context would be helpful.
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 each parameter well-documented in the schema itself. The description doesn't add any meaningful parameter semantics beyond what's already in the schema - it mentions 'find query' which aligns with the schema's documentation but provides no additional syntax examples, format details, or usage patterns. Baseline 3 is correct when schema does all the work.
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 ('Run a find query') and target ('against a MongoDB collection'), providing a specific verb+resource combination. However, it doesn't explicitly distinguish this from sibling tools like 'count' or 'export' that also query MongoDB collections, 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 sibling tools like 'count' for counting documents, 'export' for larger result sets, or 'aggregate' for complex queries. There's no context about appropriate use cases or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert-manyB
Insert an array of documents into a MongoDB collection
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database name | |
| collection | Yes | Collection name | |
| documents | Yes | The array of documents to insert, matching the syntax of the document argument of db.collection.insertMany(). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a write operation (readOnlyHint: false) but non-destructive (destructiveHint: false). The description adds value by specifying it's for MongoDB and references 'db.collection.insertMany()' syntax, hinting at MongoDB-specific behavior. However, it lacks details on atomicity, error handling, or performance implications of bulk insertion.
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. It's front-loaded with the core action and includes a helpful MongoDB reference 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?
For a write tool with no output schema and 100% schema coverage, the description is minimally complete. It covers the basic operation but lacks context on return values, error cases, or MongoDB-specific nuances. Annotations help by indicating mutation without destruction, but more behavioral detail would improve completeness.
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 parameters. The description adds minimal value by referencing MongoDB syntax for 'documents', but doesn't explain parameter interactions or provide examples. Baseline 3 is appropriate as the schema carries the burden.
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 ('Insert') and target ('an array of documents into a MongoDB collection'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'insert' (if present) or 'update-many', though the 'many' in the name implies bulk insertion.
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., database/collection existence), compare to other insertion methods, or specify use cases like bulk data loading versus single-document insertion with other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-collectionsBRead-only
List all collections for a given database
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds context by specifying it lists 'all collections' for a database, which clarifies scope. However, it doesn't describe behavioral traits like pagination, rate limits, or what happens if the database doesn't exist. With annotations covering safety, a 3 is appropriate as the description adds some value but not rich behavioral 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, efficient sentence that front-loads the core action ('List all collections') and specifies the context ('for a given database'). There is zero waste or redundancy, making it highly concise and well-structured for quick understanding.
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 (one parameter, read-only per annotations) and no output schema, the description is minimally adequate. It states what the tool does but lacks details on return values (e.g., format of the list) or error conditions. With annotations covering safety, it's complete enough for basic use but could be more informative for an agent.
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' documented as 'Database name'. The description adds no additional meaning beyond this, such as format examples or constraints. Since the schema fully describes the parameter, the baseline is 3 even without extra 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 verb 'list' and the resource 'collections', specifying it's for a given database. It distinguishes from sibling tools like 'list-databases' which lists databases rather than collections. However, it doesn't explicitly differentiate from tools like 'collection-indexes' or 'collection-schema' that also operate on collections, so it's not a perfect 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 database), exclusions, or compare to siblings like 'list-databases' (which might be a precursor) or 'collection-storage-size' (which provides different collection data). Usage 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.
list-databasesBRead-only
List all databases for a MongoDB connection
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds minimal context beyond this, as it doesn't detail output format, pagination, or connection requirements. With annotations covering safety, a baseline 3 is appropriate for the limited added value.
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 with no unnecessary words. It's front-loaded and perfectly 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?
For a simple read-only tool with no parameters and good annotations, the description is adequate but lacks output details (no output schema provided) and doesn't address connection context or sibling differentiation. It meets minimum viability but has clear gaps in completeness.
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?
There are zero parameters, and schema description coverage is 100%, so the schema fully documents the input (none). The description doesn't need to add parameter details, earning a high baseline score for a parameterless tool.
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 databases for a MongoDB connection'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'list-collections' or 'db-stats', 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 prerequisites (e.g., requiring a connection first), compare to similar tools like 'list-collections', or specify use cases (e.g., for inventory vs. detailed stats).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mongodb-logsBRead-only
Returns the most recent logged mongod events
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | The type of logs to return. Global returns all recent log entries, while startupWarnings returns only warnings and errors from when the process started. | global |
| limit | No | The maximum number of log entries to return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds that it returns 'most recent' events, which hints at recency but doesn't specify time windows or ordering. It lacks details on rate limits, authentication needs, or output format (e.g., structured vs. raw logs). With annotations covering safety, the description adds minimal but not rich behavioral 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, efficient sentence: 'Returns the most recent logged mongod events.' It's front-loaded with the core purpose, has zero wasted words, and is appropriately sized for a simple tool. Every part of the sentence earns its place by specifying action, resource, and a key constraint.
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 (2 parameters, no output schema, simple annotations), the description is somewhat complete but has gaps. It covers the basic purpose but lacks usage guidelines and detailed behavioral context. With annotations handling safety, the description is adequate but not fully helpful for an agent to understand when and how to use it effectively in context with 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 documentation for both parameters (type and limit), including enums and defaults. The description doesn't add any parameter-specific information beyond what the schema provides. According to the rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description, which applies here.
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 tool's purpose: 'Returns the most recent logged mongod events.' It specifies the verb ('returns') and resource ('logged mongod events'), and the qualifier 'most recent' adds useful context. However, it doesn't explicitly differentiate from sibling tools like 'atlas-list-alerts' or 'atlas-get-performance-advisor', which might also return log-like data, so it falls short of 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, prerequisites, or specific contexts (e.g., debugging vs. monitoring). The agent must infer usage from the tool name and description alone, which is insufficient for clear decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename-collectionB
Renames a collection in a MongoDB database
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database name | |
| collection | Yes | Collection name | |
| newName | Yes | The new name for the collection | |
| dropTarget | No | If true, drops the target collection if it exists |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a non-read-only, non-destructive operation (readOnlyHint: false, destructiveHint: false), which the description doesn't contradict. However, the description adds minimal behavioral context beyond thisâit doesn't explain potential side effects (e.g., impact on indexes or queries), authentication needs, or error conditions. With annotations covering basic safety, the description meets a low bar but lacks depth.
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 front-loads the core purpose without unnecessary words. It earns its place by clearly stating what the tool does, making it easy for an agent to parse quickly. There's no wasted verbiage or structural issues.
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 moderate complexity (renaming with a drop option), 100% schema coverage, and annotations providing basic safety hints, the description is minimally adequate. However, without an output schema, it doesn't explain return values or errors, and it lacks context on behavioral nuances (e.g., what 'dropTarget' entails in practice). It meets the minimum but leaves gaps for an agent to navigate.
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 parameter documentation in the schema itself (e.g., 'database', 'collection', 'newName', 'dropTarget'). The description adds no additional meaning about parameters beyond implying the tool operates on collections in MongoDB. Since the schema does the heavy lifting, the baseline score of 3 is appropriate.
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 ('renames') and resource ('a collection in a MongoDB database'), making the purpose immediately understandable. It distinguishes itself from siblings like 'create-collection' or 'drop-collection' by focusing on renaming, but doesn't explicitly contrast with all potential alternatives like modifying collection properties.
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 collection), exclusions (e.g., when not to rename), or compare with similar tools like 'update-many' for metadata changes. 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.
update-manyB
Updates all documents that match the specified filter for a collection
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | Database name | |
| collection | Yes | Collection name | |
| filter | No | The selection criteria for the update, matching the syntax of the filter argument of db.collection.updateOne() | |
| update | Yes | An update document describing the modifications to apply using update operator expressions | |
| upsert | No | Controls whether to insert a new document if no documents match the filter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, confirming this is a write operation that isn't destructive. The description adds context by specifying it updates 'all documents that match the specified filter', implying bulk modification, but doesn't disclose further behavioral traits like atomicity, performance impact, or error handling. No contradiction with annotations exists.
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 functionality without unnecessary words. It is front-loaded with the key action and scope, making it easy to parse and understand quickly, with zero wasted 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 tool's complexity (5 parameters, nested objects, no output schema) and annotations covering safety, the description is adequate but minimal. It lacks details on return values, error cases, or interaction with siblings, leaving gaps for an agent to fully understand the tool's behavior in context, though annotations help mitigate some risks.
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 well-documented in the schema (e.g., filter syntax, update operators, upsert behavior). The description adds minimal value beyond the schema, only implying bulk updates via 'all documents', which is redundant with the tool name. Baseline 3 is appropriate as the schema carries the semantic burden.
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 'Updates' and the resource 'all documents that match the specified filter for a collection', which is specific and actionable. It distinguishes from siblings like 'update-one' (implied by 'many') but doesn't explicitly differentiate from other write operations like 'insert-many' or 'delete-many' beyond the verb, 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 such as 'update-one' (if available) or other write operations like 'insert-many' or 'delete-many'. It lacks context on prerequisites, error conditions, or typical use cases, offering only a basic functional statement without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v1.0.0- Changed
aggregate2 fields changed- changed
Input schema / properties / pipeline / descriptionPrevious value: -"An array of aggregation stages to execute"New value: +"An array of aggregation stages to execute." - added
Input schema / properties / responseBytesLimitAdded value: +{ + "default": 1048576, + "description": "The maximum number of bytes to return in the response. This value is capped by the server's configured maxBytesPerQuery and cannot be exceeded. Note to LLM: If the entire aggregation result is required, use the \"export\" tool instead of increasing this limit.", + "type": "number" +}
- Changed
collection-schema2 fields changed- added
Input schema / properties / responseBytesLimitAdded value: +{ + "default": 1048576, + "description": "The maximum number of bytes to return in the response. This value is capped by the server's configured maxBytesPerQuery and cannot be exceeded.", + "type": "number" +} - added
Input schema / properties / sampleSizeAdded value: +{ + "default": 50, + "description": "Number of documents to sample for schema inference", + "type": "number" +}
- Changed
connect1 field changed- removed
Input schema / descriptionRemoved value: -"Options for connecting to MongoDB."
- Changed
create-index3 fields changed- added
Input schema / properties / definitionAdded value: +{ + "description": "The index definition. Use 'classic' for standard indexes.", + "items": { + "anyOf": [ + { + "additionalProperties": false, + "description": "Definition for a MongoDB index (e.g. ascending/descending/geospatial).", + "properties": { + "keys": { + "additionalProperties": {}, + "description": "The index definition", + "properties": {}, + "type": "object" + }, + "type": { + "const": "classic", + "type": "string" + } + }, + "required": [ + "type", + "keys" + ], + "type": "object" + } + ] + }, + "type": "array" +} - removed
Input schema / properties / keysRemoved value: -{ - "additionalProperties": {}, - "description": "The index definition", - "properties": {}, - "type": "object" -} - changed
Input schema / requiredPrevious value: -[ - "database", - "collection", - "keys" -]New value: +[ + "database", + "collection", + "definition" +]
- Added
drop-index - Changed
explain2 fields changed- changed
Input schema / properties / method / items / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "arguments": { - "additionalProperties": false, - "properties": { - "pipeline": { - "description": "An array of aggregation stages to execute", - "items": { - "additionalProperties": true, - "properties": {}, - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "pipeline" - ], - "type": "object" - }, - "name": { - "const": "aggregate", - "type": "string" - } - }, - "required": [ - "name", - "arguments" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "arguments": { - "additionalProperties": false, - "properties": { - "filter": { - "additionalProperties": true, - "description": "The query filter, matching the syntax of the query argument of db.collection.find()", - "properties": {}, - "type": "object" - }, - "limit": { - "default": 10, - "description": "The maximum number of documents to return", - "type": "number" - }, - "projection": { - "additionalProperties": true, - "description": "The projection, matching the syntax of the projection argument of db.collection.find()", - "properties": {}, - "type": "object" - }, - "sort": { - "additionalProperties": {}, - "description": "A document, describing the sort order, matching the syntax of the sort argument of cursor.sort(). The keys of the object are the fields to sort on, while the values are the sort directions (1 for ascending, -1 for descending).", - "properties": {}, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "const": "find", - "type": "string" - } - }, - "required": [ - "name", - "arguments" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "arguments": { - "additionalProperties": false, - "properties": { - "query": { - "additionalProperties": true, - "description": "A filter/query parameter. Allows users to filter the documents to count. Matches the syntax of the filter argument of db.collection.count().", - "properties": {}, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "const": "count", - "type": "string" - } - }, - "required": [ - "name", - "arguments" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "arguments": { + "additionalProperties": false, + "properties": { + "pipeline": { + "description": "An array of aggregation stages to execute.", + "items": { + "additionalProperties": true, + "properties": {}, + "type": "object" + }, + "type": "array" + }, + "responseBytesLimit": { + "default": 1048576, + "description": "The maximum number of bytes to return in the response. This value is capped by the server's configured maxBytesPerQuery and cannot be exceeded. Note to LLM: If the entire aggregation result is required, use the \"export\" tool instead of increasing this limit.", + "type": "number" + } + }, + "required": [ + "pipeline" + ], + "type": "object" + }, + "name": { + "const": "aggregate", + "type": "string" + } + }, + "required": [ + "name", + "arguments" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "arguments": { + "additionalProperties": false, + "properties": { + "filter": { + "additionalProperties": true, + "description": "The query filter, matching the syntax of the query argument of db.collection.find()", + "properties": {}, + "type": "object" + }, + "limit": { + "default": 10, + "description": "The maximum number of documents to return", + "type": "number" + }, + "projection": { + "additionalProperties": true, + "description": "The projection, matching the syntax of the projection argument of db.collection.find()", + "properties": {}, + "type": "object" + }, + "responseBytesLimit": { + "default": 1048576, + "description": "The maximum number of bytes to return in the response. This value is capped by the server's configured maxBytesPerQuery and cannot be exceeded. Note to LLM: If the entire query result is required, use the \"export\" tool instead of increasing this limit.", + "type": "number" + }, + "sort": { + "additionalProperties": {}, + "description": "A document, describing the sort order, matching the syntax of the sort argument of cursor.sort(). The keys of the object are the fields to sort on, while the values are the sort directions (1 for ascending, -1 for descending).", + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "const": "find", + "type": "string" + } + }, + "required": [ + "name", + "arguments" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "arguments": { + "additionalProperties": false, + "properties": { + "query": { + "additionalProperties": true, + "description": "A filter/query parameter. Allows users to filter the documents to count. Matches the syntax of the filter argument of db.collection.count().", + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "const": "count", + "type": "string" + } + }, + "required": [ + "name", + "arguments" + ], + "type": "object" + } +] - added
Input schema / properties / verbosityAdded value: +{ + "default": "queryPlanner", + "description": "The verbosity of the explain plan, defaults to queryPlanner. If the user wants to know how fast is a query in execution time, use executionStats. It supports all verbosities as defined in the MongoDB Driver.", + "enum": [ + "queryPlanner", + "queryPlannerExtended", + "executionStats", + "allPlansExecution" + ], + "type": "string" +}
- Added
export - Changed
find1 field changed- added
Input schema / properties / responseBytesLimitAdded value: +{ + "default": 1048576, + "description": "The maximum number of bytes to return in the response. This value is capped by the server's configured maxBytesPerQuery and cannot be exceeded. Note to LLM: If the entire query result is required, use the \"export\" tool instead of increasing this limit.", + "type": "number" +}
- Changed
insert-many1 field changed- changed
Input schema / properties / documents / descriptionPrevious value: -"The array of documents to insert, matching the syntax of the document argument of db.collection.insertMany()"New value: +"The array of documents to insert, matching the syntax of the document argument of db.collection.insertMany()."
- Changed
list-databases1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
20 tool updates
- First observed
aggregate - First observed
collection-indexes - First observed
collection-schema - First observed
collection-storage-size - First observed
connect - First observed
count - First observed
create-collection - First observed
create-index - First observed
db-stats - First observed
delete-many - First observed
drop-collection - First observed
drop-database - First observed
explain - First observed
find - First observed
insert-many - First observed
list-collections - First observed
list-databases - First observed
mongodb-logs - First observed
rename-collection - First observed
update-many
TDQS
Scored across 22 tools
Each tool has a distinct purpose with clear boundaries, targeting specific MongoDB operations like querying (find, aggregate), management (create-collection, drop-collection), or diagnostics (explain, db-stats). No tools appear to overlap in functionality, making it easy for an agent to select the correct one based on the task.
Most tools follow a consistent verb-noun or noun-verb pattern using kebab-case (e.g., create-collection, list-databases), with a few minor deviations like 'connect' (verb-only) and 'mongodb-logs' (noun-noun). Overall, the naming is predictable and readable, though not perfectly uniform.
With 22 tools, the count is slightly high but reasonable for a comprehensive MongoDB server covering operations from CRUD to administration and diagnostics. It avoids being excessive (under 25) and provides broad coverage without feeling overly bloated for the domain.
The tool set offers complete coverage of MongoDB operations, including CRUD (find, insert-many, update-many, delete-many), schema management (collection-schema, create-index), database/collection lifecycle (create/drop/rename), and diagnostics (explain, logs). No obvious gaps exist for core workflows in this domain.
Maintenance
Related MCP Connectors
A Model Context Protocol server for Wix AI tools
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yoâĻ
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
- mcpOAuthcom.gibsonai
GibsonAI MCP server: manage your databases with natural language
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceA Model Context Protocol (MCP) server that enables LLMs to interact directly with MongoDB databases. Query collections, inspect schemas, and manage data seamlessly through natural language.19 npm175MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables LLMs to interact directly with MongoDB databases, allowing users to query collections, inspect schemas, and manage data through natural language.19 npm2MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables LLMs to interact directly with MongoDB databases, allowing users to query collections, inspect schemas, and manage data through natural language.19 npmMIT

MongoDB MCP Serverofficial
AlicenseBqualityAmaintenanceA Model Context Protocol server that enables AI assistants to interact with MongoDB Atlas resources through natural language, supporting database operations and Atlas management functions.2882,973 npm1,132Apache 2.0