Skip to main content
Glama
Tiberriver256

Azure DevOps MCP Server

Azure DevOps MCP Server

A Model Context Protocol (MCP) server implementation for Azure DevOps, allowing AI assistants to interact with Azure DevOps APIs through a standardized protocol.

Looking for the official server? Microsoft maintains a product-supported Azure DevOps MCP at microsoft/azure-devops-mcp. If you use Azure DevOps Services (cloud), start there.

This community server remains a good fit when you need Azure DevOps Server (on-premises) support — especially older versions that may not work with Microsoft's MCP — or features not yet available in the official server. See Discussion #237 for more context.

Overview

This server implements the Model Context Protocol (MCP) for Azure DevOps, enabling AI assistants like Claude to interact with Azure DevOps resources securely. The server acts as a bridge between AI models and Azure DevOps APIs, providing a standardized way to:

  • Access and manage projects, work items, repositories, and more

  • Create and update work items, branches, and pull requests

  • Execute common DevOps workflows through natural language

  • Access repository content via standardized resource URIs

  • Safely authenticate and interact with Azure DevOps resources

Related MCP server: Azure DevOps MCP Server

Server Structure

The server is structured around the Model Context Protocol (MCP) for communicating with AI assistants. It provides tools for interacting with Azure DevOps resources including:

  • Projects

  • Work Items

  • Repositories

  • Pull Requests

  • Branches

  • Pipelines

Core Components

  • AzureDevOpsServer: Main server class that initializes the MCP server and registers tools

  • Feature Modules: Organized by feature area (work-items, projects, repositories, etc.)

  • Request Handlers: Each feature module provides request identification and handling functions

  • Tool Handlers: Modular functions for each Azure DevOps operation

  • Configuration: Environment-based configuration for organization URL, PAT, etc.

The server uses a feature-based architecture where each feature area (like work-items, projects, repositories) is encapsulated in its own module. This makes the codebase more maintainable and easier to extend with new features.

Getting Started

Prerequisites

  • Node.js (v16+)

  • npm or yarn

  • Azure DevOps account with appropriate access

  • Authentication credentials (see Authentication Guide for details):

    • Personal Access Token (PAT), or

    • Azure Identity credentials, or

    • Azure CLI login

Running from npm (npx)

If you just want to run the published server package, you do not need to clone or build this repository:

npx -y @tiberriver256/mcp-server-azure-devops

Running locally (from source)

From a checkout of this repository:

npm ci
cp .env.example .env   # then edit values
npm run build
npm start              # runs: node dist/index.js

For iterative development (auto-reload):

npm run dev            # runs src/index.ts via ts-node-dev

Usage with Claude Desktop/Cursor AI

To integrate with Claude Desktop or Cursor AI, add one of the following configurations to your configuration file.

Azure Identity Authentication

Be sure you are logged in to Azure CLI with az login then add the following:

{
  "mcpServers": {
    "azureDevOps": {
      "command": "npx",
      "args": ["-y", "@tiberriver256/mcp-server-azure-devops"],
      "env": {
        "AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/your-organization",
        "AZURE_DEVOPS_AUTH_METHOD": "azure-identity",
        "AZURE_DEVOPS_DEFAULT_PROJECT": "your-project-name"
      }
    }
  }
}

Personal Access Token (PAT) Authentication

{
  "mcpServers": {
    "azureDevOps": {
      "command": "npx",
      "args": ["-y", "@tiberriver256/mcp-server-azure-devops"],
      "env": {
        "AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/your-organization",
        "AZURE_DEVOPS_AUTH_METHOD": "pat",
        "AZURE_DEVOPS_PAT": "<YOUR_PAT>",
        "AZURE_DEVOPS_DEFAULT_PROJECT": "your-project-name"
      }
    }
  }
}

Azure DevOps Server (on-prem) requires PAT authentication. Example:

{
  "mcpServers": {
    "azureDevOps": {
      "command": "npx",
      "args": ["-y", "@tiberriver256/mcp-server-azure-devops"],
      "env": {
        "AZURE_DEVOPS_ORG_URL": "https://server:8080/tfs/DefaultCollection",
        "AZURE_DEVOPS_AUTH_METHOD": "pat",
        "AZURE_DEVOPS_PAT": "<YOUR_PAT>",
        "AZURE_DEVOPS_DEFAULT_PROJECT": "your-project-name"
      }
    }
  }
}

For detailed configuration instructions and more authentication options, see the Authentication Guide.

Authentication Methods

This server supports multiple authentication methods for connecting to Azure DevOps APIs. For detailed setup instructions, configuration examples, and troubleshooting tips, see the Authentication Guide.

Supported Authentication Methods

  1. Personal Access Token (PAT) - Simple token-based authentication

  2. Azure Identity (DefaultAzureCredential) - Flexible authentication using the Azure Identity SDK

  3. Azure CLI - Authentication using your Azure CLI login

Example configuration files for each authentication method are available in the examples directory.

Azure DevOps Server (on-prem) supports PAT authentication only. Azure Identity and Azure CLI are supported for Azure DevOps Services.

Environment Variables

For a complete list of environment variables and their descriptions, see the Authentication Guide.

Key environment variables include:

Variable

Description

Required

Default

AZURE_DEVOPS_AUTH_METHOD

Authentication method (pat, azure-identity, or azure-cli) - case-insensitive

No

azure-identity

AZURE_DEVOPS_ORG_URL

Full URL to your Azure DevOps organization or Server collection (e.g., https://server:8080/tfs/DefaultCollection)

Yes

-

AZURE_DEVOPS_PAT

Personal Access Token (for PAT auth)

Only with PAT auth

-

AZURE_DEVOPS_DEFAULT_PROJECT

Default project if none specified

No

-

AZURE_DEVOPS_API_VERSION

API version to use

No

Latest

AZURE_TENANT_ID

Azure AD tenant ID (for service principals)

Only with service principals

-

AZURE_CLIENT_ID

Azure AD application ID (for service principals)

Only with service principals

-

AZURE_CLIENT_SECRET

Azure AD client secret (for service principals)

Only with service principals

-

LOG_LEVEL

Logging level (debug, info, warn, error)

No

info

Troubleshooting Authentication

For detailed troubleshooting information for each authentication method, see the Authentication Guide.

Common issues include:

  • Invalid or expired credentials

  • Insufficient permissions

  • Network connectivity problems

  • Configuration errors

Authentication Implementation Details

For technical details about how authentication is implemented in the Azure DevOps MCP server, see the Authentication Guide and the source code in the src/auth directory.

Available Tools

The Azure DevOps MCP server provides a variety of tools for interacting with Azure DevOps resources. For detailed documentation on each tool, please refer to the corresponding documentation.

User Tools

  • get_me: Get details of the authenticated user (id, displayName, email) (Azure DevOps Services only)

Organization Tools

  • list_organizations: List all accessible organizations (Azure DevOps Services only)

Project Tools

  • list_projects: List all projects in an organization

  • get_project: Get details of a specific project

  • get_project_details: Get comprehensive details of a project including process, work item types, and teams

Repository Tools

  • list_repositories: List all repositories in a project

  • get_repository: Get details of a specific repository

  • get_repository_details: Get detailed information about a repository including statistics and refs

  • get_file_content: Get content of a file or directory from a repository

  • get_repository_tree: List a repository's file tree from any path and depth

  • create_branch: Create a new branch from an existing one

  • create_commit: Commit multiple file changes to a branch using unified diffs or search/replace instructions

Work Item Tools

  • get_work_item: Retrieve a work item by ID

  • create_work_item: Create a new work item

  • update_work_item: Update an existing work item

  • list_work_items: List work items in a project

  • manage_work_item_link: Add, remove, or update links between work items

Search Tools

  • search_code: Search for code across repositories in a project

  • search_wiki: Search for content across wiki pages in a project

  • search_work_items: Search for work items across projects in Azure DevOps

Pipelines Tools

  • list_pipelines: List pipelines in a project

  • get_pipeline: Get details of a specific pipeline

  • list_pipeline_runs: List recent runs for a pipeline with optional filters

  • get_pipeline_run: Get detailed run information and artifact summaries

  • download_pipeline_artifact: Download a single artifact file as text

  • pipeline_timeline: Retrieve the stage and job timeline for a run

  • get_pipeline_log: Retrieve raw or JSON-formatted log content

  • trigger_pipeline: Trigger a pipeline run with customizable parameters

Wiki Tools

  • get_wikis: List all wikis in a project

  • get_wiki_page: Get content of a specific wiki page as plain text

Pull Request Tools

For comprehensive documentation on all tools, see the Tools Documentation.

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for contribution guidelines.

Star History

Star History Chart

License

MIT

Available Tools

46 tools
add_pull_request_commentB

Add a comment to a pull request (repositoryId optional; derived from pullRequestId when omitted)

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoThe status to set for a new thread
contentYesThe content of the comment in markdown
filePathNoThe path of the file to comment on (for new thread on file)
threadIdNoThe ID of the thread to add the comment to
projectIdNoThe ID or name of the project (Default: MyProject)
lineNumberNoThe line number to comment on (for new thread on file)
repositoryIdNoThe ID or name of the repository (optional; derived from pullRequestId when omitted)
pullRequestIdYesThe ID of the pull request
organizationIdNoThe ID or name of the organization (Default: mycompany)
parentCommentIdNoID of the parent comment when replying to an existing comment

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It only states 'Add a comment' without disclosing key behaviors: whether it creates new threads or replies, or side effects like permissions required. The agent lacks insight into comment creation mechanics.

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 a single, front-loaded sentence with no waste. However, it could benefit from slightly more structure, e.g., separating threading and file comment modes.

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

Completeness2/5

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

Given 10 parameters and no output schema or annotations, the description is too minimal. It omits essential context about thread creation, file commenting, status usage, and reply behavior, leaving an AI agent underinformed for correct usage.

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

Parameters3/5

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

Schema coverage is 100%, so description adds only minimal value: repeating that repositoryId can be derived. It does not explain complex parameters like threadId vs filePath/lineNumber, but baseline is 3 due to full schema descriptions.

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 action ('Add a comment') and the resource ('pull request'), with a useful note about repositoryId derivation. It distinguishes from sibling tools like create_pull_request and get_pull_request_comments.

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

Usage Guidelines3/5

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

The description offers a hint about repositoryId being optional but does not specify when to use this tool versus alternatives like update_pull_request or how to handle threading vs file comments. No explicit when-not or alternative references.

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

create_branchB

Create a new branch from an existing one

ParametersJSON Schema
NameRequiredDescriptionDefault
newBranchYesName of the new branch to create (without "refs/heads/", e.g., "feature/my-branch")
projectIdNoThe ID or name of the project (Default: MyProject)
repositoryIdYesThe ID or name of the repository
sourceBranchYesName of the branch to copy from (without "refs/heads/", e.g., "master")
organizationIdNoThe ID or name of the organization (Default: mycompany)

TDQS

B3.1/5.0
Behavior3/5

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

No annotations provided, so description carries burden. Main description is minimal, but input schema description adds useful tips (e.g., plain branch names, fully-qualified refs for PRs). Does not disclose failure modes, permissions, or side effects. Adequate with 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?

Main description is a single clear sentence. Input schema description adds useful context without excessive verbosity. Overall, concise and well-structured.

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

Completeness2/5

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

No output schema and no description of return values. For a creation tool, the agent needs to know what happens on success (e.g., branch object or acknowledgment). Lacks completeness despite schema tips.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The schema descriptions explain defaults, required fields, and formatting examples. Main description adds no parameter info, but schema is rich enough.

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 'Create a new branch from an existing one' clearly states the action and the resource (branch). It distinguishes from other tools like create_commit or create_pull_request. However, it does not explicitly mention the version control context, though siblings imply it.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives. Siblings like create_commit or create_pull_request are related but no comparison or exclusion criteria are provided.

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

create_commitA

Create a commit on an existing branch using file changes.

  • Provide plain branch names (no "refs/heads/").

  • ⚠️ Each file path may appear only once per commit request—combine all edits to a file into a single change entry.

  • Prefer multiple commits when you have sparse or unrelated edits; smaller focused commits keep review context clear.

🎯 RECOMMENDED: Use the SEARCH/REPLACE format (much easier, no line counting!).

Option 1: SEARCH/REPLACE format (EASIEST) Simply provide the exact text to find and replace:

{
  "changes": [{
    "path": "src/api/services/function-call.ts",
    "search": "return axios.post(apiUrl, payload, requestConfig);",
    "replace": "return axios.post(apiUrl, payload, requestConfig).then(r => { processResponse(r); return r; });"
  }]
}

The server fetches the file, performs the replacement, and generates the diff automatically. No line counting, no hunk headers, no context lines needed!

Option 2: UNIFIED DIFF format (Advanced) If you prefer full control, provide complete unified diffs:

  • Each patch MUST have complete hunk headers: @@ -oldStart,oldLines +newStart,newLines @@

  • CRITICAL: Every @@ marker MUST include line numbers. Do NOT use @@ without line ranges.

  • Include 3-5 context lines before and after changes.

  • For deletions: --- a/filepath and +++ /dev/null

  • For additions: --- /dev/null and +++ b/filepath

Example unified diff:

{
  "changes": [{
    "patch": "diff --git a/file.yaml b/file.yaml\n--- a/file.yaml\n+++ b/file.yaml\n@@ -4,7 +4,7 @@ spec:\n spec:\n   type: ClusterIP\n   ports:\n-    - port: 8080\n+    - port: 9090\n       targetPort: http\n"
  }]
}
ParametersJSON Schema
NameRequiredDescriptionDefault
changesYesList of file changes as either unified git diffs OR search/replace pairs
projectIdNoThe ID or name of the project (Default: MyProject)
branchNameYesThe branch to commit to (without "refs/heads/", e.g., "codex/test2-delete-main-py")
repositoryIdYesThe ID or name of the repository
commitMessageYesCommit message
organizationIdNoThe ID or name of the organization (Default: mycompany)

TDQS

A4.7/5.0
Behavior4/5

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

No annotations provided, so description bears full burden. It describes that the server fetches files for SEARCH/REPLACE and generates diffs automatically, and warns about parsing failures for missing line numbers in hunks. However, it does not explicitly state that changes are committed immediately or mention rollback possibilities. Nonetheless, the behavior is adequately transparent for a commit operation.

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?

Description is fairly long but well-organized with headers, bullet points, and code blocks. It front-loads key information. Some redundancy exists (e.g., line number warning appears in both description and parameter descriptions), but overall structure is clear and effective.

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 6 parameters (4 required), no output schema, and multiple input formats, the description covers all essential aspects: purpose, input options (with examples), constraints, and usage tips. It is comprehensive enough for an agent to correctly invoke the 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 coverage is 100%, but description adds substantial value by explaining the two change formats (search/replace vs patch), clarifying that path is optional for patch but required for search/replace, and providing detailed examples. It also adds constraints like unique file paths per commit, which are not in 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 explicitly states 'Create a commit on an existing branch using file changes.' It clearly distinguishes from sibling tools like create_branch and create_pull_request by focusing only on committing changes to an existing branch.

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?

Provides explicit guidance on when to use this tool (committing to existing branches), contrasts with other operations, recommends using the SEARCH/REPLACE format for ease, advises preferring multiple commits for sparse edits, and warns that each file path may appear only once per commit.

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

create_pull_requestB

Create a new pull request, including reviewers, linked work items, and optional tags

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoList of tags to apply to the pull request
titleYesThe title of the pull request
isDraftNoWhether the pull request should be created as a draft
projectIdNoThe ID or name of the project (Default: MyProject)
reviewersNoList of reviewer email addresses or IDs
descriptionNoThe description of the pull request (markdown is supported)
repositoryIdYesThe ID or name of the repository
workItemRefsNoList of work item IDs to link to the pull request
sourceRefNameYesThe source branch name (e.g., refs/heads/feature-branch)
targetRefNameYesThe target branch name (e.g., refs/heads/main)
organizationIdNoThe ID or name of the organization (Default: mycompany)
additionalPropertiesNoAdditional properties to set on the pull request

TDQS

B3.2/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 creation and optional elements but omits important details like side effects (e.g., triggering builds), permission requirements, or what the response contains. For a creation tool, more transparency is needed.

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 a single sentence front-loaded with the core purpose. Every part is functional, no wasted words.

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

Completeness2/5

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

For a tool with 12 parameters, no output schema, and no annotations, the description is too brief. It fails to explain return values, success indicators, or important nuances of the parameters (e.g., format of reviewers). The description is inadequate for full understanding.

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

Parameters3/5

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

The input schema has 100% description coverage, so each parameter is documented. The description adds minimal extra meaning beyond the schema, only reinforcing 'reviewers, linked work items, and optional tags'. Baseline 3 is appropriate.

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 'Create a new pull request' and specifies included elements like reviewers, linked work items, and tags. However, it does not explicitly differentiate from sibling tool 'update_pull_request' which modifies existing PRs.

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

Usage Guidelines3/5

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

The description implies when to use (to create a new PR) but provides no explicit guidance on when not to use it (e.g., for updates, use update_pull_request) or alternative tools. The context is clear but lacks exclusions.

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

create_wikiC

Create a new wiki in the project

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe name of the new wiki
typeNoType of wiki to create (projectWiki or codeWiki)projectWiki
projectIdNoThe ID or name of the project (Default: MyProject)
mappedPathNoFolder path inside repository which is shown as Wiki (only for codeWiki)/
repositoryIdNoThe ID of the repository to associate with the wiki (required for codeWiki)
organizationIdNoThe ID or name of the organization (Default: mycompany)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided; description is minimal and does not disclose behavioral traits such as required permissions, side effects, or expected behavior for different wiki types.

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?

Single sentence, no redundancy, efficiently conveys the core purpose.

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

Completeness2/5

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

No output schema; description does not mention return value. With 6 parameters and two wiki types, more detail on usage context and parameter relationships is needed for completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents parameters; description adds no additional meaning beyond the schema, so baseline score applies.

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 'Create a new wiki in the project' clearly states the action (create) and the resource (wiki) with scope (in the project), but does not explicitly differentiate from sibling tools like create_wiki_page or get_wikis.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like create_wiki_page or when to use projectWiki vs codeWiki types; lacks context for selection.

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

create_wiki_pageA

Create a new page in a wiki. If the page already exists at the specified path, it will be updated.

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiIdYesThe ID or name of the wiki
commentNoOptional comment for the creation or update
contentYesThe content for the new wiki page in markdown format
pagePathNoPath of the wiki page to create. If the path does not exist, it will be created. Defaults to the wiki root (/). Example: /ParentPage/NewPage/
projectIdNoThe ID or name of the project (Default: MyProject)
organizationIdNoThe ID or name of the organization (Default: mycompany)

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the key behavioral trait (upsert) but does not mention permissions, rate limits, or detailed effects on existing content. Adequate but not comprehensive.

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?

Two sentences with no wasted words. Front-loaded with the core action, then clarifies the upsert behavior. Efficiently packed.

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 creation tool with no output schema, the description adequately covers the core behavior and default path. Could include prerequisites (e.g., wiki must exist) or response details, but overall sufficient.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description adds no extra meaning beyond what the schema provides, meeting the baseline for a high-coverage tool.

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 action 'Create' and the resource 'wiki page', and distinguishes itself from siblings like 'create_wiki' (creates the wiki itself) and 'update_wiki_page' by noting that it updates if the page already exists.

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?

It describes the upsert behavior ('If the page already exists, it will be updated'), providing clear context for when to use this tool versus an exclusive update tool. However, it does not explicitly state when not to use it or name alternatives like 'update_wiki_page'.

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

create_work_itemC

Create a new work item

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTags to add to the work item
titleYesThe title of the work item
areaPathNoThe area path for the work item
parentIdNoThe ID of the parent work item to create a relationship with
priorityNoThe priority of the work item
projectIdNoThe ID or name of the project (Default: MyProject)
assignedToNoThe email or name of the user to assign the work item to
descriptionNoWork item description in HTML format. Multi-line text fields (i.e., System.History, AcceptanceCriteria, etc.) must use HTML format. Do not use CDATA tags.
workItemTypeYesThe type of work item to create (e.g., "Task", "Bug", "User Story")
iterationPathNoThe iteration path for the work item
organizationIdNoThe ID or name of the organization (Default: mycompany)
additionalFieldsNoAdditional fields to set on the work item. Multi-line text fields (i.e., System.History, AcceptanceCriteria, etc.) must use HTML format. Do not use CDATA tags.

TDQS

C2.8/5.0
Behavior2/5

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

No annotations provided. The description only says 'Create a new work item' and does not disclose behavioral traits such as permissions, idempotency, or side effects.

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

Conciseness3/5

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

The description is a single sentence, which is concise but lacks structure. It is front-loaded but does not provide additional details beyond the bare minimum.

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

Completeness2/5

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

With 12 parameters, no output schema, and no annotations, the description is insufficient. It does not explain return values, error conditions, or when to use the tool, leaving the agent under-informed.

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

Parameters3/5

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

Schema description coverage is 100%, so all 12 parameters are already described in the schema. The tool description adds no extra meaning beyond the schema, meeting the baseline.

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 states 'Create a new work item', which is a specific verb and resource. It clearly indicates the action, but does not differentiate from sibling tools like 'update_work_item' or 'manage_work_item_link'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. There are multiple work-item-related siblings (e.g., update_work_item, manage_work_item_link), and the description provides no context for selection.

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

download_pipeline_artifactB

Download a file from a pipeline run artifact and return its textual content

ParametersJSON Schema
NameRequiredDescriptionDefault
runIdYesPipeline run identifier
projectIdNoThe ID or name of the project (Default: MyProject)
pipelineIdNoOptional guard; validates the run belongs to this pipeline
artifactPathYesPath to the desired file inside the artifact (format: <artifactName>/<path/to/file>)

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavioral traits but only states it returns textual content. It does not mention potential issues with binary files, file size limits, required permissions, or what happens if the artifact does not exist. The read-only nature is implied but not explicit.

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 a single sentence of 13 words that directly conveys the core functionality without any extraneous information. It is efficiently front-loaded and every word earns its place.

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

Completeness2/5

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

Given the absence of an output schema and annotations, the description is insufficiently complete. It fails to specify the return format for textual content, error handling (e.g., file not found), limitations (e.g., only textual files), or any side effects. For a tool with 4 parameters and no structured metadata, the description should provide more context.

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

Parameters3/5

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

The input schema has 100% description coverage, with all parameters well-documented (e.g., artifactPath format, pipelineId guard). The description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool downloads a file from a pipeline run artifact and returns its textual content. It uses specific verb-resource language and distinguishes itself from siblings like get_file_content (repository files) and get_pipeline_log (logs).

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

Usage Guidelines3/5

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

The description implies the tool is for retrieving file content from pipeline artifacts, but provides no explicit guidance on when to use it over alternatives (e.g., get_pipeline_log for logs, get_file_content for repo files) or when not to use it. No exclusions or prerequisites are mentioned.

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

get_all_repositories_treeB

Displays a hierarchical tree view of files and directories across multiple Azure DevOps repositories within a project, based on their default branches

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNoMaximum depth to traverse within each repository (0 = unlimited)
patternNoFile pattern (wildcard characters allowed) to filter files by within each repository
projectIdNoThe ID or name of the project (Default: MyProject)
organizationIdNoThe ID or name of the Azure DevOps organization (Default: mycompany)
repositoryPatternNoRepository name pattern (wildcard characters allowed) to filter which repositories are included

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, and the description lacks behavioral details. It does not state whether the operation is read-only, what the performance implications might be (especially with depth and multiple repos), or any error conditions. The description is too minimal to inform the agent of behavioral traits.

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 a single sentence that is front-loaded with the key action and resource. It is concise and contains no unnecessary words.

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

Completeness2/5

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

Given the tool's complexity (multiple repositories, depth, pattern), the description is insufficient. It lacks details about output format, pagination, how default branches are determined, and what happens when a repository has no default branch. No output schema is provided to compensate.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are documented. However, the description adds no additional semantic value beyond the schema descriptions. It does not clarify parameter interactions or default behavior nuances.

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 identifies the tool's function: displaying a hierarchical tree view across multiple repositories within a project, based on default branches. It implicitly distinguishes from the sibling 'get_repository_tree' by specifying 'multiple repositories' and 'across repositories'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'get_repository_tree'. There is no mention of prerequisites, such as repository permissions or branch existence, or when not to use this tool.

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

get_file_contentC

Get content of a file or directory from a repository

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoPath to the file or folder/
versionNoThe version (branch, tag, or commit) to get content from
projectIdNoThe ID or name of the project (Default: MyProject)
versionTypeNoType of version specified (branch, commit, or tag)
repositoryIdYesThe ID or name of the repository
organizationIdNoThe ID or name of the organization (Default: mycompany)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so the description must disclose behavioral traits. It only states 'Get content', omitting details like whether content is returned raw or encoded, how directories are handled, or authentication requirements.

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?

Single sentence, concise and to the point. However, it lacks structure and does not front-load critical information such as versioning or directory behavior.

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

Completeness2/5

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

With 6 parameters, no output schema, and no annotations, the description is insufficient. It does not explain return format, behavior for directories vs files, or error conditions.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents parameters. The description adds minimal context (e.g., 'file or directory') but does not explain parameter semantics like version or versionType.

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 action ('Get content') and the resource ('a file or directory from a repository'). It distinguishes from siblings like get_repository (metadata) and get_repository_tree (structure), though not explicitly.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. For example, it does not clarify when to use get_repository_tree instead for browsing structure.

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

get_meA

Get details of the authenticated user (id, displayName, email)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so the description carries full burden. It implies a read-only operation ('Get details') but does not disclose authentication requirements, rate limits, or potential side effects. For a simple read tool, it is minimally adequate.

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 a single concise sentence that front-loads the verb and purpose. Every word serves a purpose with no wasted space.

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 output schema and a simple tool, the description adequately lists the returned fields (id, displayName, email). It could mention possible additional fields or error conditions, but it is complete enough for typical 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 tool has zero parameters and input schema coverage is 100%. Per guidelines, 0 params yields a baseline of 4. The description adds no parameter information, which is appropriate as none are needed.

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 retrieves details of the authenticated user, listing specific fields (id, displayName, email). The verb 'Get' and resource 'authenticated user' are specific and distinct from siblings, which focus on repositories, pull requests, etc.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool vs alternatives, but the purpose is self-evident as there are no other user info tools among siblings. The description does not provide when-not or alternative scenarios.

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

get_pipelineC

Get details of a specific pipeline

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoThe ID or name of the project (Default: MyProject)
pipelineIdYesThe numeric ID of the pipeline to retrieve
pipelineVersionNoThe version of the pipeline to retrieve (latest if not specified)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided. The description implies a read-only operation but does not disclose behavior beyond that—no mention of error handling, permissions, rate limits, or what happens if the pipeline does not exist.

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?

Single sentence, no wasted words. Properly front-loaded with purpose.

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

Completeness2/5

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

With 3 parameters, no output schema, and no annotations, the description lacks sufficient context. It does not specify return format, error cases, or version semantics, 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.

Parameters3/5

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

Input schema covers all three parameters with descriptions. The tool description adds no additional semantics beyond the schema—e.g., does not explain how pipelineVersion affects the result or what 'details' means for the response.

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 'Get details of a specific pipeline' clearly states the verb and resource. It distinguishes from siblings like get_pipeline_log or get_pipeline_run, but does not elaborate on what 'details' encompass.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like list_pipelines or get_pipeline_run. No mention of prerequisites, context, or when not to use.

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

get_pipeline_logC

Retrieve a specific pipeline log using the timeline log identifier

ParametersJSON Schema
NameRequiredDescriptionDefault
logIdYesLog identifier from the timeline record
runIdYesPipeline run identifier
formatNoOptional format for the log contents (plain or json)
endLineNoOptional ending line number for the log segment
projectIdNoThe ID or name of the project (Default: MyProject)
startLineNoOptional starting line number for the log segment
pipelineIdNoOptional pipeline numeric ID for reference only

TDQS

C2.9/5.0
Behavior2/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 disclosing behavior. It only says 'retrieve', which implies a read operation, but does not discuss side effects, handling of optional parameters, error scenarios, or response format. The description is too minimal to be transparent.

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 a single, clear sentence that directly conveys the tool's purpose without any extraneous words. Every word earns its place.

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

Completeness2/5

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

Given the tool has 7 parameters and no output schema or annotations, the description is too brief to be complete. It does not provide context about return values, how the parameters interplay, or how this fits into the pipeline log workflow. The schema helps but the description itself leaves gaps.

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

Parameters3/5

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

Since schema description coverage is 100%, each parameter is already documented clearly in the schema (e.g., logId: 'Log identifier from the timeline record'). The tool description adds no additional semantics or usage tips beyond that, meeting the baseline of 3.

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 retrieves a pipeline log using a timeline log identifier, providing a specific verb and resource. However, it does not differentiate from sibling tools like pipeline_timeline or get_pipeline_run, which may also deal with logs, so it could be more distinctive.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as pipeline_timeline or get_pipeline_run. It does not mention prerequisites, limitations, or usage context, leaving the agent without direction.

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

get_pipeline_runB

Get details for a specific pipeline run

ParametersJSON Schema
NameRequiredDescriptionDefault
runIdYesPipeline run identifier
projectIdNoThe ID or name of the project (Default: MyProject)
pipelineIdNoOptional guard; validates the run belongs to this pipeline

TDQS

B3.1/5.0
Behavior2/5

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

No annotations exist, yet the description does not disclose whether the operation is read-only, what happens if the run doesn't exist, or any side effects. The behavioral information is minimal.

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 a single sentence with no extra words, effectively communicating the core purpose. It is concise but could benefit from slight elaboration on what 'details' entails.

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

Completeness2/5

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

Without an output schema, the description fails to clarify what information is returned (e.g., status, parameters). The optional guard parameter pipelineId could be better explained in context. The description is incomplete for effective use.

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

Parameters3/5

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

All parameters are fully described in the input schema (100% coverage), so the description adds no additional meaning. Baseline of 3 is appropriate.

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 uses a specific verb 'Get' and resource 'details for a specific pipeline run', clearly distinguishing from sibling tools like list_pipeline_runs, get_pipeline_log, and get_pipeline.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as list_pipeline_runs or get_pipeline_log. The context of use is implied but not explicit.

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

get_projectC

Get details of a specific project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoThe ID or name of the project (Default: MyProject)
organizationIdNoThe ID or name of the organization (Default: mycompany)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, authentication requirements, or potential side effects. The description is too minimal to compensate for missing annotations.

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 a single, clear sentence with no unnecessary words. It is concise, though could benefit from slightly more detail without becoming verbose.

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

Completeness2/5

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

Given the low complexity and presence of a similar sibling tool ('get_project_details'), the description is incomplete as it does not differentiate the two tools. Without an output schema, more details on return values would be helpful.

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

Parameters3/5

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

The input schema covers both parameters with descriptions, and schema_description_coverage is 100%. The description adds no additional meaning beyond the schema, achieving the baseline of 3.

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 'Get details of a specific project' clearly indicates the tool retrieves project information. However, there is a sibling tool 'get_project_details' which may overlap in function, and the description does not distinguish between them, slightly reducing clarity.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'get_project_details' or 'list_projects'. No context on prerequisites or use cases is given.

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

get_project_detailsB

Get comprehensive details of a project including process, work item types, and teams

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoThe ID or name of the project (Default: MyProject)
includeTeamsNoInclude associated teams in the project result
includeFieldsNoInclude field information for work item types
includeProcessNoInclude process information in the project result
organizationIdNoThe ID or name of the organization (Default: mycompany)
expandTeamIdentityNoExpand identity information in the team objects
includeWorkItemTypesNoInclude work item types and their structure

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided. Description does not disclose any behavioral traits (e.g., rate limits, auth needs, side effects) beyond the basic 'get' operation. Lacks depth.

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

Conciseness4/5

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

One sentence, no fluff. However, could be more structured by explicitly mapping to parameters. Front-loaded but not optimized for scanability.

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

Completeness2/5

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

Given 7 optional parameters and no output schema, description is too brief. Does not explain return structure, behavior, or dependencies among parameters.

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

Parameters3/5

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

Schema coverage is 100% with good parameter descriptions. The tool description lists categories (process, work item types, teams) that correspond to boolean parameters, adding marginal value beyond 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?

Clear verb 'Get' and specific resource 'project details' with listed aspects (process, work item types, teams). Distinguishes from sibling 'get_project' which likely provides basic info.

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

Usage Guidelines2/5

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

No guidance on when to use this detailed version vs simpler siblings like 'get_project'. No exclusion criteria or context for selection.

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

get_pull_requestA

Get a pull request by ID (no repositoryId required; best for Azure DevOps Server where PR IDs are project-scoped)

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesThe ID or name of the project
pullRequestIdYesThe ID of the pull request
organizationIdNoThe ID or name of the organization (Default: mycompany)

TDQS

A3.9/5.0
Behavior2/5

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

No annotations provided, and description only states basic action without disclosing behavior like error handling, permissions, or response format. Minimal transparency beyond schema.

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?

Single sentence, front-loaded with action, no superfluous information. Highly efficient.

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?

No output schema, and description does not mention return value structure. For a retrieval tool, response format is important. However, sibling context helps differentiate.

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 coverage is 100% with descriptions for all three parameters. Description adds context by clarifying pullRequestId is project-scoped, providing meaning beyond 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?

Description clearly states 'Get a pull request by ID' and distinguishes from siblings by noting no repositoryId required and project-scoped ID, differentiating from list_pull_requests and other pull request tools.

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?

Explicitly states usage context: 'no repositoryId required; best for Azure DevOps Server where PR IDs are project-scoped', guiding when to use this tool over alternatives that may require repositoryId.

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

get_pull_request_changesA

Get the files changed in a pull request, their unified diffs, source/target branch names, and the status of policy evaluations

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoThe ID or name of the project (Default: MyProject)
repositoryIdYesThe ID or name of the repository
pullRequestIdYesThe ID of the pull request
organizationIdNoThe ID or name of the organization (Default: mycompany)

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It only states the tool 'gets' data, implying a read operation, but does not explicitly confirm it is read-only, mention authorization needs, rate limits, or describe error behavior. This is insufficient for full transparency.

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 a single sentence that fully conveys the tool's purpose without any extraneous information. It is front-loaded with the core action and details the key outputs, earning its place with no waste.

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 four parameters and no output schema, the description lists the returned data (diffs, branches, policy status) but omits detail on output format, pagination, error handling, or large data scenarios. While helpful, it is not fully complete for an agent to handle all cases.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents all four parameters. The description adds no further detail about parameter semantics beyond what the schema provides. Baseline score of 3 is appropriate as no extra value is added.

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 uses a specific verb 'Get' and clearly identifies the resource ('files changed in a pull request') and the specific data returned (unified diffs, branch names, policy evaluations). It effectively distinguishes this tool from siblings like get_pull_request, which likely returns metadata only.

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 implies when to use the tool (when needing diffs, branches, policy status) but does not explicitly state when not to use it or provide direct comparisons to alternatives. The context from the sibling list helps, but the description itself lacks explicit guidance.

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

get_pull_request_checksA

Summarize the latest status checks and policy evaluations for a pull request.

  • Surfaces pipeline and run identifiers so you can jump straight to the blocking validation.

  • Pair with pipeline tools (e.g., get_pipeline_run, pipeline_timeline) to inspect failures in depth.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoThe ID or name of the project (Default: MyProject)
repositoryIdYesThe ID or name of the repository
pullRequestIdYesThe ID of the pull request
organizationIdNoThe ID or name of the organization (Default: mycompany)

TDQS

A4.2/5.0
Behavior3/5

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

The description explains the tool summarizes and surfaces identifiers but does not explicitly state that it is read-only or non-destructive. With no annotations, the description carries the full burden, and while the behavior is implied, it lacks explicit safety 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 two sentences and a bullet point, front-loaded with purpose, and every sentence adds value without repetition or filler.

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?

The description explains the output is a summary of status checks and surfaces pipeline/run identifiers, which is adequate for a read tool. However, without an output schema, more detail on the returned fields would improve completeness.

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

Parameters3/5

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

Input schema has 100% parameter description coverage, so baseline is 3. The description does not add parameter-specific meaning beyond what the schema already provides (e.g., what projectId or pullRequestId mean).

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 'summarize[s] the latest status checks and policy evaluations for a pull request,' using a specific verb and resource. This differentiates it from siblings like get_pull_request (gets the PR itself) and get_pull_request_changes.

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 guides pairing with pipeline tools (e.g., get_pipeline_run, pipeline_timeline) to inspect failures, indicating when to use this tool as an overview and when to use alternatives for deeper inspection.

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

get_pull_request_commentsC

Get comments from a specific pull request

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoMaximum number of threads/comments to return
threadIdNoThe ID of the specific thread to get comments from
projectIdNoThe ID or name of the project (Default: MyProject)
repositoryIdYesThe ID or name of the repository
pullRequestIdYesThe ID of the pull request
includeDeletedNoWhether to include deleted comments
organizationIdNoThe ID or name of the organization (Default: mycompany)

TDQS

C2.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 must disclose behavioral traits. It only states 'get comments' without mentioning important behaviors like pagination (top parameter), inclusion of deleted comments, or the ability to filter by threadId. The schema contains these details, but the description does not highlight them.

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

Conciseness3/5

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

The description is very concise (6 words), but brevity comes at the expense of completeness. While it is not verbose, it could include more detail without becoming excessively long.

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

Completeness2/5

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

Given that there is no output schema and the tool has 7 parameters (2 required), the description should explain what the tool returns (e.g., list of comments) and possibly the structure. It does not, nor does it clarify the role of optional parameters like threadId or includeDeleted.

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

Parameters3/5

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

The input schema has 100% description coverage, so the parameters are already documented. The description adds no extra meaning beyond the schema, earning a baseline score of 3.

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 action (get) and resource (comments from a specific pull request). It differentiates from siblings like add_pull_request_comment (write) and get_pull_request (PR details). However, it could be more precise by noting that it can also retrieve comments from a specific thread.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool over alternatives such as get_pull_request_changes or get_pull_request_checks. The description lacks context on when this tool is appropriate.

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

get_repositoryB

Get details of a specific repository

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoThe ID or name of the project (Default: MyProject)
repositoryIdYesThe ID or name of the repository
organizationIdNoThe ID or name of the organization (Default: mycompany)

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description should disclose behaviors like authentication requirements, error handling, or scope. It simply states 'get details', offering minimal behavioral context.

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

Conciseness5/5

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

The description is one concise sentence with no superfluous information. It is appropriately front-loaded and efficient.

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 simple tool (3 params, no output schema), the description is minimally sufficient but lacks guidance on usage and behavioral traits, making it incomplete for complex decision-making.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description adds no extra semantic value beyond what is in the 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 retrieves details for a specific repository. However, it does not differentiate from a nearly identical sibling 'get_repository_details', which could cause confusion.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'get_repository_details' or 'list_repositories'. The agent receives no context for selection.

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

get_repository_detailsC

Get detailed information about a repository including statistics and refs

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoThe ID or name of the project (Default: MyProject)
refFilterNoOptional filter for refs (e.g., "heads/" or "tags/")
branchNameNoName of specific branch to get statistics for (if includeStatistics is true)
includeRefsNoWhether to include repository refs
repositoryIdYesThe ID or name of the repository
organizationIdNoThe ID or name of the organization (Default: mycompany)
includeStatisticsNoWhether to include branch statistics

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, and the description lacks any behavioral details such as read-only nature, permission requirements, rate limits, or response handling. It only repeats the purpose without transparency.

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?

Single sentence, succinct and front-loaded. No unnecessary words, but could benefit from slight expansion for clarity on optional features.

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

Completeness2/5

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

With 7 parameters and no output schema, the description omits key details like default values for projectId and organizationId, and does not explain the return structure. Incomplete given the complexity.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are well-documented in the schema. The description mentions statistics and refs, aligning with includeStatistics and includeRefs, but adds little beyond the schema. Baseline 3 is appropriate.

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 detailed repository information including statistics and refs. It distinguishes from simpler sibling 'get_repository' by implying more detail. However, it could be more precise about the optional nature of statistics and refs.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'get_repository' or other repository tools. The description only states functionality without providing context for selection.

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

get_repository_treeB

Displays a hierarchical tree view of files and directories within a single repository starting from an optional path

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoPath within the repository to start from/
depthNoMaximum depth to traverse (0 = unlimited)
projectIdNoThe ID or name of the project (Default: MyProject)
repositoryIdYesThe ID or name of the repository
organizationIdNoThe ID or name of the organization (Default: mycompany)

TDQS

B3.4/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 full responsibility. It only states 'displays' (a read operation) but discloses no behavioral traits such as authentication needs, rate limits, or side effects. Lacks detail on tree structure representation or depth constraints beyond the schema.

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 a single concise sentence that front-loads the essential purpose. No extraneous words, and the structure is efficient for an agent to parse.

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

Completeness2/5

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

With 5 parameters, no output schema, and no annotations, the description is too brief. It does not explain the return format, pagination, or how the tree is represented (e.g., nested JSON). Depth limits (0-10) are only in the schema, not described. Incomplete for a moderately complex tool.

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

Parameters3/5

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

The input schema has 100% description coverage for all parameters. The description adds minimal extra value by mentioning 'starting from an optional path' but does not elaborate on other parameters like depth or the default values. Baseline 3 is appropriate given high schema coverage.

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 displays a hierarchical tree view of files/directories within a single repository from an optional path. It uses specific verbs and resource terms, and implicitly distinguishes from sibling tools like get_file_content and get_all_repositories_tree.

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

Usage Guidelines3/5

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

The description implies usage for a single repository but does not explicitly state when to use this tool over alternatives like get_all_repositories_tree, nor provides when-not-to-use guidance. No explicit context for exclusion.

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

get_wiki_pageB

Get the content of a wiki page

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiIdYesThe ID or name of the wiki
pagePathYesThe path of the page within the wiki
projectIdNoThe ID or name of the project (Default: MyProject)
organizationIdNoThe ID or name of the organization (Default: mycompany)

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the full burden for behavioral disclosure. It only states the action without revealing whether the operation is read-only, what happens on error (e.g., page not found), or any access control requirements.

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 a single, front-loaded sentence that wastes no words. It is as concise as possible while still conveying the primary purpose.

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 moderate complexity (4 parameters, 2 required, with defaults) and no output schema, the description should at least hint at return value or behavior. It does not mention what content is returned or whether it's raw HTML/markdown. This is a gap, but the schema fills some gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond the schema, which already documents each parameter's purpose and defaults for organizationId and projectId.

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 'Get the content of a wiki page' uses a specific verb ('get') and resource ('wiki page content'), clearly distinguishing it from sibling tools like create_wiki_page, update_wiki_page, list_wiki_pages, and get_wikis.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as list_wiki_pages (to list pages) or get_wikis (to list wikis). The description does not mention context like prerequisites or scope.

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

get_wikisC

Get details of wikis in a project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoThe ID or name of the project (Default: MyProject)
organizationIdNoThe ID or name of the organization (Default: mycompany)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided. Description does not disclose whether the operation is read-only, what authentication is needed, or any rate limits. It also fails to describe what 'details' entails.

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?

Single sentence with no waste. However, it lacks structure and could be more informative within its brevity.

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

Completeness2/5

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

No output schema exists, but description does not explain what is returned (e.g., list of wikis with metadata). With two optional parameters and no required fields, the description should clarify expected output.

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

Parameters3/5

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

Input schema descriptions fully cover both parameters, including defaults. Description adds no additional meaning beyond the schema, so baseline score of 3 applies.

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?

Description clearly specifies verb 'get' and resource 'wikis' with scope 'in a project'. However, 'details' is vague and does not distinguish from sibling tools like 'list_wiki_pages' or 'search_wiki'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as 'get_wiki_page' or 'list_wiki_pages'. No exclusions or prerequisites mentioned.

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

get_work_itemC

Get details of a specific work item

ParametersJSON Schema
NameRequiredDescriptionDefault
expandNoThe level of detail to include in the response. Defaults to "all" if not specified.
workItemIdYesThe ID of the work item

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must convey behavioral details. 'Get details' implies a read-only operation, but it lacks specifics on permissions, error handling (e.g., missing ID), or side effects. The minimal description does not compensate for the absence of annotations.

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 a single, clear sentence with no redundancy. It is front-loaded and efficient, containing only the essential information.

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

Completeness2/5

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

Given no output schema, the description should specify what 'details' includes (e.g., fields, relations). It fails to explain the return value, making it less useful for selection among similar tools like 'get_work_item' vs 'get_pull_request'. The context signals show siblings that return details, but this tool lacks specificity.

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

Parameters3/5

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

The input schema has 100% coverage for both parameters ('workItemId' and 'expand'). The description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the verb 'get' and resource 'work item', indicating a retrieval operation for a specific item. It differentiates from sibling tools like 'list_work_items' (multiple items) and 'search_work_items' (search), but does not explicitly distinguish from other 'get' tools like 'get_pull_request'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., 'search_work_items' or 'list_work_items'). There is no mention of prerequisites, context, or 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_commentsB

Get comments and discussion history for a specific work item

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoMaximum number of comments to return
orderNoThe order in which to sort the comments (Default: "asc")asc
expandNoThe level of detail to include in the comments response (Default: "all")all
projectIdNoThe ID or name of the project
workItemIdYesThe ID of the work item
includeDeletedNoInclude deleted comments
continuationTokenNoContinuation token to retrieve the next page of comments

TDQS

B3.1/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 full burden. It does not disclose behaviors such as pagination, sorting defaults, or what happens with invalid IDs. The phrase 'discussion history' is vague.

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?

Single, concise sentence front-loads the purpose. No wasted words, but could include more details without harming conciseness.

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

Completeness2/5

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

With 7 parameters and no output schema, the description is incomplete. It lacks explanation of pagination, sorting, expand options, and what the response contains.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all parameters. The description adds no additional meaning beyond stating the overall purpose.

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 'Get' and the resource 'comments and discussion history', and specifies it is 'for a specific work item'. This distinguishes it from sibling tools that get comments for pull requests or other entities.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. It does not mention prerequisites, context, or conditions for use.

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

list_commitsA

List recent commits on a branch including file-level diff content for each commit

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoMaximum number of commits to return (Default: 10)
skipNoNumber of commits to skip from the newest
projectIdNoThe ID or name of the project (Default: MyProject)
branchNameYesBranch name to list commits from
repositoryIdYesThe ID or name of the repository
organizationIdNoThe ID or name of the organization (Default: mycompany)

TDQS

A3.8/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 diffs are included, but does not mention pagination, performance considerations, or authentication requirements. Adequate but leaves 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?

Single, well-structured sentence that immediately states the core functionality. No wasted words, and the detail about file-level diffs is efficiently included.

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 list tool with 6 parameters, no output schema, and no annotations, the description provides sufficient context about the main purpose and return content (diffs). Could mention output format or pagination, but still fairly complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains all 6 parameters. The description adds no additional parameter context beyond what's in the schema, so baseline score of 3 is appropriate.

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 specifies the action ('List'), the resource ('commits on a branch'), and an important additional detail ('including file-level diff content for each commit'). It effectively distinguishes from sibling tools like 'create_commit' or 'list_pull_requests'.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool vs alternatives. The description implies it's for listing commits with diffs, but lacks context on when not to use it or how it compares to similar tools like 'get_repository' or 'get_pull_request_changes'.

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

list_organizationsA

List all Azure DevOps organizations accessible to the current authentication

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations provided; description merely states it lists organizations. Does not disclose authentication requirements, rate limits, or behavior when no organizations exist. For a read operation, more transparency is needed.

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?

Single sentence, front-loaded with verb and resource, no superfluous words. Perfectly concise and structured.

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?

Description covers the purpose and scope adequately for a simple list tool. Could mention return format (e.g., array of organization names) or pagination, but not essential given no output schema.

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?

No parameters exist (0 params), so description does not need to add parameter info. Baseline 4 is appropriate as there are no gaps.

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?

Description clearly states it lists Azure DevOps organizations, specifies scope 'accessible to the current authentication', and is distinct from sibling tools like 'list_projects'.

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

Usage Guidelines3/5

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

No explicit guidance on when to use or alternatives, but the tool is straightforward with no parameters. Usage is implied, but lacks exclusionary conditions.

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

list_pipeline_runsB

List recent runs for a pipeline

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoMaximum number of runs to return (1-100)
stateNoFilter by current run state
branchNoBranch to filter by (e.g., "main" or "refs/heads/main")
resultNoFilter by final run result
orderByNoSort order for run creation datecreatedDate desc
createdToNoFilter runs created at or before this time (ISO 8601)
projectIdNoThe ID or name of the project (Default: MyProject)
pipelineIdYesPipeline numeric ID
createdFromNoFilter runs created at or after this time (ISO 8601)
continuationTokenNoContinuation token for pagination

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, so description must disclose behavioral traits. It only says 'list recent runs' without mentioning pagination, read-only nature, or that results are limited. Lacks transparency on important behaviors like filtering and sorting.

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?

Single sentence, highly concise and front-loaded. However, it is perhaps too brief given the tool's complexity. Could include a bit more context without sacrificing conciseness.

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?

Tool has 10 parameters, no output schema, and no annotations. Description is minimal but covers basic purpose. However, it leaves gaps: does not explain return format or pagination behavior. Adequate but not complete for an agent.

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

Parameters3/5

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

Parameter descriptions in schema are comprehensive (100% coverage). The description adds no extra meaning beyond what schema already provides. Baseline of 3 is appropriate since schema covers semantics.

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?

Description clearly states 'List recent runs for a pipeline', which is a specific verb-resource combination. It distinguishes from sibling tools like 'get_pipeline_run' (single run) and 'trigger_pipeline' (create run).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. Does not mention context, prerequisites, or when not to use it. The description is purely declarative without usage advice.

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

list_pipelinesB

List pipelines in a project

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoMaximum number of pipelines to return
orderByNoOrder by field and direction (e.g., "createdDate desc")
projectIdNoThe ID or name of the project (Default: MyProject)

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only says 'list' without detailing default behavior (e.g., pagination, sorting direction, whether it returns all or a subset). The schema provides some parameter details, but the description adds no behavioral context beyond the verb.

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 a single sentence that is concise and front-loaded. It communicates the core purpose without waste, though it could be slightly more informative.

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

Completeness2/5

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

Given the lack of output schema and the number of sibling tools, the description does not provide enough context about what the tool returns (e.g., list of pipeline summaries, metadata) or how it relates to other tools. It is incomplete for an AI agent to use confidently.

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

Parameters3/5

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

Schema description coverage is 100% (all parameters have descriptions), so the description adds no additional meaning beyond what the schema provides. Baseline score is appropriate.

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 'List pipelines in a project' clearly states the verb (list) and resource (pipelines) with a scope (in a project). It distinguishes from siblings like get_pipeline (single pipeline) and list_pipeline_runs (pipeline runs).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., get_pipeline for a single pipeline, list_pipeline_runs for runs). The description gives no context about prerequisites or typical use cases.

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

list_projectsC

List all projects in an organization

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoMaximum number of projects to return
skipNoNumber of projects to skip
stateFilterNoFilter on team project state (0: all, 1: well-formed, 2: creating, 3: deleting, 4: new)
organizationIdNoThe ID or name of the organization (Default: mycompany)
continuationTokenNoGets the projects after the continuation token provided

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description bears full responsibility for behavioral transparency. It only states 'list all projects' but fails to disclose pagination (via top, skip, continuationToken), ordering, authentication needs, or error scenarios. This is a significant gap for a list operation.

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

Conciseness3/5

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

The description is a single sentence, which is concise but lacks structure. It is front-loaded but too minimal to cover all necessary information. Every sentence should earn its place; this one is adequate but not optimized.

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

Completeness2/5

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

Given the tool has 5 parameters, no output schema, and no annotations, the description is incomplete. It omits key context like pagination, default filtering, and relationship to sibling tools (e.g., list_organizations). An agent would lack sufficient detail to use the tool effectively.

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

Parameters3/5

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

Input schema coverage is 100%, with each parameter described. The description adds no additional meaning beyond the schema, achieving the baseline of 3. No extra value is provided.

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 action (list) and resource (projects in an organization), effectively distinguishing it from sibling tools like get_project or list_repositories. However, it could be more specific about pagination behavior to avoid ambiguity.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like get_project (single project) or search tools. It lacks context for an agent to make an informed choice.

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

list_pull_requestsB

List pull requests in a repository

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoMaximum number of pull requests to return (default: 10)
skipNoNumber of pull requests to skip for pagination
statusNoFilter by pull request status
creatorIdNoFilter by creator ID (must be a UUID string)
projectIdNoThe ID or name of the project (Default: MyProject)
reviewerIdNoFilter by reviewer ID (must be a UUID string)
repositoryIdYesThe ID or name of the repository
sourceRefNameNoFilter by source branch name
targetRefNameNoFilter by target branch name
organizationIdNoThe ID or name of the organization (Default: mycompany)

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden but only offers 'List pull requests in a repository'. It does not disclose pagination, default status, or read-only nature, providing minimal behavioral insight.

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 a single efficient sentence with no wasted words. It is concise but could benefit from a bit more detail without losing brevity.

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

Completeness2/5

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

Given 10 parameters and no output schema, the description is incomplete. It omits details about pagination, filtering capabilities, and the structure of the returned list, leaving significant gaps for an agent.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents parameters. The description adds no extra meaning beyond the schema, meeting the baseline expectation.

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 'List', the resource 'pull requests', and the scope 'in a repository', distinguishing it from related tools like 'get_pull_request' (single) and 'create_pull_request'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives or how to apply filters. The description lacks any context for appropriate usage.

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

list_repositoriesC

List repositories in a project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoThe ID or name of the project (Default: MyProject)
includeLinksNoWhether to include reference links
organizationIdNoThe ID or name of the organization (Default: mycompany)

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description bears full responsibility for behavioral disclosure. It does not mention read-only nature, pagination, authentication requirements, or any side effects. The description is too minimal to inform the agent about operational behavior.

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 a single concise sentence with no filler. It is efficiently structured and front-loaded, though it may be too brief for completeness. It earns its place but could benefit from more detail.

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

Completeness2/5

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

Given the tool has no output schema and three optional parameters, the description lacks information about return values, pagination, or filtering behavior. For a listing tool, more context on what is listed and how results are presented is needed.

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

Parameters3/5

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

The input schema has 100% description coverage, so each parameter is already documented. The description adds no additional meaning beyond what the schema provides, meeting the baseline for adequate semantic support.

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

Purpose3/5

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

The description 'List repositories in a project' clearly states verb and resource, but it is vague and does not distinguish from sibling tools like 'get_all_repositories_tree' or 'get_repository_details' which also deal with listing repositories. The lack of specificity on scope or filtering reduces clarity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, when to prefer it over other repository listing tools, or what the tool does not do. The description offers no context for decision-making.

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

list_wiki_pagesB

List pages within an Azure DevOps wiki

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiIdYesThe ID or name of the wiki
projectIdNoThe ID or name of the project (Default: MyProject)
organizationIdNoThe ID or name of the organization (Default: mycompany)

TDQS

B3/5.0
Behavior2/5

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

Without annotations, the description carries full burden but only states 'List pages', omitting crucial behaviors like whether it returns a flat list or tree, authentication needs, and error responses.

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

Conciseness3/5

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

The description is extremely short (7 words) and front-loaded, but it lacks necessary detail. Conciseness is good, but it does not earn its place as it is too terse.

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

Completeness2/5

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

With no output schema, no annotations, and a complex organizational context (organization/project/wiki hierarchy), the description is incomplete; it does not explain return format or parameter interplay.

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

Parameters3/5

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

Schema coverage is 100% with parameter descriptions already present. The tool description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.

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 'List', the resource 'pages', and the context 'within an Azure DevOps wiki', effectively distinguishing it from sibling tools like 'get_wiki_page' (single page) and 'create_wiki_page'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, no context about prerequisites or typical use cases, and no exclusion criteria.

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

list_work_itemsC

List work items in a project

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoMaximum number of work items to return
skipNoNumber of work items to skip
wiqlNoWork Item Query Language (WIQL) query
teamIdNoThe ID of the team
queryIdNoID of a saved work item query
projectIdNoThe ID or name of the project (Default: MyProject)
organizationIdNoThe ID or name of the organization (Default: mycompany)

TDQS

C2.8/5.0
Behavior2/5

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

No annotations exist, so the description must cover behavioral traits. It only states a basic purpose and does not disclose pagination, ordering, read-only nature, or result structure.

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

Conciseness3/5

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

The description is a single sentence, which is concise but lacks detail that could be added without excessive length. It is not verbose but misses opportunities to clarify behavior.

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

Completeness2/5

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

Given 7 parameters, no required fields, no output schema, and no annotations, the description is insufficient. It does not explain the relationship between queryId and wiql, pagination with top/skip, or return format.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all 7 parameters. The tool description adds no extra meaning beyond what the schema provides, adhering to the baseline.

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 'List work items in a project', which is a specific verb and resource. However, it does not differentiate from sibling tool 'search_work_items' which also retrieves work items but with different query mechanisms.

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

Usage Guidelines2/5

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

No usage guidelines are provided. The description does not indicate when to use this tool versus 'search_work_items', 'get_work_item', or other retrieval tools.

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

pipeline_timelineB

Retrieve the timeline of stages and jobs for a pipeline run, to reduce the amount of data returned, you can filter by state and result

ParametersJSON Schema
NameRequiredDescriptionDefault
runIdYesRun identifier
stateNoOptional state filter (single value or array) applied to returned timeline records
resultNoOptional result filter (single value or array) applied to returned timeline records
projectIdNoThe ID or name of the project (Default: MyProject)
pipelineIdNoOptional pipeline numeric ID for reference only
timelineIdNoOptional timeline identifier to select a specific timeline record

TDQS

B3.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 bears the full burden. It implies a read-only operation ('retrieve') and mentions data reduction via filters, but does not disclose potential side effects, permissions, or output size 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 a single concise sentence that front-loads the main action and includes a practical usage tip. No wasted words.

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

Completeness2/5

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

With 6 parameters and no output schema or annotations, the description is insufficient. It does not explain the return format, pagination, error handling, or how stages and jobs are structured in the timeline.

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

Parameters3/5

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

Schema coverage is 100%, so each parameter is already described. The description adds minimal extra meaning, only clarifying that filtering reduces returned data. Baseline is appropriate.

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 retrieves the timeline of stages and jobs for a pipeline run, which is specific and distinct from sibling tools like get_pipeline_run or list_pipeline_runs. However, it does not explicitly differentiate itself from siblings.

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

Usage Guidelines3/5

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

The description mentions filtering by state and result to reduce data, providing some usage guidance. But it lacks explicit when-to-use or when-not-to-use context, and does not reference alternative tools.

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

search_codeB

Search for code across repositories in a project

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoNumber of results to return (default: 100, max: 1000)
skipNoNumber of results to skip for pagination (default: 0)
filtersNoOptional filters to narrow search results
projectIdNoThe ID or name of the project to search in (Default: MyProject). If not provided, the default project will be used.
searchTextYesThe text to search for
includeContentNoWhether to include full file content in results (default: true)
includeSnippetNoWhether to include code snippets in results (default: true)
organizationIdNoThe ID or name of the organization (Default: mycompany)

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description must cover behavioral traits. It only says 'Search for code' without mentioning pagination, filters, snippet inclusion, rate limits, or any other behavior. The schema details are separate but the description does not summarize them.

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

Conciseness3/5

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

The description is extremely concise (one sentence), but it lacks informative content. It is not front-loaded with key details, yet it is not overly verbose either.

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

Completeness2/5

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

Given the complexity of the tool (8 parameters, nested object, no annotations, no output schema), the description is incomplete. It does not explain the rich filtering capabilities, pagination, or result structure.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description does not add any additional meaning beyond what the schema already provides for parameters.

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?

Description clearly states a specific verb ('Search') and resource ('code across repositories in a project'). No ambiguity, and there is no sibling tool with the same name, so differentiation is not needed.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like search_wiki or search_work_items. No prerequisites, limitations, or usage context provided.

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

search_wikiB

Search for content across wiki pages in a project

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoNumber of results to return (default: 100, max: 1000)
skipNoNumber of results to skip for pagination (default: 0)
filtersNoOptional filters to narrow search results
projectIdNoThe ID or name of the project to search in. If omitted, the search runs across the organization when supported.
searchTextYesThe text to search for in wikis
includeFacetsNoWhether to include faceting in results (default: true)
organizationIdNoThe ID or name of the organization (Default: mycompany)

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral traits. It only states the basic function without disclosing pagination behavior, search semantics (e.g., case sensitivity, fuzzy matching), performance implications, or what happens when searchText is empty.

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

Conciseness3/5

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

The description is a single concise sentence, but it lacks essential details for a search tool with 7 parameters. Conciseness is achieved at the expense of completeness, earning a middle score.

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

Completeness2/5

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

Given the complexity (7 params, nested objects, no output schema), the description is too brief. It omits details about result format, filtering behavior, and return value structure, leaving the agent with insufficient context.

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

Parameters3/5

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

Input schema has 100% description coverage, so parameters are already documented. The description does not add additional meaning beyond what the schema provides, so baseline score of 3 is appropriate.

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 states the tool searches for content across wiki pages in a project. The verb 'Search', resource 'content across wiki pages', and scope 'in a project' are specific and distinguish it from siblings like search_code or search_work_items.

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

Usage Guidelines3/5

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

The description implies usage for searching wiki content but provides no explicit guidance on when to use this tool versus alternatives (e.g., get_wiki_page for single page retrieval). No when-not or exclusion criteria are mentioned.

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

search_work_itemsB

Search for work items across projects in Azure DevOps

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoNumber of results to return (default: 100, max: 1000)
skipNoNumber of results to skip for pagination (default: 0)
filtersNoOptional filters to narrow search results
orderByNoOptions for sorting search results
projectIdNoThe ID or name of the project to search in. If omitted, the search runs across the organization when supported.
searchTextYesThe text to search for in work items
includeFacetsNoWhether to include faceting in results (default: true)
organizationIdNoThe ID or name of the organization (Default: mycompany)

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only states the basic purpose, omitting details like result format, pagination (top/skip), filtering, faceting, or sorting behavior. The description adds minimal value beyond the tool name.

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 a single clear sentence, front-loading the key purpose. It is not verbose, though it could be slightly more descriptive without losing conciseness.

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

Completeness2/5

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

Given the tool's complexity (8 parameters, nested objects, no output schema, no annotations), the description is too sparse. It does not explain pagination, filtering, faceting, or output format, leaving the agent underinformed for correct invocation.

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

Parameters3/5

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

The input schema has 100% coverage, with descriptions for all 8 parameters. The tool description does not add additional semantics to the parameters; it merely repeats the schema's information. With high schema coverage, baseline is 3.

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 'Search' and the resource 'work items', and specifies the scope 'across projects'. It distinguishes this tool from siblings like list_work_items (which likely lists without search) and get_work_item (single item).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention when not to use it or suggest other tools like list_work_items for simple listing. The single sentence lacks explicit usage advice.

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

trigger_pipelineC

Trigger a pipeline run

ParametersJSON Schema
NameRequiredDescriptionDefault
branchNoThe branch to run the pipeline on (e.g., "main", "feature/my-branch"). If left empty, the default branch will be used
projectIdNoThe ID or name of the project (Default: MyProject)
variablesNoVariables to pass to the pipeline run
pipelineIdYesThe numeric ID of the pipeline to trigger
stagesToSkipNoStages to skip in the pipeline run
templateParametersNoParameters for template-based pipelines

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only states 'Trigger a pipeline run' without mentioning side effects, permissions, expected execution time, or error scenarios. This is insufficient for an AI agent to understand behavior.

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

Conciseness3/5

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

The description is very short (one sentence), which is concise but suffers from under-specification. It is not front-loaded with key details and fails to earn its place by lacking substance beyond the tool name.

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

Completeness1/5

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

Given the tool has 6 parameters, nested objects, no output schema, and no annotations, the description is severely incomplete. It omits return values, success/failure indications, and any operational context necessary for correct use.

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

Parameters3/5

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

The input schema covers all 6 parameters with descriptions (100% coverage). The description adds no additional parameter-level insight beyond what the schema provides, so it meets baseline but does not enhance understanding.

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 'Trigger a pipeline run' clearly states the action and resource, using a specific verb. It is unambiguous but does not differentiate from related sibling tools like 'pipeline_timeline' or 'get_pipeline_run', which could be clarified.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., when to trigger vs list runs). No context about prerequisites or ideal scenarios is provided.

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

update_pull_requestB

Update an existing pull request with new properties, manage reviewers and work items, and add or remove tags

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoThe updated title of the pull request
statusNoThe updated status of the pull request
addTagsNoList of tags to add to the pull request
isDraftNoWhether the pull request should be marked as a draft (true) or unmarked (false)
projectIdNoThe ID or name of the project (Default: MyProject)
removeTagsNoList of tags to remove from the pull request
descriptionNoThe updated description of the pull request
addReviewersNoList of reviewer email addresses or IDs to add
repositoryIdYesThe ID or name of the repository
pullRequestIdYesThe ID of the pull request to update
addWorkItemIdsNoList of work item IDs to link to the pull request
organizationIdNoThe ID or name of the organization (Default: mycompany)
removeReviewersNoList of reviewer email addresses or IDs to remove
removeWorkItemIdsNoList of work item IDs to unlink from the pull request
additionalPropertiesNoAdditional properties to update on the pull request

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as destructive nature (e.g., updating status to completed may be irreversible), required permissions, rate limits, or response format. The description is generic.

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 a single, front-loaded sentence that covers the tool's main actions. It is concise, though it could be slightly more structured (e.g., listing actions separately).

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

Completeness2/5

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

Given the tool's complexity (15 parameters, nested objects, no output schema), the description is too brief. It does not explain return values, error conditions, or constraints (e.g., status transitions). Annotations are absent, making the description insufficient for complete understanding.

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

Parameters3/5

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

The input schema has 100% description coverage for all 15 parameters. The description enumerates categories (properties, reviewers, work items, tags) but adds minimal value beyond the schema definitions. Baseline 3 is appropriate.

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 it updates an existing pull request with new properties, manages reviewers and work items, and adds/removes tags. It distinguishes from sibling tools like create_pull_request (creation) and get_pull_request (read-only).

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

Usage Guidelines3/5

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

The description implies usage for updating a pull request but provides no explicit guidance on when to use this tool versus alternatives like update_work_item or manage_work_item_link. No when-not-to-use or prerequisites are mentioned.

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

update_pull_request_thread_statusA

Update the status of a comment thread in a pull request (repositoryId optional; derived from pullRequestId when omitted)

ParametersJSON Schema
NameRequiredDescriptionDefault
statusYesThe status to set on the thread
threadIdYesThe ID of the thread to update
projectIdNoThe ID or name of the project (Default: MyProject)
repositoryIdNoThe ID or name of the repository (optional; derived from pullRequestId when omitted)
pullRequestIdYesThe ID of the pull request
organizationIdNoThe ID or name of the organization (Default: mycompany)

TDQS

A3.6/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 full burden for behavioral disclosure. It indicates a mutation action ('Update') but does not disclose effects like notifications, permission requirements, or reversibility.

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 a single, well-structured sentence of 20 words, front-loading the key action and resource without unnecessary elaboration.

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

Completeness2/5

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

For a mutation tool with no output schema, the description lacks context on status meanings, transition rules, and return values, leaving the agent with incomplete information for correct invocation.

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 coverage is 100% with descriptions for all parameters. The description adds value beyond the schema by explaining that repositoryId is optional and derived from pullRequestId, enhancing parameter understanding.

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 uses a specific verb ('Update') and clearly identifies the resource ('comment thread in a pull request'), distinguishing it from sibling tools such as add_pull_request_comment or update_pull_request.

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

Usage Guidelines3/5

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

The description implies usage context by noting that repositoryId is optional and derived from pullRequestId, but does not explicitly state when to use this tool versus alternatives or provide exclusion criteria.

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

update_wiki_pageC

Update content of a wiki page

ParametersJSON Schema
NameRequiredDescriptionDefault
wikiIdYesThe ID or name of the wiki
commentNoOptional comment for the update
contentYesThe new content for the wiki page in markdown format
pagePathYesPath of the wiki page to update
projectIdNoThe ID or name of the project (Default: MyProject)
organizationIdNoThe ID or name of the organization (Default: mycompany)

TDQS

C2.7/5.0
Behavior1/5

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

No annotations exist, and the description fails to disclose behavioral traits such as whether the update is destructive (replaces entire content) or incremental, what permissions are required, or side effects. For a mutation tool, this is a critical gap.

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 a single, concise sentence. It is front-loaded with the core action. While succinct, it could be slightly more informative without sacrificing brevity.

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

Completeness2/5

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

With 6 parameters and no output schema, the description is insufficient. It does not explain return values, error handling, or the effect of optional parameters. The lack of behavioral context leaves an agent underinformed.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description adds no additional meaning beyond stating that content is updated, which aligns with the schema. Baseline 3 is appropriate.

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 verb 'Update' and resource 'wiki page', effectively distinguishing it from create_wiki_page and get_wiki_page. However, it does not specify whether the update is a full replacement or partial, which would enhance clarity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus siblings like create_wiki_page or update_work_item. There is no mention of prerequisites, when an update is appropriate, or alternatives.

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

update_work_itemC

Update an existing work item

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoOverwrite/set the complete set of tags
stateNoThe updated state of the work item
titleNoThe updated title of the work item
areaPathNoThe updated area path for the work item
priorityNoThe updated priority of the work item
tagsToAddNoList of tags to append to the work item
assignedToNoThe email or name of the user to assign the work item to
workItemIdYesThe ID of the work item to update
descriptionNoWork item description in HTML format. Multi-line text fields (i.e., System.History, AcceptanceCriteria, etc.) must use HTML format. Do not use CDATA tags.
tagsToRemoveNoList of tags to remove from the work item
iterationPathNoThe updated iteration path for the work item
additionalFieldsNoAdditional fields to update on the work item. Multi-line text fields (i.e., System.History, AcceptanceCriteria, etc.) must use HTML format. Do not use CDATA tags.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It does not disclose any behavioral aspects such as whether updates are partial or full overwrites, required permissions, or side effects. For a tool with 12 parameters, this is insufficient.

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

Conciseness2/5

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

The description is very concise (one sentence) but lacks important details about behavior and usage. It is under-specified, not efficiently compact.

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

Completeness2/5

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

Given 12 parameters, no output schema, and no annotations, the description is inadequate. It does not explain how parameters interact (e.g., tags overwrite vs. tagsToAdd/Remove) or what the response looks like.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all parameters. The tool description adds no extra meaning beyond what the schema already provides. Baseline score of 3 is appropriate.

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 states 'Update an existing work item', which clearly identifies the action (update) and the resource (work item). It distinguishes from sibling tools like create_work_item and list_work_items.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, no prerequisites, and no mention of when not to use it. The description provides no usage context.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 4 tool updates
    • Changedcreate_work_item1 field changed
      • addedInput schema / properties / tags
        Added value: +{
        +  "description": "Tags to add to the work item",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Addedget_work_item_comments
    • Addedupdate_pull_request_thread_status
    • Changedupdate_work_item3 fields changed
      • addedInput schema / properties / tags
        Added value: +{
        +  "description": "Overwrite/set the complete set of tags",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / tagsToAdd
        Added value: +{
        +  "description": "List of tags to append to the work item",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / tagsToRemove
        Added value: +{
        +  "description": "List of tags to remove from the work item",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}

TDQS

B3.3/5.0
Disambiguation4/5

Most tools have distinct purposes, but a few overlap (e.g., get_repository vs get_repository_details, get_project vs get_project_details, list_work_items vs search_work_items). Descriptions help differentiate, but slight ambiguity remains.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., create_branch, list_pull_requests), use snake_case uniformly, and are predictable without mixing conventions.

Tool Count3/5

44 tools is on the high side, covering many aspects of Azure DevOps, but could be streamlined. The count feels slightly bloated but is within reason for a comprehensive API.

Completeness4/5

Covers CRUD-like operations for repos, branches, commits, PRs, wikis, work items, pipelines, and projects. Missing delete operations (e.g., delete_repository, delete_branch) but has update operations, so agents can manage workflows.

Maintenance

ActivityMaintained
ResponsivenessSyncing

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
    -
  • A
    license
    A
    quality
    F
    maintenance
    A Model Context Protocol server that enables AI assistants to interact with Azure DevOps services, allowing users to query work items with plans to support creating/updating items, managing pipelines, handling pull requests, and administering sprints and branch policies.
    21
    79
    MIT
  • 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/Tiberriver256/mcp-server-azure-devops'

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