Skip to main content
Glama
Vortiago
by Vortiago

MCP Azure DevOps Server

⚠️ NOTICE: Official Server Available

Please use the official Microsoft Azure DevOps MCP server instead:

https://github.com/microsoft/azure-devops-mcp

This repository is no longer maintained. The official Microsoft server provides better support, ongoing maintenance, and the latest features.


A Model Context Protocol (MCP) server enabling AI assistants to interact with Azure DevOps services.

Overview

This project implements a Model Context Protocol (MCP) server that allows AI assistants (like Claude) to interact with Azure DevOps, providing a bridge between natural language interactions and the Azure DevOps REST API.

Related MCP server: Azure DevOps MCP Server

Features

Currently implemented:

Work Item Management

  • Query Work Items: Search for work items using WIQL queries

  • Get Work Item Details: View complete work item information

  • Create Work Items: Add new tasks, bugs, user stories, and other work item types

  • Update Work Items: Modify existing work items' fields and properties

  • Add Comments: Post comments on work items

  • View Comments: Retrieve the comment history for a work item

  • Parent-Child Relationships: Establish hierarchy between work items

Project Management

  • Get Projects: View all accessible projects in the organization

  • Get Teams: List all teams within the organization

  • Team Members: View team membership information

  • Team Area Paths: Retrieve area paths assigned to teams

  • Team Iterations: Access team iteration/sprint configurations

Planned features:

  • Pipeline Operations: Query pipeline status and trigger new pipeline runs

  • Pull Request Handling: Create, update, and review Pull Requests

  • Sprint Management: Plan and manage sprints and iterations

  • Branch Policy Administration: Configure and manage branch policies

Getting Started

Prerequisites

  • Python 3.10+

  • Azure DevOps account with appropriate permissions

  • Personal Access Token (PAT) with necessary scopes for Azure DevOps API access

Installation

# Clone the repository
git clone https://github.com/Vortiago/mcp-azure-devops.git
cd mcp-azure-devops

# Install in development mode
uv pip install -e ".[dev]"

# Install from PyPi
pip install mcp-azure-devops

Configuration

Create a .env file in the project root with the following variables:

AZURE_DEVOPS_PAT=your_personal_access_token
AZURE_DEVOPS_ORGANIZATION_URL=https://your-organization.visualstudio.com or https://dev.azure.com/your-organisation

Note: Make sure to provide the full URL to your Azure DevOps organization.

Running the Server

# Development mode with the MCP Inspector
mcp dev src/mcp_azure_devops/server.py

# Install in Claude Desktop
mcp install src/mcp_azure_devops/server.py --name "Azure DevOps Assistant"

Usage Examples

Query Work Items

Show me all active bugs assigned to me in the current sprint

Create a Work Item

Create a user story in the ProjectX with the title "Implement user authentication" and assign it to john.doe@example.com

Update a Work Item

Change the status of bug #1234 to "Resolved" and add a comment explaining the fix

Team Management

Show me all the team members in the "Core Development" team in the "ProjectX" project

View Project Structure

List all projects in my organization and show me the iterations for the Development team

Development

The project is structured into feature modules, each implementing specific Azure DevOps capabilities:

  • features/work_items: Work item management functionality

  • features/projects: Project management capabilities

  • features/teams: Team management features

  • utils: Common utilities and client initialization

For more information on development, see the CLAUDE.md file.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

Available Tools

21 tools
add_work_item_commentA
    Adds a new comment to a work item.

    Use this tool when you need to:
    - Provide feedback or clarification on a work item
    - Document decisions made about the work
    - Add context without changing the work item's fields
    - Communicate with team members about specific tasks
    
    IMPORTANT: Comments in Azure DevOps become part of the permanent work
    item history and cannot be edited or deleted after they are added. The
    comment will be attributed to the user associated with the Personal
    Access Token used for authentication.
    
    Args:
        id: The work item ID
        text: The text of the comment (supports markdown formatting)
        project: Optional project name. If not provided, will be 
            determined from the work item.
        
    Returns:
        Formatted string containing confirmation and the added comment with
        author information and timestamp
    
ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
textYes
projectNo

TDQS

A5/5.0
Behavior5/5

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 effectively describes key traits: comments are permanent and cannot be edited/deleted, authentication attribution to the Personal Access Token user, and that the return includes confirmation with author info and timestamp. This goes beyond basic functionality to cover important operational implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and appropriately sized. It starts with the core purpose, then usage guidelines, important behavioral notes, and parameter details. Every sentence adds value—no wasted words—and it's front-loaded with essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (a mutation tool with permanent effects), no annotations, and no output schema, the description is remarkably complete. It covers purpose, usage, behavioral constraints (permanence, attribution), parameter semantics, and even hints at the return format. This provides sufficient context for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate fully. It adds meaningful semantics for all three parameters: 'id' as work item ID, 'text' as comment text with markdown support, and 'project' as optional name with fallback behavior. This provides clear context beyond the bare schema types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Adds a new comment to a work item.' It specifies the verb ('adds') and resource ('comment to a work item'), distinguishing it from sibling tools like update_work_item (which modifies fields) or get_work_item_comments (which retrieves comments).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidelines with a bulleted list of scenarios: 'Provide feedback or clarification,' 'Document decisions,' 'Add context without changing fields,' and 'Communicate with team members.' It also implicitly distinguishes from alternatives by noting comments don't change work item fields, unlike update_work_item.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_work_itemA
    Creates a new work item in Azure DevOps.
    
    Use this tool when you need to:
    - Add a new task, user story, bug, or other work item to a project
    - Create work items with specific field values and metadata
    - Establish work hierarchies by setting parent relationships
    - Track new requirements, features, or issues in your project
    
    IMPORTANT: The work item will be created immediately and visible to all
    users with access to the specified project. It will also trigger any
    configured notifications or automation rules.
    
    Args:
        title: The title of the work item
        project: The project name or ID where the work item will be created
        work_item_type: Type of work item (e.g., "User Story", "Bug", 
            "Task")
        fields: Optional dictionary of additional field name/value pairs 
            to set
        description: Optional description of the work item
        state: Optional initial state for the work item
        assigned_to: Optional user email to assign the work item to
        parent_id: Optional ID of parent work item for hierarchy
        iteration_path: Optional iteration path for the work item
        area_path: Optional area path for the work item
        story_points: Optional story points value
        priority: Optional priority value
        tags: Optional tags as comma-separated string
        
    Returns:
        Formatted string containing the created work item details including
        ID, title, type, state, and all other specified fields, formatted
        as markdown
    
ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
projectYes
work_item_typeYes
fieldsNo
descriptionNo
stateNo
assigned_toNo
parent_idNo
iteration_pathNo
area_pathNo
story_pointsNo
priorityNo
tagsNo

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does well by disclosing key behavioral traits: it's a write operation ('creates'), has immediate effects ('created immediately'), impacts visibility ('visible to all users'), and triggers notifications/automation. It could improve by mentioning authentication needs or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, usage guidelines, important notes, parameters, returns) and front-loaded key information. It could be slightly more concise by reducing redundancy in bullet points, but every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex creation tool with 13 parameters, 0% schema coverage, no annotations, and no output schema, the description is remarkably complete: it explains purpose, usage, behavior, all parameters, and return format, leaving no 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.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Given 0% schema description coverage and 13 parameters, the description compensates fully by providing detailed explanations for each parameter in the 'Args' section, adding meaning beyond the schema (e.g., clarifying 'parent_id' establishes hierarchies, 'tags' as comma-separated string).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Creates a new work item in Azure DevOps' with specific examples of what can be created (task, user story, bug) and distinguishes this from sibling tools like 'update_work_item' or 'get_work_item' by focusing on creation rather than modification or retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly lists four specific use cases in bullet points (e.g., 'Add a new task...', 'Create work items with specific field values...') and includes an 'IMPORTANT' section detailing immediate visibility and notification triggers, providing clear guidance on when to use this tool versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_all_teamsA
    Retrieves all teams in the Azure DevOps organization.
    
    Use this tool when you need to:
    - Get an overview of all teams across projects
    - Find team IDs for use in other operations
    - Determine which teams exist in the organization
    - Locate specific teams by name
    
    Args:
        user_is_member_of: If true, return only teams where the current 
            user is a member. Otherwise return all teams the user 
            has read access to.
        top: Maximum number of teams to return
        skip: Number of teams to skip
            
    Returns:
        Formatted string containing team information including names,
        IDs, descriptions, and associated projects, formatted as
        markdown with each team clearly separated
    
ParametersJSON Schema
NameRequiredDescriptionDefault
user_is_member_ofNo
topNo
skipNo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does well by explaining access control behavior ('return all teams the user has read access to'), pagination behavior (top/skip parameters), and return format ('formatted as markdown with each team clearly separated'). It doesn't mention rate limits or authentication requirements, but covers key behavioral aspects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, usage scenarios, parameters, returns) and front-loaded information. The bullet points could be slightly more concise, but overall it's efficient with minimal waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read operation with no annotations and no output schema, the description provides comprehensive context: clear purpose, usage guidelines, parameter explanations, and return format details. It doesn't explicitly mention error conditions or performance characteristics, but covers most essential aspects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by explaining all three parameters: 'user_is_member_of' clarifies filtering logic, 'top' specifies maximum return count, and 'skip' explains pagination offset. This adds substantial meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verb ('Retrieves') and resource ('all teams in the Azure DevOps organization'). It distinguishes this tool from siblings like get_team_members or get_team_iterations by focusing on team listing rather than team-specific details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage scenarios in bullet points: 'Get an overview of all teams across projects', 'Find team IDs for use in other operations', 'Determine which teams exist', and 'Locate specific teams by name'. This gives clear guidance on when to use this tool versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_process_detailsA
    Gets detailed information about a specific process.
    
    Use this tool when you need to:
    - View process properties and configuration
    - Get a list of work item types defined in a process
    - Check if a process is the default for the organization
    
    Args:
        process_id: The ID of the process
        
    Returns:
        Detailed information about the process including properties and
        available work item types
    
ParametersJSON Schema
NameRequiredDescriptionDefault
process_idYes

TDQS

A4.4/5.0
Behavior3/5

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 implies a read-only operation ('Gets detailed information'), which is appropriate, but doesn't disclose behavioral traits like authentication requirements, rate limits, error conditions, or response format details. The description adds value by specifying what information is returned but lacks operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose statement, bulleted usage guidelines, and separate sections for Args and Returns. Every sentence earns its place by adding specific value without redundancy, and it's front-loaded with the core functionality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (single parameter, read operation) and lack of annotations or output schema, the description is fairly complete. It covers purpose, usage, parameters, and return information, but could improve by adding more behavioral details like error handling or response structure to fully compensate for missing structured data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must compensate. It documents the single parameter 'process_id' with a brief explanation ('The ID of the process'), which adds meaning beyond the schema's title 'Process Id'. However, it doesn't provide format examples or constraints, leaving some ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Gets detailed information') and resource ('about a specific process'), distinguishing it from siblings like 'list_processes' (which lists processes) and 'get_work_item' (which focuses on work items). It specifies the scope of details including properties, configuration, work item types, and default status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides usage scenarios in a bulleted list: 'View process properties and configuration', 'Get a list of work item types defined in a process', and 'Check if a process is the default for the organization'. This gives clear context for when to use this tool versus alternatives like 'list_processes' or 'get_work_item_types'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_project_process_idA
    Gets the process ID associated with a project.
    
    Use this tool when you need to:
    - Find out which process a project is using
    - Get the process ID for use in other process-related operations
    - Verify process information for a project
    
    Args:
        project: Project ID or project name
        
    Returns:
        Formatted information about the process including name and ID
    
ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes

TDQS

A4.4/5.0
Behavior3/5

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 this is a 'get' operation (implying read-only), and mentions the return format includes 'name and ID', which adds useful context. However, it doesn't address potential error conditions, authentication requirements, or rate limits that would be helpful 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections: purpose statement, usage guidelines bullet points, Args, and Returns. Every sentence earns its place by providing specific guidance or information without redundancy. The formatting makes it easy to scan and understand.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no annotations and no output schema, the description does a good job covering purpose, usage, parameters, and return format. The main gap is the lack of error handling or edge case information, but given the tool's apparent simplicity, the description provides sufficient context for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, so the description must compensate. It provides the Args section explaining that 'project' accepts 'Project ID or project name', which adds meaningful semantics beyond the bare schema. However, it doesn't provide examples or format specifications for the project parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'gets' and the resource 'process ID associated with a project', making the purpose specific and unambiguous. It distinguishes this tool from siblings like 'get_process_details' or 'list_processes' by focusing specifically on the project-process relationship.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit bullet points for when to use this tool: 'Find out which process a project is using', 'Get the process ID for use in other process-related operations', and 'Verify process information for a project'. This gives clear context and distinguishes it from alternatives like 'get_process_details' which might provide broader process information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_projectsA
    Retrieves all projects accessible to the authenticated user 
    in the Azure DevOps organization.
    
    Use this tool when you need to:
    - Get an overview of all available projects
    - Find project IDs for use in other operations
    - Check project states and visibility settings
    - Locate specific projects by name
    
    Args:
        state_filter: Filter on team projects in a specific state 
            (e.g., "WellFormed", "Deleting")
        top: Maximum number of projects to return
            
    Returns:
        Formatted string containing project information including names,
        IDs, descriptions, states, and visibility settings, formatted as
        markdown with each project clearly separated
    
ParametersJSON Schema
NameRequiredDescriptionDefault
state_filterNo
topNo

TDQS

A4.7/5.0
Behavior4/5

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 discloses that it retrieves 'all projects accessible to the authenticated user', implying authentication needs and scope limitations. It also describes the return format ('formatted as markdown'), adding useful behavioral context beyond basic functionality. However, it doesn't mention rate limits, pagination, or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with distinct sections (purpose, usage guidelines, args, returns), front-loading key information. Each sentence earns its place by providing specific details without redundancy, and the bullet points enhance readability while maintaining efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, 0% schema coverage, and no output schema, the description does an excellent job compensating by explaining parameters, return format, and use cases. It covers the core functionality comprehensively. A slight deduction because it doesn't address potential limitations like authentication errors or large result sets, but overall it's highly complete for this tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It provides clear explanations for both parameters: 'state_filter' is described with examples ('WellFormed', 'Deleting'), and 'top' is explained as 'Maximum number of projects to return'. This adds significant meaning beyond the schema's minimal titles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Retrieves') and resource ('all projects accessible to the authenticated user in the Azure DevOps organization'), making the purpose specific. It distinguishes from siblings by focusing on project retrieval rather than work items, teams, or processes, which are covered by other tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly lists four use cases (e.g., 'Get an overview of all available projects', 'Find project IDs for use in other operations'), providing clear guidance on when to use this tool. It implicitly distinguishes from alternatives by not mentioning other project-related tools, but the specific use cases offer practical direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_team_area_pathsA
    Retrieves the area paths assigned to a specific team.
    
    Use this tool when you need to:
    - Understand a team's areas of responsibility
    - Check default area path assignments
    - Determine how work is classified and routed to teams
    - Set up board and backlog configurations
    
    IMPORTANT: Area paths in Azure DevOps determine which work items appear
    on a team's backlogs and boards. The default area path is used when
    creating new work items through a team's interface.
    
    Args:
        project_name_or_id: The name or ID of the team project
        team_name_or_id: The name or ID of the team
            
    Returns:
        Formatted string containing team area path information including
        the default area path and all assigned paths, with indicators for
        paths that include sub-areas
    
ParametersJSON Schema
NameRequiredDescriptionDefault
project_name_or_idYes
team_name_or_idYes

TDQS

A4.8/5.0
Behavior4/5

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 effectively explains what the tool returns (formatted string with default area path, all assigned paths, and sub-area indicators) and provides important context about how area paths function in Azure DevOps. However, it doesn't mention potential errors, authentication requirements, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, usage guidelines, important context, parameters, returns) and every sentence earns its place. It's appropriately sized for a tool with 2 parameters and no annotations, providing comprehensive information without unnecessary verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (2 parameters, no annotations, no output schema), the description provides complete coverage. It explains what the tool does, when to use it, the parameters, the return format, and the broader system context. The Returns section effectively substitutes for a missing output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by clearly documenting both parameters (project_name_or_id and team_name_or_id) in the Args section. It explains what each parameter represents and provides the important detail that they accept either names or IDs, adding significant value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Retrieves the area paths') and resource ('assigned to a specific team'), distinguishing it from sibling tools like get_all_teams or get_team_members. It provides a precise verb+resource combination that leaves no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly lists four specific use cases (understanding areas of responsibility, checking default assignments, determining classification/routing, setting up configurations) and includes an IMPORTANT section explaining the broader context of area paths in Azure DevOps. This provides clear guidance on when to use this tool versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_team_iterationsA
    Retrieves the iterations (sprints) assigned to a specific team.
    
    Use this tool when you need to:
    - View a team's sprint schedule
    - Find date ranges for iterations
    - Determine which iteration is currently active
    - Plan work based on team's iteration calendar
    
    IMPORTANT: Iterations in Azure DevOps define time periods for planning
    and tracking work. They determine sprint dates and are used for
    capacity planning, burndown charts, and velocity calculations.
    
    Args:
        project_name_or_id: The name or ID of the team project
        team_name_or_id: The name or ID of the team
        current: If True, return only the current iteration
            
    Returns:
        Formatted string containing team iteration information including
        names, date ranges, and time frames (past/current/future),
        formatted as markdown
    
ParametersJSON Schema
NameRequiredDescriptionDefault
project_name_or_idYes
team_name_or_idYes
currentNo

TDQS

A4.6/5.0
Behavior4/5

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 effectively describes what the tool does (retrieves iterations), explains the Azure DevOps context, and specifies the return format (formatted string as markdown). However, it doesn't mention potential limitations like authentication requirements, rate limits, or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, usage scenarios, important context, parameters, returns) and every sentence adds value. It's appropriately sized for a tool with 3 parameters and no annotations, with no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read operation with 3 parameters and no output schema, the description provides good completeness: clear purpose, usage guidelines, parameter explanations, and return format specification. The main gap is the lack of behavioral details like authentication or error handling, but given the tool's relative simplicity, it's mostly adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates well by explaining all three parameters in the Args section, clarifying their purpose and providing the 'current' parameter's filtering behavior. It adds meaningful context beyond the bare schema, though it doesn't specify format details for project/team identifiers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Retrieves') and resource ('iterations (sprints) assigned to a specific team'), distinguishing it from sibling tools like get_all_teams or get_team_members. It explicitly defines what iterations are in Azure DevOps context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage scenarios in a bulleted list (view sprint schedule, find date ranges, determine active iteration, plan work) and includes an IMPORTANT section explaining the broader context of iterations in Azure DevOps. This gives clear guidance on when to use this tool versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_team_membersA
    Retrieves the membership roster for a specific team.
    
    Use this tool when you need to:
    - See who belongs to a particular team
    - Find team administrators
    - Check user assignments across teams
    - Determine team size and composition
    
    Args:
        project_id: The name or ID (GUID) of the team project the team 
            belongs to
        team_id: The name or ID (GUID) of the team
        top: Maximum number of members to return
        skip: Number of members to skip
            
    Returns:
        Formatted string containing team members information including
        display names, emails, IDs, and administrator status, formatted
        as markdown with each member clearly separated
    
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
team_idYes
topNo
skipNo

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that the tool retrieves data (implied read-only) and describes the return format (markdown with specific fields), which is helpful. However, it doesn't mention potential limitations like permissions needed, rate limits, pagination behavior beyond top/skip, or error conditions. For a read operation with no annotations, this is adequate but leaves gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, usage guidelines, args, returns) and uses bullet points efficiently. It's appropriately sized for a 4-parameter tool, though the usage guidelines could be more concise (e.g., combining points). Every sentence adds value, with no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 4 parameters with 0% schema coverage, the description does a good job: it explains purpose, usage, parameters, and return format. However, it lacks details on authentication, error handling, or example outputs, which would help an agent use it correctly in complex scenarios. For a read tool, this is mostly complete but not exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It provides clear semantics for all four parameters: project_id and team_id as identifiers (with name/GUID clarification), and top/skip for pagination control. This adds significant value beyond the bare schema, though it doesn't detail default values or constraints (e.g., top/skip being optional/nullable).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Retrieves') and resource ('membership roster for a specific team'), distinguishing it from siblings like get_all_teams (which lists teams rather than members) and get_team_area_paths/get_team_iterations (which focus on other team attributes). The title is null, so the description fully carries this burden.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides four bullet points detailing when to use this tool: to see team membership, find administrators, check user assignments, and determine team composition. This gives clear context for selection, though it doesn't explicitly state when not to use it or name alternatives (like querying users directly if available).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_work_itemA
    Retrieves detailed information about one or multiple work items.
    
    Use this tool when you need to:
    - View the complete details of a specific work item
    - Examine the current state, assigned user, and other properties
    - Get information about multiple work items at once
    - Access the full description and custom fields of work items
    
    Args:
        id: The work item ID or a list of work item IDs
        
    Returns:
        Formatted string containing comprehensive information for the
        requested work item(s), including all system and custom fields,
        formatted as markdown with clear section headings
    
ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A4.5/5.0
Behavior3/5

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 describes the return format ('formatted string... as markdown') and scope ('comprehensive information... all system and custom fields'), which is helpful. However, it doesn't mention potential limitations like pagination, rate limits, authentication requirements, or error conditions for invalid IDs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and efficiently organized: purpose statement, usage guidelines bullet points, parameter explanation, and return format description. Every sentence adds value with zero redundant information, and the most important information (purpose and usage) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read operation with no output schema, the description provides excellent context: clear purpose, usage guidelines, parameter semantics, and return format details. The only minor gap is the lack of behavioral constraints (rate limits, auth needs) which would make it fully complete for a tool with no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage (no parameter descriptions in schema), so the description must fully compensate. It provides a clear 'Args' section explaining that 'id' can be either a single integer or a list of integers, adding crucial semantic meaning about single vs. batch retrieval that the schema alone doesn't convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('retrieves detailed information') and resources ('work items'), distinguishing it from siblings like query_work_items (which likely searches/filters) or get_work_item_comments (which focuses on comments). The opening sentence provides a precise, standalone purpose statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides four bullet points detailing when to use this tool ('Use this tool when you need to...'), covering specific scenarios like viewing complete details, examining state/properties, handling multiple items, and accessing descriptions/custom fields. This gives clear contextual guidance without needing to reference alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_work_item_commentsA
    Retrieves all comments associated with a specific work item.

    Use this tool when you need to:
    - Review discussion history about a work item
    - See feedback or notes left by team members
    - Check if specific questions have been answered
    - Understand the context and evolution of a work item
    
    Args:
        id: The work item ID
        project: Optional project name. If not provided, will be 
            determined from the work item.
        
    Returns:
        Formatted string containing all comments on the work item, 
        including author names, timestamps, and content, organized 
        chronologically and formatted as markdown
    
ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
projectNo

TDQS

A4.7/5.0
Behavior4/5

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 effectively describes the tool's behavior: it retrieves comments, includes author names, timestamps, and content, organizes them chronologically, and returns them as a formatted markdown string. This covers key aspects like output format and organization, though it doesn't mention potential limitations like pagination, rate limits, or authentication needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and appropriately sized. It starts with a clear purpose statement, followed by a bulleted list of use cases, then details parameters and returns in labeled sections. Every sentence adds value without redundancy, making it easy to scan and understand.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (2 parameters, no annotations, no output schema), the description is largely complete. It covers purpose, usage, parameters, and return format. However, it doesn't address potential behavioral aspects like error conditions (e.g., invalid ID), pagination for many comments, or authentication requirements, leaving minor gaps in full context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must fully compensate. It provides clear semantics for both parameters: 'id' is described as 'The work item ID', and 'project' is explained as 'Optional project name. If not provided, will be determined from the work item.' This adds essential meaning beyond the bare schema, clarifying the optional nature and default behavior of the 'project' parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('retrieves') and resource ('all comments associated with a specific work item'), making the purpose explicit. It distinguishes this tool from siblings like 'add_work_item_comment' (which creates comments) and 'get_work_item' (which retrieves the work item itself, not its comments), providing specific differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a bulleted list of specific use cases (e.g., 'Review discussion history', 'See feedback or notes', 'Check if specific questions have been answered'), giving explicit guidance on when to use this tool. While it doesn't explicitly mention when not to use it or name alternatives, the detailed context scenarios effectively guide appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_work_item_templateA
    Gets detailed information about a specific work item template.
    
    Use this tool when you need to:
    - View default field values in a template
    - Understand what a template pre-populates in a work item
    - Get complete details about a template
    
    Args:
        team_context: Dictionary containing team information with keys:
            project: Project name (Optional if project_id is provided)
            project_id: Project ID (Optional if project is provided)
            team: Team name (Optional if team_id is provided)
            team_id: Team ID (Optional if team is provided)
        template_id: The ID of the template
        
    Returns:
        Detailed information about the template including default field 
        values
    
ParametersJSON Schema
NameRequiredDescriptionDefault
team_contextYes
template_idYes

TDQS

A4.4/5.0
Behavior3/5

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 describes the tool as a read operation ('Gets'), which implies it's non-destructive and likely read-only, but doesn't explicitly state permission requirements, rate limits, or error behaviors. The description adds some context about what information is returned, but lacks comprehensive behavioral disclosure 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose statement, bulleted usage guidelines, and separate Args/Returns sections. Every sentence earns its place, though the bullet points could be slightly more concise. It's appropriately sized and front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 does a good job covering purpose, usage, and parameter semantics. It explains what information is returned ('Detailed information... including default field values'), though could benefit from more detail about the return structure. For a read-only tool with 2 parameters, it's reasonably complete but not exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must fully compensate. It provides detailed semantics for both parameters: 'team_context' is explained as a dictionary with specific optional keys and their relationships, and 'template_id' is clearly defined. This adds significant meaning beyond the bare schema, fully documenting parameter purposes and usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Gets detailed information') and resource ('about a specific work item template'), distinguishing it from siblings like 'get_work_item_templates' (plural) which likely lists templates rather than providing details for one. The verb 'Gets' is precise and the scope is well-defined.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides three bullet points for when to use this tool ('View default field values', 'Understand what a template pre-populates', 'Get complete details'), offering clear context. While it doesn't explicitly state when not to use it or name alternatives, the specificity of these use cases effectively guides selection among siblings like 'get_work_item_templates' or 'get_work_item_type'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_work_item_templatesA
    Gets a list of all work item templates for a team.
    
    Use this tool when you need to:
    - Find available templates for creating work items
    - Get template IDs for use in other operations
    - Filter templates by work item type
    
    Args:
        team_context: Dictionary containing team information with keys:
            project: Project name (Optional if project_id is provided)
            project_id: Project ID (Optional if project is provided)
            team: Team name (Optional if team_id is provided)
            team_id: Team ID (Optional if team is provided)
        work_item_type: Optional work item type name to filter templates
        
    Returns:
        A formatted table of all templates with names, work item types,
        and descriptions
    
ParametersJSON Schema
NameRequiredDescriptionDefault
team_contextYes
work_item_typeYes

TDQS

A3.9/5.0
Behavior3/5

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 describes the tool as a read operation ('Gets') and mentions filtering and return format, but lacks details on permissions, rate limits, pagination, or error handling. It adds some behavioral context but is incomplete for a tool with nested objects 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, usage guidelines, args, returns) and uses bullet points efficiently. It's appropriately sized but could be slightly more concise by integrating the purpose into the usage section or trimming redundant phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (2 parameters with nested objects, no output schema, no annotations), the description is partially complete. It covers purpose, usage, and parameters well, but lacks details on behavioral aspects like authentication, errors, or output structure beyond a brief mention, leaving gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by detailing both parameters: 'team_context' is explained as a dictionary with specific keys and optionality rules, and 'work_item_type' is described as an optional filter. This adds significant meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'Gets a list of all work item templates for a team' with a specific verb ('Gets') and resource ('work item templates'), and distinguishes it from sibling tools like 'get_work_item_template' (singular) and 'get_work_item_type'. However, it doesn't explicitly differentiate from 'get_work_item_types' or other list-like tools, keeping it from a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage scenarios ('Use this tool when you need to') with three bullet points, including finding templates, getting IDs, and filtering by type. It doesn't mention when not to use it or name specific alternatives among siblings, but the context is clear and helpful for guiding selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_work_item_typeA
    Gets detailed information about a specific work item type.
    
    Use this tool when you need to:
    - Get complete details about a work item type
    - Understand the states and transitions for a work item type
    - Learn about the color and icon for a work item type
    
    Args:
        project: Project ID or project name
        type_name: The name of the work item type
        
    Returns:
        Detailed information about the work item type including states,
        color, icon, and reference name
    
ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes
type_nameYes

TDQS

A4.4/5.0
Behavior3/5

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 this is a read operation ('Gets'), which implies non-destructive behavior, but doesn't mention authentication requirements, rate limits, error conditions, or whether it returns all details in one call. It adds some context about what information is returned, but lacks comprehensive behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose statement, bulleted usage guidelines, and separate Args/Returns sections. Every sentence adds value without redundancy. It's appropriately sized for a tool with two parameters and no output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (2 required parameters, no output schema, no annotations), the description is largely complete. It covers purpose, usage, parameters, and return details. However, it lacks information about authentication, errors, or pagination, which could be relevant for API interactions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must compensate. It explains both parameters: 'project' as 'Project ID or project name' and 'type_name' as 'The name of the work item type', adding meaningful context beyond the schema's basic titles. However, it doesn't provide examples or format specifics (e.g., case sensitivity).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Gets') and resource ('detailed information about a specific work item type'), distinguishing it from siblings like 'get_work_item_types' (plural) which likely lists types, and 'get_work_item' which retrieves individual work items rather than type definitions. The purpose is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly lists three use cases: getting complete details, understanding states/transitions, and learning about color/icon. This provides clear guidance on when to use this tool versus alternatives like 'get_work_item_types' (for listing) or 'get_work_item' (for item data).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_work_item_type_fieldA
    Gets detailed information about a specific field in a work item type.
    
    Use this tool when you need to:
    - Get complete details about a work item field
    - Check allowed values for a field
    - Verify if a field is required or read-only
    
    Args:
        project: Project ID or project name
        type_name: The name of the work item type
        field_name: The reference name or display name of the field
        
    Returns:
        Detailed information about the field including type, allowed 
        values, and constraints
    
ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes
type_nameYes
field_nameYes

TDQS

A3.8/5.0
Behavior2/5

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 the tool 'gets' information, implying a read-only operation, but does not explicitly state whether it requires authentication, has rate limits, or other behavioral traits. The description adds some context about what information is retrieved (e.g., 'allowed values', 'constraints'), but lacks details on error handling, permissions, or response format. For a tool with no annotations, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and appropriately sized. It starts with a clear purpose statement, follows with a bulleted list of usage guidelines, then details parameters and returns. Each sentence earns its place by adding value, with no redundant or wasted information. The front-loaded purpose and organized sections make it easy to scan and understand.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 output schema, no annotations), the description does a decent job but has gaps. It covers purpose, usage, and parameters well, but lacks details on behavioral aspects (e.g., authentication, errors) and does not fully explain the return value beyond a vague statement. Without an output schema, more specifics on the return structure would be helpful. It's adequate but not complete for a tool with no structured support.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must compensate. It provides an 'Args' section that lists and describes all three parameters: 'project: Project ID or project name', 'type_name: The name of the work item type', and 'field_name: The reference name or display name of the field.' This adds clear meaning beyond the schema, explaining what each parameter represents and offering guidance (e.g., 'reference name or display name'), fully compensating for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Gets detailed information about a specific field in a work item type.' It specifies the verb ('gets') and resource ('field in a work item type'), but does not explicitly differentiate it from sibling tools like 'get_work_item_type_fields' (plural) or 'get_work_item_type', which might retrieve broader information. This makes it clear but lacks sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage scenarios in a bulleted list: 'Use this tool when you need to: - Get complete details about a work item field - Check allowed values for a field - Verify if a field is required or read-only.' This gives clear context for when to use the tool. However, it does not mention when not to use it or name alternatives (e.g., using 'get_work_item_type_fields' for multiple fields), so it falls short of a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_work_item_type_fieldsA
    Gets a list of all fields for a specific work item type.
    
    Use this tool when you need to:
    - See what fields are available for a work item type
    - Find required fields for creating work items of a specific type
    - Get reference names for fields to use in queries or updates
    
    Args:
        project: Project ID or project name
        type_name: The name of the work item type
        
    Returns:
        A formatted table of all fields with names, reference names,
        types, and required/read-only status
    
ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes
type_nameYes

TDQS

A4.7/5.0
Behavior4/5

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 effectively describes the tool's behavior by specifying that it returns a 'formatted table' with details like names, reference names, types, and statuses, which clarifies the output format and data structure. However, it lacks details on error handling, rate limits, or authentication needs, leaving some behavioral aspects uncovered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, starting with the core purpose, followed by usage guidelines, parameters, and returns in a structured format. Every sentence adds value without redundancy, making it efficient and easy to parse for an AI agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 2 parameters, no annotations, and no output schema, the description is largely complete, covering purpose, usage, parameters, and return format. However, it could be more comprehensive by including potential errors or constraints, but given the tool's simplicity, it provides sufficient context for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Given a schema description coverage of 0%, the description compensates fully by adding semantic meaning beyond the schema. It explains that 'project' is a 'Project ID or project name' and 'type_name' is 'The name of the work item type', providing clarity on what these parameters represent and how they should be used, which is essential for correct tool invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Gets') and resource ('list of all fields for a specific work item type'), distinguishing it from siblings like 'get_work_item_type_field' (singular) and 'get_work_item_types' (types, not fields). It explicitly defines what it retrieves, avoiding vagueness or tautology.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidelines with a bulleted list of when to use this tool (e.g., 'See what fields are available', 'Find required fields', 'Get reference names'), clearly differentiating it from alternatives like 'get_work_item_type' or 'get_work_item_template' by focusing on field-level metadata. It gives direct context for application without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_work_item_typesA
    Gets a list of all work item types in a project.
    
    Use this tool when you need to:
    - See what work item types are available in a project
    - Get reference names for work item types to use in other operations
    - Plan work item creation by understanding available types
    
    Args:
        project: Project ID or project name
        
    Returns:
        A formatted table of all work item types with names, reference
        names, and descriptions
    
ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes

TDQS

A4.5/5.0
Behavior3/5

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 discloses that the tool returns a 'formatted table' with specific columns (names, reference names, descriptions), which adds useful behavioral context beyond the basic 'get list' purpose. However, it doesn't mention potential limitations like pagination, rate limits, or authentication needs, leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core purpose, followed by usage guidelines and parameter/return details. Each sentence earns its place by adding value—no wasted words. It's appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, 0% schema coverage, and no output schema, the description does an excellent job of explaining purpose, usage, parameters, and return format. It's nearly complete for a read-only list tool, though it could slightly improve by mentioning any constraints (e.g., project existence, access permissions).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must compensate fully. It clearly explains the single parameter 'project' as 'Project ID or project name', adding essential semantics not present in the schema. This fully addresses the parameter meaning and usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Gets a list of all work item types') and resource ('in a project'), distinguishing it from siblings like 'get_work_item_type' (singular) and 'get_work_item_templates'. It explicitly lists what the tool does without being vague or tautological.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage scenarios with bullet points: 'See what work item types are available', 'Get reference names for other operations', and 'Plan work item creation'. It clearly indicates when to use this tool versus alternatives like 'get_work_item_type' (for a single type) or 'create_work_item' (for creation).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_processesA
    Lists all available processes in the organization.
    
    Use this tool when you need to:
    - See what processes are available in your Azure DevOps organization
    - Find process IDs for project creation or configuration
    - Check which process is set as the default
    
    Returns:
        A formatted table of all processes with names, IDs, and 
        descriptions
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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 discloses that the tool returns a formatted table with names, IDs, and descriptions, which is useful behavioral context. However, it doesn't mention potential limitations like pagination, rate limits, or authentication requirements, leaving some gaps for a tool with organizational scope.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose statement followed by bulleted usage guidelines and return format. Every sentence adds value without redundancy, and it's front-loaded with the core functionality. The formatting enhances readability without being verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 0 parameters, no annotations, and no output schema, the description does a good job explaining what the tool does, when to use it, and what it returns. However, for a tool that lists organizational resources, it could benefit from mentioning potential scope or permission considerations to be fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, focusing instead on usage and output. A baseline of 4 is applied since there are no parameters to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific verb 'Lists' and resource 'all available processes in the organization.' It distinguishes from siblings like 'get_process_details' (which retrieves details for a specific process) and 'get_project_process_id' (which focuses on a project's process). The purpose is specific and well-differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides three bullet points detailing when to use this tool: to see available processes, find process IDs for project creation/configuration, and check the default process. This gives clear context for usage without needing to mention alternatives, which is appropriate for a list operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query_work_itemsA
    Searches for work items using Work Item Query Language (WIQL).
    
    Use this tool when you need to:
    - Find work items matching specific criteria
    - Search across projects for related tasks or bugs
    - Create dynamic reports based on work item attributes
    - Identify work items assigned to specific team members
    
    IMPORTANT: WIQL syntax is similar to SQL and allows you to query
    work items based on their fields. The query must follow Azure DevOps
    WIQL syntax rules, with proper SELECT, FROM, and WHERE clauses.
    
    Args:
        query: The WIQL query string (e.g., "SELECT * FROM workitems 
            WHERE [System.State] = 'Active'")
        top: Maximum number of results to return (default: 30)
            
    Returns:
        Formatted string containing detailed information for each matching
        work item, with all fields and values formatted as markdown
    
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
topNo

TDQS

A4.4/5.0
Behavior3/5

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 discloses that the tool returns 'detailed information for each matching work item' as a 'formatted string... as markdown,' which adds behavioral context. However, it lacks details on permissions, rate limits, error handling, or pagination beyond the 'top' parameter, leaving gaps for a search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, usage guidelines, important notes, args, returns) and uses bullet points for readability. It is appropriately sized, though the 'IMPORTANT' section could be more concise. Every sentence adds value, such as explaining WIQL syntax and return format.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (search with WIQL syntax), no annotations, and no output schema, the description does a good job by covering purpose, usage, parameters, and return format. However, it misses some contextual details like authentication requirements, error cases, or how results are ordered, which could enhance completeness for a search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It fully explains both parameters: 'query' as 'The WIQL query string' with an example, and 'top' as 'Maximum number of results to return (default: 30).' This adds essential meaning beyond the bare schema, covering syntax, purpose, and defaults effectively.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Searches for work items using Work Item Query Language (WIQL).' It specifies the verb ('searches'), resource ('work items'), and method ('using WIQL'), distinguishing it from siblings like 'get_work_item' (single item retrieval) or 'get_work_item_comments' (comments-focused).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage scenarios in a bulleted list: 'Find work items matching specific criteria,' 'Search across projects for related tasks or bugs,' etc. It also includes an 'IMPORTANT' section detailing when to use WIQL syntax, though it doesn't explicitly contrast with alternatives like 'get_work_item' (for single items) or 'update_work_item' (for modifications).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_work_itemA
    Modifies an existing work item's fields and properties.
    
    Use this tool when you need to:
    - Change the status or state of a work item
    - Reassign work to a different team member
    - Update the description or details of a requirement
    - Modify effort estimates or priority levels
    - Add or change classification (area/iteration)
    - Update any field supported by the work item type
    
    IMPORTANT: This tool updates the work item directly in Azure DevOps.
    Changes will be immediately visible to all users with access to the
    work item and will trigger any configured notifications or workflows.
    You must specify at least one field to update.
    
    Args:
        id: The ID of the work item to update
        fields: Optional dictionary of field name/value pairs to update
        project: Optional project name or ID
        title: Optional new title for the work item
        description: Optional new description
        state: Optional new state
        assigned_to: Optional user email to assign to
        iteration_path: Optional new iteration path
        area_path: Optional new area path
        story_points: Optional new story points value
        priority: Optional new priority value
        tags: Optional new tags as comma-separated string
        
    Returns:
        Formatted string containing the updated work item details with
        all current field values, formatted as markdown
    
ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
fieldsNo
projectNo
titleNo
descriptionNo
stateNo
assigned_toNo
iteration_pathNo
area_pathNo
story_pointsNo
priorityNo
tagsNo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does well: it discloses that changes are immediate, visible to all users, trigger notifications/workflows, and require at least one field update. It could improve by mentioning authentication needs or error handling, but covers key behavioral traits adequately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, usage guidelines, important notes, parameters, returns). It's appropriately sized but could be slightly more concise by integrating the 'Args' list more seamlessly; however, every sentence adds value, and it's front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (12 parameters, no annotations, no output schema), the description is quite complete: it explains purpose, usage, behavioral impact, all parameters, and return format. It could slightly improve by detailing error cases or authentication, but covers most aspects needed for a mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate fully. It provides detailed semantics for all 12 parameters in the 'Args' section, explaining each parameter's purpose (e.g., 'id: The ID of the work item to update', 'story_points: Optional new story points value'), adding significant value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'modifies an existing work item's fields and properties' with specific examples like changing status, reassigning work, and updating descriptions. It distinguishes from siblings like 'create_work_item' (for new items) and 'get_work_item' (for reading).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides a bulleted list of when to use this tool (e.g., 'Change the status or state', 'Reassign work'), and distinguishes it from alternatives by specifying it's for modifying existing items (vs. 'create_work_item' for new ones). It also includes an 'IMPORTANT' section with usage constraints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.3/5.0
Disambiguation4/5

Most tools have clearly distinct purposes, such as create_work_item vs. update_work_item or get_work_item vs. query_work_items. However, there is some potential overlap between get_work_item_comments and add_work_item_comment, as both deal with comments, but their distinct actions (retrieve vs. add) help differentiate them. The tools generally target specific resources and actions, reducing confusion.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case, such as create_work_item, get_work_item, and update_work_item. The naming is predictable and readable throughout, with no deviations or mixed conventions, making it easy for agents to understand the tool's purpose from its name.

Tool Count4/5

With 21 tools, the count is slightly high but reasonable for the Azure DevOps domain, which involves managing projects, teams, processes, and work items. It covers a broad scope without being excessive, though it might feel heavy compared to simpler servers. Each tool appears to serve a specific function, justifying its inclusion.

Completeness5/5

The tool set provides comprehensive coverage for Azure DevOps operations, including CRUD for work items (create, get, update, query), project and team management, process and template handling, and comment functionality. There are no obvious gaps; it supports full lifecycle management and essential workflows, ensuring agents can perform typical tasks without dead ends.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    This server provides a convenient API for interacting with Azure DevOps services, enabling AI assistants and other tools to manage work items, code repositories, boards, sprints, and more. Built with the Model Context Protocol, it provides a standardized interface for communicating with Azure DevOps
    56
    58
    MIT
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A reference server implementation for the Model Context Protocol that enables AI assistants to interact with Azure DevOps resources and perform operations such as project management, work item tracking, repository operations, and code search programmatically.
    7
  • F
    license
    A
    quality
    D
    maintenance
    A Model Context Protocol server that enables AI assistants to interact with Azure DevOps services, providing capabilities for work item management, project management, and team collaboration through natural language.
    21

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Vortiago/mcp-azure-devops'

If you have feedback or need assistance with the MCP directory API, please join our Discord server