MCP Server for Azure DevOps
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., "@MCP Server for Azure DevOpslist recent pull requests in the e-commerce project"
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.
MCP Server for Azure DevOps
A comprehensive Model Context Protocol (MCP) server that provides AI assistants with full access to Azure DevOps services.
π Quick Install
# Clone the repository
git clone https://github.com/sepal7/mcp-ado.git
cd mcp-ado
# Install dependencies
npm install
# Create .env file
cp .env.example .env
# Edit .env with your Azure DevOps credentials
# Test the connection
npm run test-connectionThen configure your IDE (see Installation section below).
Related MCP server: Azure DevOps MCP Server
π¦ Available Tools (25+)
Wiki (3 tools)
get_wiki_page- Retrieve wiki page by ID or pathlist_wiki_pages- List all wiki pages in a projectsearch_wiki_pages- Search wiki pages by content or title
Repositories (5 tools)
list_repos- List all repositoriesget_repo- Get repository detailsget_repo_file- Get file content from repositorylist_repo_branches- List branches in a repositorysearch_code- Search code across repositories
Work Items (5 tools)
get_work_item- Get work item by IDget_work_items- Get multiple work itemsquery_work_items- Query work items using WIQLcreate_work_item- Create new work itemupdate_work_item- Update existing work item
Pull Requests (3 tools)
list_pull_requests- List pull requestsget_pull_request- Get pull request detailsget_pr_comments- Get PR review comments
Builds & Pipelines (4 tools)
list_builds- List recent buildsget_build- Get build detailslist_pipelines- List pipelinesget_pipeline_run- Get pipeline run details
Releases (2 tools)
list_releases- List releasesget_release- Get release details
Test Plans (2 tools)
list_test_plans- List test plansget_test_plan- Get test plan details
Generic (1 tool)
ado_api_call- Make any Azure DevOps REST API call
π Comparison with Similar Projects
Feature | This Project | Other MCP ADO Servers |
Total Tools | 25+ | 5-15 |
Wiki Support | β Yes (3 tools) | β Limited/None |
Multi-Project | β Built-in | β Single project |
WIQL Queries | β Yes | β No |
Generic API Tool | β Yes | β No |
Helper Scripts | β PAT management | β No |
Documentation | β Comprehensive | β οΈ Basic |
Key Differentiators:
Most comprehensive tool coverage (25+ vs 5-15)
Multi-project support without reconfiguration
Advanced features (WIQL queries, generic API tool)
Better developer experience (helper scripts, comprehensive docs)
β¨ Features
25+ MCP Tools covering all major Azure DevOps services
Multi-Project Support - Access any project in your organization without reconfiguration
WIQL Query Support - Advanced work item querying using Work Item Query Language
Generic API Tool - Make any Azure DevOps REST API call for future-proof extensibility
Helper Scripts - Automated PAT token management and connection testing
Comprehensive Documentation - Step-by-step guides for Cursor, VS Code, and deployment
π Quick Start
Prerequisites
Node.js 18+ installed
Azure DevOps Personal Access Token (PAT) with appropriate permissions
VS Code with GitHub Copilot Chat extension, VS Code Insiders, or Cursor IDE
Installation
π¦ Install from Source
# Clone the repository
git clone https://github.com/sepal7/mcp-ado.git
cd mcp-ado
# Install dependencies
npm install
# Create .env file
cp .env.example .env
# Edit .env with your values:
# AZURE_DEVOPS_ORG=YourOrganization
# AZURE_DEVOPS_PROJECT=YourProject
# AZURE_DEVOPS_PAT=your_pat_token_here
# Test the connection
npm run test-connectionThen configure manually (see detailed guides below).
For detailed setup instructions, see:
π― Usage Examples
Once configured, use natural language to interact with Azure DevOps:
Default Project:
"List all repositories"
"Get work item #12345"
"Show me pull requests"
Other Projects:
"List repositories in the [ProjectName] project"
"Get work items from the [ProjectName] project"
All tools support an optional project parameter to access any project in your organization.
βοΈ Configuration
Environment Variables
Variable | Required | Description |
| Yes | Your Azure DevOps organization name |
| Yes | Default project name |
| Yes | Personal Access Token |
| No | Optional telemetry connection string |
Multi-Project Support
All MCP tools support an optional project parameter. When using Cursor or VS Code, mention the project name in your request:
"List repositories in the [ProjectName] project"The AI assistant automatically extracts the project name and passes it to the MCP tool.
π Project Structure
mcp-ado/
βββ server.js # Main MCP server implementation
βββ package.json # Node.js dependencies and scripts
βββ .env.example # Environment variables template
βββ README.md # This file
β
βββ docs/ # Documentation
β βββ 01-SETUP.md # General setup guide
β βββ 02-CURSOR-SETUP.md # Cursor IDE setup
β βββ 03-VSCODE-SETUP.md # VS Code setup
β βββ 04-PAT-MANAGEMENT.md # PAT token management
β βββ 05-RESTART-SERVER.md # How to restart server
β βββ 07-CHANGELOG.md # Version history
β βββ 08-ONPREMISE-WINDOWS-IIS.md # On-premise deployment
β
βββ scripts/ # Utility scripts
β βββ test.js # Basic server tests
β βββ test-connection.js # Azure DevOps connection tester
β βββ update-pat.ps1 # PAT token updater script
β
βββ azure/ # Azure deployment files
βββ README.md # Azure deployment guide
βββ Dockerfile # Container image definition
βββ azure-deploy.bicep # Infrastructure as codeπ Documentation
Setup Guide - General setup and configuration
Cursor Setup - Cursor IDE configuration
VS Code Setup - VS Code + GitHub Copilot setup
PAT Management - Managing Personal Access Tokens
Changelog - Version history
π€ Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
π License
MIT License - see LICENSE file for details
π Credits
Enhanced with features from Microsoft's official Azure DevOps MCP Server
Made with β€οΈ for the MCP community
Available Tools
25 toolsado_api_callC
Make a generic Azure DevOps REST API call
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name (default: YourProject). Specify any project name in your organization | |
| endpoint | Yes | API endpoint (e.g., /git/repositories) | |
| method | No | HTTP method (GET, POST, PATCH, PUT, DELETE) | GET |
| params | No | Query parameters | |
| body | No | Request body (for POST/PATCH/PUT) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states it makes API calls without disclosing behavioral traits like authentication requirements, rate limits, error handling, or response formats. It mentions HTTP methods but doesn't explain implications (e.g., DELETE is destructive). This is inadequate for a generic API tool with mutation capabilities.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasteβ'Make a generic Azure DevOps REST API call'βthat front-loads the core purpose. Every word earns its place, making it appropriately sized for the tool's scope.
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 (generic API caller with 5 params including nested objects, no output schema, and no annotations), the description is incomplete. It lacks details on authentication, error handling, response structure, and when to use versus siblings, making it inadequate for safe and effective agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 5 parameters. The description adds no additional parameter semantics beyond what's in the schema (e.g., no examples of endpoint paths beyond '/git/repositories', no clarification on params/body usage). Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'Make a generic Azure DevOps REST API call', which specifies the verb ('Make'), resource ('Azure DevOps REST API call'), and scope ('generic'). It distinguishes from siblings by being a generic API caller versus their specific operations, though it doesn't explicitly name the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus the many specialized sibling tools (e.g., create_work_item, get_build). It lacks explicit when/when-not instructions or alternative recommendations, leaving usage context entirely implied from the generic nature.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_work_itemC
Create a new work item
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name (default: YourProject). Specify any project name in your organization | |
| type | Yes | Work item type (e.g., Task, Bug, User Story) | |
| title | Yes | Work item title | |
| description | No | Work item description | |
| fields | No | Additional fields as key-value pairs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Create a new work item' implies a write/mutation operation, but the description doesn't address important behavioral aspects: what permissions are required, whether the creation is immediate or queued, what happens on failure, whether there are rate limits, or what the response contains. For a mutation tool with zero annotation coverage, this is a significant gap.
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 at just 4 words, front-loading the essential action and resource. There's zero wasted language or redundancy. While it may be too brief for complete understanding, it achieves maximum efficiency in its current form.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 5 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't address the behavioral implications of creation, doesn't explain the resource context (what a 'work item' represents in this system), and provides no guidance on usage. The combination of being a write operation with multiple parameters and no structured safety information requires more descriptive context than provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 5 parameters thoroughly. The description adds no additional parameter information beyond what's in the schema - it doesn't explain relationships between parameters, provide examples of valid values, or clarify the 'fields' object structure. With complete schema coverage, the baseline score of 3 is appropriate as the description doesn't add value but doesn't need to compensate for gaps.
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 ('Create') and resource ('work item'), making the purpose immediately understandable. It distinguishes from sibling tools like 'get_work_item', 'update_work_item', and 'query_work_items' by focusing on creation rather than retrieval or modification. However, it doesn't specify what a 'work item' is in this context, leaving some ambiguity about the resource being created.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With multiple sibling tools like 'update_work_item' and 'query_work_items', there's no indication of when creation is appropriate versus updating existing items or querying for items. No prerequisites, dependencies, or typical use cases are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_buildC
Get build details by ID
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name (default: YourProject). Specify any project name in your organization | |
| buildId | Yes | Build ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states it's a read operation ('Get'), implying non-destructive behavior, but doesn't disclose any behavioral traits like error handling, authentication needs, rate limits, or response format. This leaves significant gaps for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It is appropriately sized and front-loaded, directly stating the tool's purpose 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 no annotations, no output schema, and a read operation with two parameters, the description is incomplete. It lacks details on return values, error conditions, or usage context, making it insufficient for an AI agent to fully understand how to invoke and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both parameters. The description adds no additional meaning beyond implying 'buildId' is used for retrieval, which is already clear from the schema. Baseline 3 is appropriate as the schema handles parameter documentation effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('build details'), specifying retrieval by ID. It distinguishes from sibling 'list_builds' by focusing on a single build rather than listing multiple, though it doesn't explicitly mention this 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?
No guidance is provided on when to use this tool versus alternatives like 'list_builds' or other get_* tools. The description lacks context about prerequisites, such as needing a valid build ID, or any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipeline_runC
Get pipeline run details
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name (default: YourProject). Specify any project name in your organization | |
| pipelineId | Yes | Pipeline ID | |
| runId | Yes | Run ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the basic action without covering permissions, rate limits, response format, or error handling. For a read operation with no annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at just four words, with zero wasted language. It's front-loaded with the core purpose, making it efficient 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 has no annotations, no output schema, and the description is minimal, it's incomplete for effective use. The agent lacks information about return values, error conditions, and behavioral context needed for a retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all three parameters. The description adds no additional parameter information beyond what's in the schema, which is acceptable given the high coverage but doesn't provide 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 'Get pipeline run details' clearly states the action (get) and resource (pipeline run details), which is adequate. However, it doesn't differentiate from sibling tools like 'list_pipelines' or 'get_build', leaving ambiguity about what specifically distinguishes this tool from other retrieval 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. There's no mention of prerequisites, context for selecting this over sibling tools like 'list_pipelines', or any exclusions. This leaves the agent without usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pr_commentsC
Get pull request review comments
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name (default: YourProject). Specify any project name in your organization | |
| repo | Yes | Repository name | |
| pullRequestId | Yes | Pull request ID | |
| $top | No | Max results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Get' implies a read operation, but the description doesn't mention authentication requirements, rate limits, pagination behavior (despite the $top parameter), or what format the comments are returned in. This leaves significant gaps for a tool with 4 parameters.
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 phrase that gets straight to the point with zero wasted words. It's appropriately sized for a straightforward retrieval tool and front-loads the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what 'review comments' specifically means (e.g., are these all comments, only review thread comments, or something else?), nor does it provide context about the return format or any behavioral constraints. The agent would need to guess about important operational details.
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 parameter-specific information beyond what's already in the schema (e.g., it doesn't clarify relationships between parameters or provide examples). 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 'Get pull request review comments' clearly states the verb ('Get') and resource ('pull request review comments'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_pull_request' or 'list_pull_requests' which might retrieve different aspects of pull requests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_pull_request' and 'list_pull_requests' available, there's no indication whether this tool is for retrieving comments specifically versus general pull request data or lists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pull_requestC
Get pull request details
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name (default: YourProject). Specify any project name in your organization | |
| repo | Yes | Repository name | |
| pullRequestId | Yes | Pull request ID | |
| includeCommits | No | Include commits | |
| includeWorkItems | No | Include linked work items |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure but only states the basic action. It doesn't cover critical aspects like authentication requirements, rate limits, error handling, or what the output looks like (e.g., JSON structure). This leaves significant gaps for an agent to understand how to invoke it safely and effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with just three words, making it front-loaded and efficient. However, it borders on under-specification, as more detail could improve clarity without sacrificing brevity. It earns a 4 for zero waste but loses a point for potential oversimplification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a pull request tool with 5 parameters and no output schema, the description is incomplete. It lacks information on return values, error conditions, and behavioral traits like pagination or data formats. With no annotations to supplement, this leaves the agent with insufficient context for reliable use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with clear documentation for all 5 parameters in the input schema. The description adds no additional meaning beyond the schema, such as explaining relationships between parameters or usage examples. Baseline score of 3 is appropriate since the schema adequately covers parameter semantics.
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 'Get pull request details' states the basic verb+resource but is vague about scope and depth. It doesn't specify what details are included by default versus what requires optional parameters, nor does it distinguish itself from sibling tools like 'get_pr_comments' or 'list_pull_requests' which might overlap in functionality.
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 sibling tools like 'get_pr_comments' for comments or 'list_pull_requests' for listings, nor does it specify prerequisites such as authentication or project context. Usage is implied but not explicitly defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_releaseC
Get release details
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name (default: YourProject). Specify any project name in your organization | |
| releaseId | Yes | Release ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Get release details' implies a read-only operation, but it doesn't specify whether this requires authentication, has rate limits, returns structured data, or handles errors. For a tool with no annotation coverage, this is a significant gap in describing its behavior beyond basic purpose.
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 at three words, with zero wasted text. It's front-loaded and to the point, making it easy to parse quickly. Every word earns its place by conveying the core action, though this brevity comes at the cost of detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a read operation with 2 parameters, no output schema, and no annotations), the description is incomplete. It doesn't explain what 'release details' include, how results are formatted, or any behavioral traits like error handling. For a tool without structured output or annotations, more context is needed to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with clear documentation for both parameters ('project' and 'releaseId'). The description adds no additional meaning beyond what the schema provides, such as explaining parameter interactions or default behaviors. Since schema coverage is high, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.
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 'Get release details' states a clear verb ('Get') and resource ('release details'), which is better than a tautology. However, it's vague about what specific details are retrieved and doesn't distinguish this tool from sibling tools like 'list_releases' or other 'get_' tools that fetch different resources. It lacks specificity about scope or content of the 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 provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites, such as needing a release ID, or comparison to sibling tools like 'list_releases' for browsing releases. Usage is implied by the tool name but not explicitly stated, leaving gaps for an AI agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_repoB
Get repository details by name
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name (default: YourProject). Specify any project name in your organization | |
| repo | Yes | Repository name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states it 'gets' details, implying a read-only operation, but doesn't disclose behavioral traits such as authentication needs, rate limits, error handling, or what happens if the repository doesn't exist. This is a significant gap for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste, front-loading the core purpose. It's appropriately sized for a simple retrieval tool, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'details' are returned, potential errors, or behavioral constraints. For a tool with 2 parameters and no structured output information, more context is needed to guide the agent effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both parameters ('project' and 'repo'). The description adds no additional meaning beyond implying 'repo' is used for retrieval by name, which is already clear from the schema. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('repository details'), specifying it retrieves details by name. It distinguishes from siblings like 'list_repos' (which lists multiple repositories) and 'get_repo_file' (which retrieves file contents). However, it doesn't explicitly mention what 'details' include, which slightly limits specificity.
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 when needing details for a specific repository by name, contrasting with 'list_repos' for multiple repositories. However, it lacks explicit guidance on when to use this versus alternatives like 'get_repo_file' or 'search_code', and doesn't mention prerequisites or exclusions, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_repo_fileC
Get file content from a repository
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name (default: YourProject). Specify any project name in your organization | |
| repo | Yes | Repository name | |
| path | Yes | File path in repository | |
| branch | No | Branch name (default: main) | |
| download | No | Download as text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Get file content' implies a read operation, it doesn't specify authentication requirements, rate limits, error conditions, or what happens when files are binary or large. For a tool with 5 parameters and no annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a straightforward file retrieval operation and front-loads the core purpose immediately.
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 has 5 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what format the content returns in (text, binary, structured data), how large files are handled, or authentication requirements. For a file retrieval tool in a development context, this leaves too many operational questions unanswered.
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 itself. The description adds no additional parameter information beyond what's in the schema (like explaining relationships between parameters or special constraints). With comprehensive schema coverage, 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 'Get file content from a repository' clearly states the verb ('Get') and resource ('file content from a repository'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_repo' (which likely gets repository metadata) or 'search_code' (which searches across files), leaving room for confusion about scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'get_repo' (for repository info), 'search_code' (for searching across files), and 'list_repos' (for listing repositories), there's no indication of when this specific file-content retrieval tool is appropriate versus broader search or metadata tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_test_planC
Get test plan details
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name (default: YourProject). Specify any project name in your organization | |
| planId | Yes | Test plan ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. 'Get test plan details' reveals nothing about permissions needed, rate limits, response format, pagination, error conditions, or whether this is a read-only operation. For a tool with no annotation coverage, this description provides essentially zero 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 maximally concise at three words with zero wasted text. It's appropriately sized for such a simple statement, though this conciseness comes at the cost of being under-specified rather than efficiently informative.
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 no annotations, no output schema, and a description that provides only basic purpose, this is incomplete for a retrieval tool. The agent needs to know what 'details' includes, the response format, authentication requirements, and how this differs from 'list_test_plans'. The description fails to provide necessary context for effective tool selection and 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?
With 100% schema description coverage, the input schema already documents both parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema - it doesn't explain parameter relationships, provide examples, or clarify edge cases. The baseline score of 3 reflects adequate but minimal value addition given complete 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 'Get test plan details' is a tautology that essentially restates the tool name 'get_test_plan'. It provides a basic verb+resource but lacks specificity about what 'details' includes or how this differs from sibling tools like 'list_test_plans'. The purpose is vague and doesn't distinguish this retrieval tool from alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites, when-not-to-use scenarios, or explicit alternatives like 'list_test_plans' for browsing versus 'get_test_plan' for detailed retrieval. The agent receives zero usage context beyond the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wiki_pageC
Retrieve a specific Azure DevOps wiki page by ID or path
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name (default: YourProject). Specify any project name in your organization | |
| wiki | No | Wiki name (default: project wiki) | |
| pageId | No | Wiki page ID | |
| path | No | Wiki page path | |
| includeContent | No | Include page content |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves a page but doesn't mention whether it's a read-only operation, what permissions are needed, how errors are handled, or the format of returned data. This is inadequate for a tool with 5 parameters and no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse quickly.
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, no annotations, no output schema), the description is insufficient. It doesn't explain return values, error conditions, or behavioral nuances like how 'pageId' and 'path' interact, leaving significant gaps for the agent to operate effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 5 parameters. The description adds no additional meaning beyond implying that 'pageId' or 'path' are used to identify the page, which is already clear from the schema. This 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 ('Retrieve') and resource ('Azure DevOps wiki page'), specifying it's for a specific page by ID or path. However, it doesn't distinguish this tool from sibling tools like 'list_wiki_pages' or 'search_wiki_pages', which would require explicit differentiation to earn a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'list_wiki_pages' or 'search_wiki_pages'. The description implies usage for retrieving a specific page but lacks explicit context, prerequisites, or exclusions, leaving the agent to infer based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_work_itemC
Get work item details by ID
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name (default: YourProject). Specify any project name in your organization | |
| workItemId | Yes | Work item ID | |
| fields | No | Comma-separated field names | |
| expand | No | Expand options: all, relations, fields | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states it 'gets' details, implying a read-only operation, but doesn't mention authentication requirements, rate limits, error handling, or what happens if the ID is invalid. This leaves significant gaps for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that is front-loaded with the core purpose. 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 has no annotations, no output schema, and four parameters, the description is incomplete. It lacks information on behavioral traits, return values, and usage context. While the schema covers parameters, the description doesn't add enough context to compensate for the missing structured data, making it inadequate for a tool of this complexity.
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. The description adds no additional meaning beyond what's in the schema, such as explaining parameter interactions or providing examples. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but also doesn't detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('work item details by ID'), making the purpose unambiguous. It distinguishes from sibling tools like 'get_work_items' (plural) and 'query_work_items' by specifying retrieval of a single item via ID. However, it doesn't explicitly differentiate from other 'get_' tools that might also retrieve 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 provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose 'get_work_item' over 'get_work_items' or 'query_work_items', nor does it specify prerequisites like needing a valid work item ID. Usage is implied by the name 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.
get_work_itemsC
Get multiple work items by IDs
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name (default: YourProject). Specify any project name in your organization | |
| workItemIds | Yes | Array of work item IDs | |
| fields | No | Comma-separated field names | |
| expand | No | Expand options | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states it's a read operation ('Get'), but doesn't describe what happens with invalid IDs, whether results are paginated, rate limits, authentication requirements, or the structure of returned data. For a tool with 4 parameters and no output schema, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the core functionality without unnecessary words. It's appropriately sized for a straightforward retrieval tool and front-loads the essential information. 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 4 parameters, no annotations, and no output schema, the description is incomplete. It doesn't address what the tool returns, error conditions, or behavioral constraints. For a batch retrieval tool that likely returns complex work item data, more context about response format and limitations would be needed for an agent to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are documented in the schema. The description adds no additional parameter semantics beyond implying 'workItemIds' is required (though the schema already specifies this). It doesn't explain relationships between parameters (e.g., how 'project' interacts with IDs) or provide examples of valid values, so it meets the baseline but adds no 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 'Get multiple work items by IDs' clearly states the verb ('Get'), resource ('work items'), and scope ('multiple...by IDs'), making the purpose immediately understandable. It distinguishes from sibling 'get_work_item' (singular) by specifying 'multiple', but doesn't explicitly differentiate from 'query_work_items' which might serve similar batch retrieval purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to prefer this over 'get_work_item' (for single items) or 'query_work_items' (which might offer more flexible filtering), nor does it specify prerequisites like required permissions or project context. Usage context is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_buildsC
List recent builds
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name (default: YourProject). Specify any project name in your organization | |
| definitionId | No | Build definition ID (optional) | |
| status | No | Build status filter | |
| result | No | Build result filter | |
| $top | No | Max results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action ('List recent builds') without details on permissions, rate limits, pagination, or what 'recent' means. This is inadequate for a tool with 5 parameters and no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded and appropriately sized for a simple list operation, 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?
Given 5 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain return values, behavioral traits, or usage context, leaving significant gaps for the agent to navigate this tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 5 parameters. The description adds no additional meaning beyond implying a time-based filter ('recent'), which isn't explicitly covered in the schema. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List recent builds' clearly states the verb ('List') and resource ('builds'), providing a basic purpose. However, it lacks specificity about scope (e.g., time frame, ordering) and doesn't differentiate from sibling tools like 'get_build' or 'list_pipelines', making it vague in context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites, context (e.g., for monitoring vs. analysis), or exclusions, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pipelinesC
List pipelines in the project
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name (default: YourProject). Specify any project name in your organization | |
| $top | No | Max results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states a list operation but doesn't disclose behavioral traits such as pagination handling, rate limits, authentication needs, or what happens if the project doesn't exist. This is inadequate for a tool with potential complexity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded and appropriately sized for a simple list tool, 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?
Given no annotations and no output schema, the description is incomplete. It lacks details on return values, error handling, or behavioral context needed for effective use. For a list tool with siblings, more guidance 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%, so the input schema fully documents both parameters. The description adds no additional meaning beyond implying a project context, which the schema already covers with its descriptions. This 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 verb ('List') and resource ('pipelines in the project'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'list_builds' or 'list_releases' beyond the resource type, which keeps 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. With siblings like 'get_pipeline_run' for specific pipeline details or 'ado_api_call' for general API calls, there's no indication of context or exclusions, leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pull_requestsC
List pull requests in a repository
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name (default: YourProject). Specify any project name in your organization | |
| repo | Yes | Repository name | |
| status | No | PR status: active, completed, abandoned, all | active |
| $top | No | Max results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It mentions listing but doesn't specify whether this is a read-only operation, what permissions are needed, how results are returned (e.g., pagination), or any rate limits. For a tool with 4 parameters and no annotation coverage, this is inadequate.
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's appropriately sized for a straightforward listing tool and front-loads the core purpose effectively.
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 has 4 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what the output looks like (e.g., list format, fields included), behavioral constraints, or how it differs from similar sibling tools, leaving significant gaps for the 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%, so the schema fully documents all parameters. The description adds no additional semantic context about parameters beyond implying repository scope. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but doesn't detract either.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('pull requests in a repository'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_pull_request' (singular) or 'get_pr_comments', which could cause confusion about when to use each.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_pull_request' (singular retrieval) and 'get_pr_comments' (comments-focused), there's no indication that this tool is for listing multiple PRs with filtering options, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_releasesD
List releases
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name (default: YourProject). Specify any project name in your organization | |
| definitionId | No | Release definition ID (optional) | |
| status | No | Release status filter | |
| $top | No | Max results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure but offers none. It doesn't indicate whether this is a read-only operation, what permissions might be required, whether results are paginated (despite the $top parameter), what format the output takes, or any rate limits. The description provides zero behavioral context beyond the bare verb 'list'.
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?
While the description is extremely brief (two words), this represents under-specification rather than effective conciseness. The description fails to provide any meaningful information that would help an AI agent understand when and how to use this tool. Every sentence should earn its place, but this description doesn't provide even a single complete sentence of useful guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a listing tool with 4 parameters, no annotations, and no output schema, the description is completely inadequate. It doesn't explain what 'releases' means in this context, how results are returned, what authentication might be required, or how this differs from the 'get_release' sibling tool. The description fails to provide the minimal context needed for effective tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so all parameters are documented in the schema itself. The description adds no additional parameter information beyond what's already in the schema descriptions. According to the scoring rules, when schema_description_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 'List releases' is a tautology that merely restates the tool name without adding meaningful context. It specifies the verb 'list' and resource 'releases', but doesn't distinguish this from sibling tools like 'get_release' or provide any scope information about what kind of releases are being listed (e.g., project releases, organizational releases, etc.).
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 absolutely no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_release' (which appears to fetch a single release) or explain when filtering via parameters is appropriate versus using other listing tools. There's no context about prerequisites, limitations, or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_repo_branchesC
List branches in a repository
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name (default: YourProject). Specify any project name in your organization | |
| repo | Yes | Repository name | |
| includeLinks | No | Include links |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states it's a list operation, implying read-only behavior, but doesn't describe return format (e.g., list of branch names, pagination, sorting), error conditions, rate limits, or authentication needs. For a tool with no annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded with the core purpose and appropriately sized for a simple list tool. Every word earns its place, 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?
Given no annotations, no output schema, and 3 parameters (with 100% schema coverage but no behavioral context), the description is incomplete. It lacks details on return values, error handling, and operational constraints. For a tool in this context, it should provide more guidance on usage and behavior to be fully 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%, so the schema already documents all three parameters (project, repo, includeLinks) with descriptions. The description adds no additional meaning beyond the schema, such as explaining what 'includeLinks' entails or how parameters interact. Baseline 3 is appropriate when 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 'List branches in a repository' clearly states the action (list) and resource (branches in a repository). It distinguishes from siblings like 'list_repos' (which lists repositories) and 'get_repo' (which gets repository details), but doesn't explicitly differentiate from tools like 'list_pull_requests' that might also involve branches. The purpose is specific but could be more precise about scope.
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., authentication, project context), when not to use it, or how it compares to sibling tools like 'get_repo' (which might include branch info) or 'list_pull_requests' (which involves branches). Usage is implied by the name 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_reposC
List all repositories in the project
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name (default: YourProject). Specify any project name in your organization | |
| includeLinks | No | Include links |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states it's a list operation but doesn't disclose behavioral traits like pagination, rate limits, authentication needs, sorting, or what 'list all' entails (e.g., if it returns everything at once or requires iteration). This is inadequate for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded with the core purpose and appropriately sized for a simple list tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete. It doesn't explain return values (e.g., format, fields), behavioral constraints, or error handling. For a list tool with two parameters and no structured safety hints, this leaves significant gaps for an AI 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%, so the schema fully documents both parameters. The description adds no parameter-specific information beyond implying a 'project' context, which is already covered in the schema. 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 verb ('List') and resource ('repositories'), and specifies scope ('all repositories in the project'). It doesn't explicitly differentiate from sibling tools like 'get_repo' (which likely retrieves a single repository) or 'list_repo_branches' (which lists branches within a repository), but the purpose is unambiguous.
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 'get_repo' (for single repo details) or 'search_code' (for filtered searches), nor does it specify prerequisites or context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_test_plansC
List test plans
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name (default: YourProject). Specify any project name in your organization | |
| $top | No | Max results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It only states the action 'list' without explaining what 'list' entailsβsuch as pagination behavior, return format, authentication needs, rate limits, or whether it's read-only. This leaves critical behavioral traits undocumented.
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 just two words, making it front-loaded and free of unnecessary details. However, this conciseness comes at the cost of being under-specified, but for this dimension alone, it earns top marks for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete for a tool with 2 parameters. It doesn't explain what 'listing' entails (e.g., format, pagination), how results are returned, or any behavioral context. This leaves significant gaps for an AI agent to understand and use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both parameters ('project' and '$top'). The description adds no additional meaning beyond what the schema provides, such as explaining how parameters interact or their impact on results. Baseline 3 is appropriate when the 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 'List test plans' is a tautology that merely restates the tool name without adding any meaningful context. It specifies the verb 'list' and resource 'test plans' but fails to distinguish this tool from siblings like 'get_test_plan' or provide any scope or purpose details beyond the obvious.
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 any prerequisites, context for usage, or differentiate from sibling tools like 'get_test_plan' (which likely retrieves a single test plan) or 'ado_api_call' (a generic API tool).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_wiki_pagesC
List all pages in a wiki
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name (default: YourProject). Specify any project name in your organization | |
| wiki | No | Wiki name | |
| recursive | No | Include sub-pages |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool lists pages but does not mention whether this is a read-only operation, if it requires authentication, any rate limits, or what the output format might be. For a list operation with zero annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words, making it highly concise and front-loaded. It efficiently communicates the core purpose without unnecessary elaboration, earning full marks for brevity and structure.
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 (3 parameters, no annotations, no output schema), the description is insufficient. It does not explain the return values, error conditions, or how parameters like 'recursive' affect the listing. For a list operation that might return structured data, more context is needed to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, providing details for all three parameters (project, wiki, recursive). The description adds no additional semantic context beyond what the schema already documents, such as explaining how parameters interact or default behaviors. This 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 'List all pages in a wiki' clearly states the action (list) and resource (pages in a wiki), making the purpose immediately understandable. However, it does not distinguish this tool from its sibling 'search_wiki_pages', which could serve a similar purpose but with filtering capabilities, missing an opportunity for differentiation.
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 'search_wiki_pages' or 'get_wiki_page'. It lacks context about prerequisites, such as needing a specific project or wiki, or when recursive listing is appropriate, leaving usage decisions ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_work_itemsC
Query work items using WIQL (Work Item Query Language)
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name (default: YourProject). Specify any project name in your organization | |
| wiql | Yes | WIQL query string | |
| $top | No | Max results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions WIQL usage but fails to describe key behaviors: it doesn't specify if this is a read-only operation, what the output format is (e.g., list of items), or any limitations like rate limits or permissions required. For a query tool with no annotations, this leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that efficiently conveys the core functionality 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?
Given the complexity of a query tool with no annotations and no output schema, the description is insufficient. It doesn't explain what WIQL is, how results are returned, or any error handling, leaving users to infer too much. For a tool that likely returns structured data, more context is needed to be 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%, so the schema already documents all parameters (project, wiql, $top) with details like defaults and requirements. The description adds no additional semantic context beyond implying WIQL is used, which is redundant with the schema's wiql description. Baseline 3 is appropriate as the schema handles the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Query work items') and the method ('using WIQL'), which is specific and actionable. However, it doesn't distinguish this tool from sibling tools like 'get_work_item' or 'get_work_items', which might also retrieve work items through different mechanisms, so it lacks explicit differentiation.
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 like needing WIQL knowledge, nor does it compare to siblings like 'get_work_items' for simpler queries. Without such context, users might struggle to choose appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_codeC
Search code across repositories
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name (default: YourProject). Specify any project name in your organization | |
| searchText | Yes | Search query | |
| repo | No | Repository name (optional) | |
| $top | No | Max results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states it's a search operation, implying it's read-only, but doesn't mention authentication requirements, rate limits, pagination behavior (beyond the $top parameter), or what the search encompasses (e.g., file content, metadata). For a search tool with zero annotation coverage, this leaves significant gaps in understanding how it behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it immediately clear. Every word earns its place by conveying essential purpose without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (search across repositories with 4 parameters), no annotations, and no output schema, the description is incomplete. It doesn't explain what the search returns (e.g., code snippets, file paths), how results are structured, or any behavioral constraints. For a search tool in this context, more detail is needed to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 4 parameters. The description adds no additional meaning beyond implying the search scope ('across repositories'), which is partially covered by the 'repo' parameter's optional nature. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, with no extra 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 'Search code across repositories' clearly states the verb ('search') and resource ('code across repositories'), making the purpose immediately understandable. It distinguishes from siblings like search_wiki_pages (which searches wiki content) and get_repo_file (which retrieves specific files). However, it doesn't specify the scope beyond 'repositories' or mention the platform context (e.g., Azure DevOps).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to prefer this over get_repo_file for file retrieval or search_wiki_pages for content searches, nor does it specify prerequisites like needing repository access. Usage is implied only by the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_wiki_pagesC
Search wiki pages by content or title
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name (default: YourProject). Specify any project name in your organization | |
| query | Yes | Search query | |
| wiki | No | Wiki name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states it's a search operation but doesn't disclose behavioral traits like whether it's read-only, how results are returned (e.g., pagination, sorting), authentication needs, or rate limits. This is a significant gap for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's appropriately sized and front-loaded, clearly stating the tool's purpose 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 no annotations and no output schema, the description is incomplete. It doesn't explain what the search returns (e.g., list of pages, snippets), how results are structured, or any behavioral constraints. For a search tool with 3 parameters, this leaves significant gaps for the 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%, so the schema already documents all parameters. The description adds minimal value beyond the schema by implying the 'query' parameter searches 'by content or title', but doesn't provide additional syntax or format details. 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 verb 'Search' and resource 'wiki pages', with the scope 'by content or title'. It's specific about what the tool does, though it doesn't explicitly differentiate from sibling tools like 'list_wiki_pages' or 'get_wiki_page'.
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 sibling tools like 'list_wiki_pages' (which might list all pages) or 'get_wiki_page' (which might retrieve a specific page), leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_work_itemC
Update an existing work item
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project name (default: YourProject). Specify any project name in your organization | |
| workItemId | Yes | Work item ID | |
| fields | No | Fields to update as key-value pairs | |
| links | No | Array of links to add. Each link should have rel and url properties | |
| removeLinks | No | Array of link URLs to remove |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'update' implies mutation, the description doesn't mention whether this requires specific permissions, what happens to existing fields not mentioned, whether changes are reversible, or any rate limits/constraints. It provides minimal behavioral context beyond the basic operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's appropriately sized and front-loaded with the core operation. Every word earns its place in conveying the basic purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 5 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what the tool returns, what happens on success/failure, or provide context about the update operation beyond the bare minimum. The agent would need to infer much from the parameter names alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 5 parameters thoroughly. The description adds no parameter information beyond what's in the schema. According to scoring rules, with high schema coverage (>80%), the baseline is 3 even with no 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 'Update an existing work item' clearly states the verb (update) and resource (work item), but it's vague about what specifically gets updated. It doesn't distinguish this tool from its sibling 'create_work_item' beyond the obvious create/update difference, nor does it mention the specific fields or operations available.
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 about when to use this tool versus alternatives. While 'create_work_item' is clearly for creation, there's no mention of when to use update_work_item versus other potential modification tools or whether there are prerequisites like authentication or permissions needed.
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.
25 tool updates
- First observed
ado_api_call - First observed
create_work_item - First observed
get_build - First observed
get_pipeline_run - First observed
get_pr_comments - First observed
get_pull_request - First observed
get_release - First observed
get_repo - First observed
get_repo_file - First observed
get_test_plan - First observed
get_wiki_page - First observed
get_work_item - First observed
get_work_items - First observed
list_builds - First observed
list_pipelines - First observed
list_pull_requests - First observed
list_releases - First observed
list_repo_branches - First observed
list_repos - First observed
list_test_plans - First observed
list_wiki_pages - First observed
query_work_items - First observed
search_code - First observed
search_wiki_pages - First observed
update_work_item
TDQS
Scored across 25 tools
Most tools have distinct purposes targeting specific Azure DevOps resources (e.g., work items, builds, pipelines, repos, wikis), with clear separation between get/list/query/search operations. However, some potential confusion exists between get_work_item and get_work_items (both retrieve work items, differing only in single vs. multiple items), and between list_wiki_pages and search_wiki_pages (both operate on wiki pages with overlapping retrieval functions).
Tool names follow a highly consistent verb_noun pattern throughout, using snake_case uniformly. Verbs are standardized (get, list, create, update, query, search) paired with specific nouns (work_item, build, pipeline, repo, wiki_page, etc.), making the naming predictable and easy to understand. No deviations or mixed conventions are present.
With 25 tools, the count is borderline high for a single server, potentially overwhelming for agents. While Azure DevOps is a broad platform, the toolset covers multiple domains (work items, CI/CD, repos, wikis, testing), which might be better split into focused servers. However, the tools are well-organized within this scope, avoiding extreme bloat.
The toolset provides comprehensive coverage for core Azure DevOps operations, including CRUD for work items (create, get, update, query), listing and retrieving builds, pipelines, releases, repos, and wikis, and search capabilities for code and wiki pages. Minor gaps include missing update/delete operations for non-work-item resources (e.g., no update_build or delete_repo) and limited pull request management (only get and list, no create or merge), but agents can work around these with the generic ado_api_call.
Maintenance
Related MCP Connectors
Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
Governed app access for AI agents: 1,000+ apps & 12,000+ tools via Code Mode MCP.
AgentPMT is the AI agent marketplace that turns any MCP-compatible AI assistant into an autonomous employee. Connect once and your agents gain access to a growing ecosystem of tools, workflows, and skills spanning communication, data analytics, development, file management, search, and more. AgentPMT dynamically discovers and orchestrates tools from across the MCP ecosystem, so your agents can independently find the right tool for any task without manual configuration.
Let AI agents query data and act across all your business apps via MCP.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to interact with Azure DevOps APIs for managing projects, work items, repositories, pull requests, and pipelines through natural language.11 npmMIT

Azure DevOps MCP Serverofficial
AlicenseNot gradedqualityAmaintenanceProvides Azure DevOps tooling for AI agents, enabling interaction with projects, work items, repositories, and pipelines through natural language.172,288 npm2,015MIT- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Azure DevOps APIs for managing projects, work items, repositories, pull requests, pipelines, and more through natural language.9,196 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to interact with Azure DevOps through an MCP server with 34 tools for PRs, work items, repos, and branches, optimized for token efficiency and agent-first workflows.4 npmMIT