Skip to main content
Glama
Elad-Health
by Elad-Health

Azure DevOps MCP Server

A READ-ONLY MCP (Model Context Protocol) server that connects AI assistants to Azure DevOps Server (on-premises). Works with Claude Code CLI, VS Code AI extensions (Continue, Cline), Cursor, and any MCP-compatible client.

Features

  • Projects: List and explore projects

  • Git/Repos: Browse repositories, commits, branches, pull requests, diffs, and code search

  • Builds: List builds, view logs, analyze errors

  • Work Items: Query work items, find linked commits/PRs

  • Releases: View releases and deployment status

  • Pipelines: List YAML pipelines, view runs, get pipeline configuration

  • Test Results: View test runs, results, and analyze failures

Related MCP server: mcp-devops-onpremise

Prerequisites

  • Node.js 18 or higher

  • Azure DevOps Server 2020 or 2022 (on-premises)

  • Personal Access Token (PAT) with read scopes

Installation

npx azure-devops-mcp@latest

Option 2: Clone and Build

git clone https://github.com/elad-nofy/azure-devops-mcp.git
cd azure-devops-mcp
npm install
npm run build

Configuration

Create a Personal Access Token (PAT)

  1. Go to Azure DevOps Server

  2. Click on your profile icon > Security > Personal access tokens

  3. Create a new token with the following scopes:

    • Code: Read

    • Build: Read

    • Work Items: Read

    • Release: Read

    • Test Management: Read

Configure MCP Client

Claude Code CLI

Add to your global settings (~/.claude.json on macOS/Linux, %USERPROFILE%\.claude.json on Windows):

Windows:

{
  "mcpServers": {
    "azure-devops": {
      "command": "cmd",
      "args": ["/c", "npx", "azure-devops-mcp"],
      "env": {
        "AZURE_DEVOPS_URL": "http://your-tfs-server:8080/tfs",
        "AZURE_DEVOPS_PAT": "your-personal-access-token",
        "AZURE_DEVOPS_COLLECTION": "YourCollection",
        "AZURE_DEVOPS_PROJECT": "YourDefaultProject"
      }
    }
  }
}

macOS / Linux:

{
  "mcpServers": {
    "azure-devops": {
      "command": "npx",
      "args": ["azure-devops-mcp"],
      "env": {
        "AZURE_DEVOPS_URL": "http://your-tfs-server:8080/tfs",
        "AZURE_DEVOPS_PAT": "your-personal-access-token",
        "AZURE_DEVOPS_COLLECTION": "YourCollection",
        "AZURE_DEVOPS_PROJECT": "YourDefaultProject"
      }
    }
  }
}

VS Code (Continue/Cline)

Add similar configuration to the extension's MCP settings.

Environment Variables

Variable

Required

Description

AZURE_DEVOPS_URL

Yes

Server base URL (e.g., http://tfs:8080/tfs)

AZURE_DEVOPS_PAT

Yes

Personal Access Token

AZURE_DEVOPS_COLLECTION

No

Collection name (default: DefaultCollection)

AZURE_DEVOPS_PROJECT

No

Default project for commands

Available Tools

Projects

Tool

Description

test_connection

Test connection to Azure DevOps and verify authentication

list_projects

List all projects in the organization

get_project

Get detailed project information

Git / Repositories

Tool

Description

list_repos

List repositories in a project

list_branches

List branches in a repository

list_commits

Get commit history with filters

get_commit

Get commit details with changes

get_commit_diff

Get file diff for a commit

list_pull_requests

List pull requests

get_pull_request

Get PR details with comments

compare_branches

Compare two branches (regression analysis)

search_code

Search for text in repository files

get_file_content

Get file content from a repo at a specific branch/commit

get_commits_for_work_item

Find commits referencing a work item

get_prs_for_work_item

Find PRs linked to a work item

Builds

Tool

Description

list_builds

List recent builds

get_build

Get build details

get_build_logs

Get build logs

list_build_definitions

List build definitions

analyze_build_errors

Extract errors from failed builds

Work Items

Tool

Description

query_work_items

Search work items (WIQL or filters)

get_work_item

Get work item details

list_work_item_types

List available work item types

list_iterations

List iterations/sprints in a project

list_areas

List area paths in a project

Releases

Tool

Description

list_releases

List releases

get_release

Get release details

list_release_definitions

List release definitions

get_release_logs

Get deployment logs

Pipelines

Tool

Description

list_pipelines

List YAML pipelines

get_pipeline_runs

Get recent pipeline runs

get_pipeline_yaml

Get pipeline YAML configuration

get_pipeline_variables

Get pipeline variables

Test Results

Tool

Description

list_test_runs

List test runs in a project

get_test_run

Get test run details

get_test_results

Get test results from a run

get_failed_tests

Get failed tests from a run

get_test_runs_for_build

Get test runs for a specific build

analyze_test_failures

Analyze and group test failures

Usage Examples

Once configured, you can ask your AI assistant questions like:

  • "Show me the recent builds for project X"

  • "What's the status of PR #123?"

  • "List all bugs assigned to me"

  • "Show me the commits from last week"

  • "Why did build #456 fail?"

  • "What tests failed in build #789?"

  • "Compare branches Dev/9.1 and Dev/9.2"

  • "Search for 'IMediator' in the Controllers folder"

Development

# Install dependencies
npm install

# Build
npm run build

# Watch mode
npm run dev

Troubleshooting

Connection errors

  • Verify AZURE_DEVOPS_URL is correct and accessible

  • Check if your PAT has not expired

  • Ensure your network allows connection to the server

Permission errors

  • Verify PAT has required scopes

  • Check if you have access to the project/repository

"Project is required" errors

  • Set AZURE_DEVOPS_PROJECT environment variable, or

  • Pass project parameter in tool calls

License

MIT

Available Tools

39 tools
analyze_build_errorsA

Analyze a failed build and extract errors, warnings, and issues from logs

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
buildIdYesBuild ID to analyze

TDQS

A3.5/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. It mentions analyzing and extracting, hinting at a read-only operation, but does not disclose potential side effects, permissions, handling of successful builds, or return format. This is a significant gap for a tool with no annotation support.

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 directly states the tool's action and focus. Every word contributes value with no redundancy or filler.

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?

The description covers the core function but lacks crucial context due to missing annotations and lack of an output schema. It does not explain what the extracted errors/warnings look like, how edge cases (e.g., successful builds) are handled, or any prerequisites. It is minimally viable but not fully complete for an agent to invoke with confidence.

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% for both parameters (buildId and project), so the schema already documents their purpose. The description adds no extra parameter-level meaning beyond what the schema provides, keeping the baseline at 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 uses specific verbs 'analyze' and 'extract' with a clear resource ('failed build') and outcome ('errors, warnings, and issues from logs'), distinguishing it from sibling tools like get_build_logs which simply retrieve 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 phrase 'failed build' implies the tool is intended for builds that have failed, but no explicit guidance is given about when to use it over sibling tools like get_build_logs or analyze_test_failures. Context is implied but not directly stated.

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

analyze_test_failuresB

Analyze test failures in a build - groups failures by error type

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
buildIdYesBuild ID to analyze

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 the full burden. It discloses only that failures are grouped by error type, but fails to mention output format, read-only nature, permissions, or any side effects. This leaves significant uncertainty about the tool's behavior.

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

Conciseness5/5

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

The description is a single, directly relevant sentence that front-loads the verb and object. No fluff or redundancy.

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 and no annotations, the description fails to explain what the returned analysis looks like (e.g., counts, error type categories, or sample structure). An agent cannot reliably interpret the result or fully understand the tool's scope.

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% (buildId: 'Build ID to analyze', project: 'Project name'). The description adds little beyond the schema's parameter descriptions, so it meets the baseline of 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?

States clear verb 'analyze' with object 'test failures in a build' and adds distinguishing detail 'groups failures by error type' which differentiates it from sibling tools like get_failed_tests (raw list) and analyze_build_errors (build errors). Concise and specific.

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?

Implies usage for analyzing test failures within a build, but provides no explicit when-to-use guidance, exclusions, or references to alternatives. Given sibling tools exist, this is a missed opportunity.

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

compare_branchesA

Compare two branches - shows commits in target that are not in base (useful for regression analysis)

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
repositoryYesRepository name or ID
baseBranchYesBase branch (e.g., "main" or "refs/heads/main")
targetBranchYesTarget branch to compare (e.g., "develop")
topNoMax commits to return

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of disclosing behavior. It explains the directional filtering (commits in target not in base), but does not explicitly state that the operation is read-only, mention side effects, permissions, or output limitations like pagination defaults.

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 is direct and informative. The parenthetical use case adds value without unnecessary fluff.

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 covers the primary behavior and use case, and the schema fully documents all parameters. However, with no annotations or output schema, some details like result ordering or the role of the 'top' parameter default are left implicit. Overall, the combination is adequate but not exhaustive.

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

Parameters4/5

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

Schema coverage is 100%, and the description adds semantic meaning by clarifying how baseBranch and targetBranch relate to the output ('commits in target that are not in base'). It does not elaborate on optional parameters, but those are already described in the schema.

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

Purpose5/5

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

The description clearly states the tool's function with a specific verb ('Compare'), the resource ('two branches'), and the exact result ('shows commits in target that are not in base'). This differentiates it from sibling tools like list_commits and get_commit_diff.

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

Usage Guidelines4/5

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

The description provides a clear context for use ('useful for regression analysis') but does not explicitly mention alternatives or when not to use this tool. This fits 'clear context, no exclusions' on the scale.

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

get_buildA

Get detailed information about a specific build

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
buildIdYesBuild ID

TDQS

A3.5/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 merely restates the tool's name ('get' -> 'Get') and adds the vague term 'detailed information'. It does not mention the return format, required permissions, or any other behavioral characteristics, which is a significant gap for a tool with no structured safety hints.

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 with no waste. Every word contributes to the core purpose, making it highly efficient and easy to parse.

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?

For a simple, single-resource get tool, the description adequately states the main purpose. However, with no output schema and only 2 parameters, it would benefit from listing common fields returned or noting that 'project' is optional. The current level is minimally complete but not rich.

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 describes both parameters (buildId and project) with 100% coverage. The description adds no extra meaning beyond what the schema already provides, so the baseline of 3 applies. No further details about parameter relationships or formats are given.

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 'Get detailed information about a specific build', which is a specific verb+resource pair. It distinguishes from sibling tools like list_builds (list all) and get_build_logs (logs), so an agent can identify its unique purpose.

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?

Usage is implied by 'specific build' — it requires a buildId. However, no explicit guidance is given on when to prefer this over list_builds or get_build_logs, nor are any alternatives or exclusions mentioned. This is a minimum viable level but lacks proactive direction.

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

get_build_logsB

Get build logs - useful for analyzing build errors and failures

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
buildIdYesBuild ID
logIdNoSpecific log ID (omit to get log list first)

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. It only states 'Get build logs' without disclosing return format, pagination, auth requirements, or other behavioral details. This is a significant gap for a tool with no annotation coverage.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no excess words. It efficiently communicates the verb, resource, and a primary use case.

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, no annotations, and a very brief description, the tool lacks essential context about return values and how it relates to sibling tools like get_build or analyze_build_errors. The minimal description is insufficient for an agent to fully understand the tool's behavior.

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 three parameters are fully described in the schema (100% coverage), so the description doesn't need to add parameter details. The description adds no extra meaning beyond the schema, so the baseline 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 uses a specific verb ('Get') and resource ('build logs') and adds the use case of analyzing build errors. It clearly states what the tool does, but doesn't explicitly differentiate from sibling tools like analyze_build_errors, so it falls short of a 5.

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 phrase 'useful for analyzing build errors and failures' provides a clear context for when to use the tool, but it doesn't mention alternatives or exclusions. This is implied usage rather than explicit guidance on when not to use it.

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

get_commitB

Get detailed information about a specific commit including changes

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
repositoryYesRepository name or ID
commitIdYesFull commit SHA
includeChangesNoInclude file changes

TDQS

B3.3/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 states the action and that changes are included, but does not describe return format, pagination, error conditions, or any read-only guarantees. This is a minimal disclosure for an information retrieval tool.

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 primary action and key detail. Every word contributes meaning, and there is no redundancy or filler.

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?

The tool has no output schema and no annotations, but is a simple read operation with fully documented parameters. The description is adequate but sparse; it does not explain what 'detailed information' includes or what 'changes' refers to, leaving some ambiguity for a new 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 parameter names and descriptions already fully document each field. The description's mention of 'including changes' does not add new meaning beyond the existing includeChanges parameter description. Thus the baseline of 3 applies.

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 detailed information about a specific commit including changes' uses a specific verb ('Get') and resource ('a specific commit'), clearly distinguishing it from list-oriented siblings like list_commits. It also hints at a key feature (including changes) that differentiates it from get_commit_diff.

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?

There is no explicit guidance on when to use this tool versus alternatives such as get_commit_diff or list_commits. The description simply states what it does, leaving the agent to infer usage context without exclusions or alternatives.

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

get_commit_diffA

Get the diff/changes for a file in a commit

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
repositoryYesRepository name or ID
commitIdYesCommit SHA
pathYesFile path to get diff for

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description must rely on the verb 'Get' to convey a read-only operation. It does not disclose additional behavioral details such as output format, potential size limits, or authentication requirements, but it also does not mislead. It meets the minimum for a simple read tool.

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 is perfectly sized. It states the essential purpose without any filler, making it easy for an agent to parse quickly.

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

Completeness3/5

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

For a simple read tool with fully documented parameters, the description is minimally adequate. It does not describe the return format (since no output schema exists) or provide explicit usage guidance, but it captures the tool's core function completely enough for a straightforward operation.

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 already has 100% description coverage for all parameters (path, project, commitId, repository). The tool description adds no extra meaning beyond what the schema provides, so the baseline score of 3 applies.

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 action ('Get') and the specific resource ('diff/changes for a file in a commit'). This distinguishes it from siblings like get_commit (commit details) and compare_branches (branch-to-branch diffs), making the tool's purpose unambiguous.

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

Usage Guidelines4/5

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

The description provides clear context: it is for retrieving a file-level diff within a given commit. While it does not explicitly name alternative tools or list exclusions, the wording implies when to use it, e.g., 'for a file' distinguishes it from whole-commit or branch diff tools.

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

get_commits_for_work_itemA

Find commits associated with a work item ID (searches commit messages for #ID)

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
repositoryYesRepository name or ID
workItemIdYesWork item ID to search for
topNoMax commits to return

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the non-obvious search mechanism (commit messages, #ID format), but does not describe return format, pagination behavior, or limitations (e.g., commits that don't include the #ID won't be found). This is 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?

The description is a single, front-loaded sentence that states the purpose and method without any filler. Every word contributes to understanding.

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 no annotations, the description covers the essential semantics of the tool. It explains what it finds and how. It could mention the return format explicitly, but the name 'get_commits' implies a list of commits, and the schema parameters are already described. Overall sufficiently complete.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaningful value by specifying the '#ID' convention, clarifying how workItemId is matched against commit messages—something not obvious from the schema alone.

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 'Find' with a clear resource ('commits') and association ('work item ID'), and explains the mechanism ('searches commit messages for #ID'). This distinguishes it from siblings like list_commits (which lists all commits) and get_prs_for_work_item (which finds PRs).

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 clearly implies when to use the tool: when you need commits associated with a work item via a #ID reference. It doesn't explicitly mention exclusions or alternatives, but the sibling list makes the differentiation obvious, and the mechanism provides clear context.

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

get_failed_testsA

Get failed tests from a test run - useful for investigating failures

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
runIdYesTest run ID

TDQS

A3.7/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. 'Get' clearly implies a read-only operation, but no details are given about return format, pagination, or any side effects. The phrase 'useful for investigating failures' adds 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?

Description is a single sentence of 12 words, front-loaded with the action and resource. Every word earns its place, with no filler or repetition.

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?

The tool is low in complexity with two parameters, but there is no output schema and the description does not indicate what a 'failed test' record includes (e.g., test name, error message). The description is adequate for basic invocation but leaves ambiguity about the returned 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% with both runId and project described in the input schema. The description's 'from a test run' loosely maps to runId but does not add extra meaning beyond what the schema already provides, so the baseline score of 3 applies.

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 states an explicit verb 'Get' and a specific resource 'failed tests from a test run', which clearly distinguishes it from siblings like get_test_results or get_test_runs_for_build by scoping to failed tests within a given run.

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?

Adds the context 'useful for investigating failures' but does not explicitly compare with alternatives such as get_test_results or analyze_test_failures, nor does it state when not to use this tool. Usage is implied rather than explicit.

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

get_file_contentA

Get the content of a file from a repository at a specific branch or commit

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
repositoryYesRepository name or ID
pathYesFile path (e.g., "/src/index.ts")
branchNoBranch name (e.g., "main")
commitIdNoSpecific commit SHA (overrides branch)

TDQS

A3.5/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. It states a read operation but does not disclose the return format (raw vs base64), handling of large/binary files, error conditions, or pagination. This leaves significant behavioral aspects unspecified for a tool with no annotation safety signals.

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 that is front-loaded with the core action and resource. No redundant words or filler; every word contributes to the meaning.

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?

For a simple file retrieval tool, the description captures the essential purpose, but it lacks details on how branch and commitId interact (e.g., commitId overrides branch) and what the response contains. With no output schema and no annotations, additional context 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?

Schema covers all 5 parameters with individual descriptions, so baseline is 3. The description adds the branch/commit context but does not provide additional meaning beyond what the schema already states for parameters like path or repository.

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 uses specific verb 'get' and identifies the resource as file content from a repository at a specific branch or commit. This clearly distinguishes it from sibling tools like get_commit (which retrieves commit metadata) and search_code (which searches within code).

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 when file content is needed at a version, but provides no explicit guidance on when to use this tool versus alternatives. It lacks comparisons or exclusions that would help an agent choose among siblings like compare_branches or get_commit_diff.

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

get_pipeline_runsC

Get recent runs for a pipeline

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
pipelineIdYesPipeline/definition ID
branchNoFilter by branch
topNoMax runs to return

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 carries the full burden of behavioral disclosure. It only says 'Get recent runs' and does not mention return format, default behavior (e.g., top=25), pagination, or any side effects, leaving significant behavioral aspects undisclosed.

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 redundant words or filler. It is appropriately front-loaded and efficient, though it errs on the side of being too minimal.

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 and no annotations, the description is too sparse to provide complete context. It does not explain what a 'run' response looks like, how filtering works beyond parameter names, or why this tool might be preferred over similar getters. The four parameters and sibling tools suggest more contextual detail 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 provides 100% coverage with descriptions for all four parameters, so a baseline of 3 is appropriate. The tool description adds no additional parameter semantics, leaving the schema to handle parameter explanation.

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 'recent runs for a pipeline', making the tool's purpose evident. It is distinct from siblings like list_pipelines by referencing runs specifically, though it does not explicitly differentiate itself from related tools such as get_build.

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 distinguishing pipeline runs from builds or releases. The description only states what it does without contextual usage cues.

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

get_pipeline_variablesB

Get variables defined for a pipeline

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
pipelineIdYesPipeline/definition ID

TDQS

B3.3/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. It only states the action without disclosing return format, whether secret variables are included, pagination, or any other behavioral details.

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?

A single sentence with no wasted words, clearly and efficiently stating the tool's purpose. It is front-loaded and appropriately sized.

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?

For a simple read operation with complete schema coverage, the description is minimally adequate but lacks detail on return values or behavior, which is more impactful since there is no output schema. The tool's purpose is clear, but completeness is limited.

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?

Both parameters (project and pipelineId) have descriptions in the schema, providing 100% coverage. The description adds no additional parameter semantics beyond what the schema already provides, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb and resource ('Get variables defined for a pipeline'), making the tool's purpose clear and distinct from sibling tools that get runs or YAML. It is immediately obvious what the tool does.

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

Usage 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, and no mention of prerequisites or exclusions. Usage is only implied by the tool's name and description, but there is no explicit context.

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

get_pipeline_yamlB

Get the YAML configuration for a pipeline

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
pipelineIdYesPipeline/definition ID

TDQS

B3.2/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 behavioral disclosure. It only states the action and resource, omitting details about output format, error handling, permissions, or side effects. While 'get' implies a read operation, additional context like whether the YAML is returned as raw text or parsed is absent.

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 with the verb and object, making it concise and easy 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?

Given the lack of annotations and output schema, the description is too sparse to fully inform the agent. It doesn't describe the response format, whether project is required, or how this tool fits with other pipeline-related tools, leaving the agent with insufficient context for reliable 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 already provides descriptions for both parameters (project and pipelineId) with 100% coverage. The description adds no extra parameter semantics, such as the optionality of project or how pipelineId relates to a pipeline vs. a definition, so it stays at the baseline.

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

Purpose5/5

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

The description clearly states the tool's function with a specific verb ('Get') and resource ('YAML configuration for a pipeline'). It distinguishes itself from sibling tools like get_pipeline_runs and get_pipeline_variables by focusing on the YAML configuration retrieval.

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?

There is no guidance on when to use this tool versus alternatives such as list_pipelines, get_pipeline_runs, or get_pipeline_variables. The description provides no context, exclusions, or examples of appropriate usage.

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

get_projectA

Get detailed information about a specific project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject name or ID

TDQS

A3.5/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 only states the basic purpose without detailing what 'detailed information' includes, any permissions required, error conditions, or return format. This is minimal and leaves significant gaps for a simple read operation.

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 states the action and resource directly with no filler or redundancy. Every word earns its place.

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?

For a one-parameter getter with no output schema and no annotations, the description is minimally adequate but not complete. It does not specify the structure or extent of the returned 'detailed information', leaving the agent to infer the response format. Additional detail about what is included 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?

Schema description coverage is 100% (the lone 'project' parameter is described as 'Project name or ID'). The description adds no further parameter meaning, so per the rules, a baseline of 3 is appropriate. It neither enriches nor contradicts the 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 'Get detailed information about a specific project' uses a specific verb (Get) and resource (project) with scope ('specific'), clearly distinguishing it from sibling list_projects. It also aligns with other get_* tools like get_work_item, making its purpose unambiguous.

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 use for a specific project (as opposed to list_projects for all projects), but does not explicitly state when to use it over alternatives or mention any exclusions. The 'specific' qualifier gives a hint, but no direct guidance or alternative naming is present.

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

get_prs_for_work_itemB

Find pull requests linked to a work item

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
repositoryYesRepository name or ID
workItemIdYesWork item ID

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 carries the full burden of behavioral disclosure. It only states the core action without explaining nuances like whether 'linked' includes all PR states (open/closed), authentication requirements, or the shape of the return value. This is insufficient for an agent to predict tool behavior.

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 immediately states the tool's purpose. It contains no filler or redundant information, making it highly efficient.

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, the description should explain what the tool returns or at least mention the result format. It only says 'find pull requests', leaving the agent without enough context to interpret the response or handle edge cases. The simplicity of the tool does not justify this brevity.

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 already provides 100% coverage for parameters, so the baseline is 3. The description adds no extra semantic detail beyond what the schema fields (repository, workItemId) already imply, but it does not need to compensate for any 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?

The description uses a specific verb ('Find') and a clear resource ('pull requests') with a well-defined scope ('linked to a work item'). This distinguishes it from the sibling tool get_commits_for_work_item, which focuses on commits instead.

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 should be used when there is a need to find PRs associated with a work item, but it does not explicitly mention alternatives or provide exclusion criteria. It lacks explicit guidance on when to choose this over the similar sibling get_commits_for_work_item.

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 detailed information about a pull request including comments and threads

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
repositoryYesRepository name or ID
pullRequestIdYesPull request ID

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of disclosure. It adds that the tool returns comments and threads, which is useful behavioral context, but it does not explicitly state that the operation is read-only (though 'Get' implies it) or describe any other aspects like response format or potential limitations. This is adequate but not rich.

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 action and resource, followed by the key detail about including comments and threads. There is no redundancy or filler, every word earns its place.

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?

The tool has no output schema and no annotations, but it is a simple read operation with fully documented parameters. The description clarifies that it returns comments and threads, but 'detailed information' remains vague about the full set of fields (e.g., status, reviewers, branches). This is adequate for a basic get operation but leaves room for more precision about the response.

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 fully documents all three parameters. The description adds no additional parameter-specific meaning beyond what the schema provides, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description uses the specific verb 'Get' with the resource 'pull request', and adds 'including comments and threads' to specify the depth of detail. This clearly distinguishes it from sibling tools like list_pull_requests, which would list PRs rather than fetch one detailed object.

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 retrieving detailed information about a single pull request, but it does not explicitly state when to use this tool versus alternatives like list_pull_requests or get_prs_for_work_item. There is no mention of exclusions or preferred contexts, so the guidance is only implicit.

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

get_releaseB

Get detailed information about a specific release

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
releaseIdYesRelease ID

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 of behavioral disclosure. It does not mention the output format, error handling, or whether the optional 'project' parameter affects behavior. 'Detailed information' is vague and gives no insight into what the tool actually returns.

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 states the action and resource without wasted words. It is appropriately concise.

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?

For a simple getter with no output schema and no annotations, the description is minimally viable but lacks detail about what information is returned or any caveats. 'Detailed information' is too vague to fully prepare the agent for the tool's response.

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 both parameters. The description adds no additional parameter context, and since the schema is sufficient, 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 action ('Get') and resource ('detailed information about a specific release'), using 'specific' to distinguish from list_releases. However, it lacks specificity about what 'detailed information' entails and doesn't differentiate from get_release_logs.

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. The description mentions no contexts, exclusions, or sibling tools. 'Specific release' implies use for a single item, but that is implicit.

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

get_release_logsA

Get deployment logs for a release environment

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
releaseIdYesRelease ID
environmentIdYesEnvironment ID

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description must carry the full burden of behavioral disclosure. It states 'Get' implying a read-only operation, but does not explicitly mention safety, permissions, rate limits, or return format. It adds no behavioral context beyond the basic action.

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, focused sentence with no filler. It front-loads the verb and resource, making it immediately scannable.

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?

The tool is a simple get operation with well-documented parameters, but without annotations or an output schema, the description leaves gaps about what 'logs' entails and any response shape. It is minimally adequate but lacks helpful context 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?

Schema description coverage is 100%, so baseline is 3. The description adds no additional meaning beyond what the schema already provides for releaseId and environmentId. It names the resource but does not elaborate on parameter relationships or expected values.

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 ('deployment logs for a release environment'), clearly distinguishing it from siblings like get_build_logs or get_release. It immediately conveys what the tool returns.

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 retrieving deployment logs tied to a release environment, but provides no explicit guidance on when to choose this tool over alternatives like get_build_logs or get_pipeline_runs. No exclusions or alternative tool references are given.

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

get_test_resultsB

Get test results from a test run - shows which tests passed/failed

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
runIdYesTest run ID
topNoMax results to return

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 must disclose behavioral traits, but it only states that results include pass/fail status. It does not mention pagination (top), filtering by project, ordering, or what fields are returned. The absence of annotations makes this a significant gap.

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

Conciseness5/5

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

A single, front-loaded sentence that conveys the core purpose without any wasted words. It is concise and immediately understandable.

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?

The tool has 3 parameters, no annotations, and no output schema, so the description must carry more weight. It explains the basic result (passed/failed) but omits how the parameters affect the output, such as whether project is required or how top limits results. Given the simplicity of the tool, it is minimally complete but with clear 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 itself adds no parameter-specific information beyond the schema, but the schema already documents all three parameters clearly. No additional context is provided about how runId, project, and top interact.

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 and resource ('Get test results from a test run') and clarifies the scope with 'shows which tests passed/failed'. This clearly distinguishes it from siblings like get_failed_tests (only failures) and get_test_run (run metadata).

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 explicit guidance on when to use this tool versus alternatives such as get_failed_tests or analyze_test_failures. The usage context is only implied ('from a test run'), and there are no exclusions or alternative recommendations.

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

get_test_runB

Get detailed information about a specific test run

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
runIdYesTest run ID

TDQS

B3.2/5.0
Behavior2/5

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

Since no annotations are provided, the description carries the full burden of behavioral disclosure. It fails to describe what 'detailed information' includes, whether the operation is read-only (though 'get' implies it), error behavior, or any required permissions. It adds no meaningful context beyond the tool's name.

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 directly states the core purpose without any fluff. It is concise and appropriately sized for a simple get-by-ID tool.

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 and no annotations, the description must compensate by explaining what the returned 'detailed information' contains and how it differs from related tools like get_test_results. It does not, leaving the agent with significant ambiguity about the expected response structure and scope.

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% with both parameters (runId and project) described in the schema. The tool description adds no additional parameter meaning, so the baseline score of 3 applies.

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 a clear resource 'detailed information about a specific test run', which distinguishes it from sibling tools like list_test_runs (which lists runs) and get_test_results (which retrieves results). It effectively communicates that this tool returns the full details of a single test 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 is provided about when to use this tool versus alternatives such as get_test_results or get_test_runs_for_build. The description only restates the function without mentioning prerequisites, exclusions, or scenarios where another sibling would be more appropriate.

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

get_test_runs_for_buildB

Get test runs associated with a specific build

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
buildIdYesBuild ID

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are present, so the description must carry the transparency burden. It only says 'Get test runs' and doesn't mention what a successful call returns (e.g., array, null), pagination, error behavior, or permission requirements. The verb 'Get' implies read-only, but lacks depth.

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

Conciseness5/5

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

Single sentence with no redundant words; efficient and front-loaded with the verb and resource.

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?

The tool is minimal: no output schema, no annotations, and a one-line description. It doesn't describe return payload, edge cases (e.g., missing buildId), or how project affects results, making it incomplete for an agent to understand the full behavior.

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 covers both parameters with descriptions ('Build ID', 'Project name'), and the description adds no extra meaning. Since coverage is 100%, baseline 3 applies; the description doesn't clarify how buildId is used or when project is 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?

Description clearly states 'Get test runs associated with a specific build' — a specific verb (get), resource (test runs), and scope (associated with a build), distinguishing it from sibling tools like list_test_runs (all runs) and get_test_run (single 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 is provided on when to use this tool versus alternatives like list_test_runs or get_test_run; the description only names the function without context, prerequisites, 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_itemB

Get detailed information about a specific work item

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWork item ID
expandNoInclude all fields and relations

TDQS

B3.3/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 behavioral disclosure. It merely restates the tool's purpose without explaining what 'detailed information' entails, default behavior, response format, or any side effects. It does not reveal that the operation is read-only or that expand defaults to true, which are important 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, perfectly front-loaded sentence with no wasted words. It immediately states the action and resource, making it highly efficient. Every word contributes to understanding the tool's basic 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?

For a simple get-by-id tool with a fully documented schema, the description is minimally adequate. However, it lacks any contextual guidance on when to use this tool versus the many related siblings, and does not clarify what 'detailed' means or how the expand parameter affects the response. With no output schema, the description could have provided more context about the return value, but it does not.

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 schema provides full coverage for both parameters (id and expand) with clear descriptions. The description itself adds no additional parameter semantics beyond what the schema already states. Since schema coverage is 100%, the baseline of 3 is appropriate; the description does not compensate or enhance parameter 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 clearly states the tool gets detailed information about a specific work item, using a specific verb and resource. It does not explicitly distinguish itself from query_work_items or other sibling tools, but the focus on 'a specific work item' implies single-item retrieval as opposed to listing or searching, which is a reasonable distinction.

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 when you have a work item ID and need detailed information, but it does not provide explicit guidance on when to use this tool versus alternatives like query_work_items or get_commits_for_work_item. There are no exclusions or alternative recommendations, so guidance is only implied.

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

list_areasA

List area paths in a project - useful for organizing and filtering work items by team or component

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
depthNoDepth of child areas to return

TDQS

A3.7/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 only says 'List area paths', implying a read operation, but gives no details about return format, ordering, depth behavior, or pagination. The description does not add meaningful behavioral context beyond the bare function name.

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 verb and resource, and provides a brief use-case note. Every word earns its place with no redundancy or filler.

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?

The tool is simple, with only two optional parameters and no output schema, but the description is minimal. It does not explain what the returned area paths look like, how depth affects results, or whether a project is required. This is adequate but leaves clear gaps in expected behavior.

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% (both `depth` and `project` have descriptions), so the schema already documents the parameters. The description adds tangential context about filtering work items but does not elaborate on how parameters affect the list. Baseline 3 is appropriate since the schema does the heavy lifting.

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

Purpose5/5

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

The description uses a specific verb 'List' with a clear resource 'area paths' and scope 'in a project'. It is distinct from all sibling tools, which focus on commits, work items, builds, etc. This leaves no ambiguity about what the tool does.

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

Usage Guidelines4/5

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

The description provides clear use-case context: it is 'useful for organizing and filtering work items by team or component'. While it doesn't explicitly mention when not to use it or name alternatives, the context sufficiently guides an agent to select this tool when area paths are relevant.

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

list_branchesC

List branches in a repository

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
repositoryYesRepository name or ID

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 behavioral disclosure. It implies a read operation but does not state pagination, sorting, or what data is returned, leaving the agent with minimal insight into the tool's behavior.

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

Conciseness5/5

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

The description is a single sentence that is concise and front-loaded. Every word is essential, and there is no redundancy or extraneous 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?

The tool is simple, but without an output schema or annotations, the description should explain return values or pagination. It does not, leaving the agent to guess what 'list branches' produces. This is a clear gap for a list operation.

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%, and both 'project' and 'repository' are described in the schema. The description adds no additional parameter context, so the baseline 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?

The description 'List branches in a repository' uses a specific verb and resource, clearly indicating the operation. It is implicitly distinct from sibling tools like compare_branches or list_repos, though it does not explicitly call out that distinction.

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, nor are any exclusions or prerequisites mentioned. The description states only what it does, not when it is the right choice.

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

list_build_definitionsC

List build/pipeline definitions

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
nameNoFilter by definition name (supports wildcards *)
pathNoFilter by folder path

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 carry full behavioral transparency. It only states that it lists definitions, with no mention of return format, output structure, permissions, pagination, or side effects. The phrase 'build/pipeline definitions' adds some clarity but still leaves behavior largely implicit.

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 fluff or repetition. It is appropriately sized for the simplicity of the tool, though it could be slightly more informative about what 'definitions' 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?

Given the lack of annotations and the presence of sibling tools, the description is too minimal to be contextually complete. It does not explain return values, filtering behavior, or relationships to other pipeline-related tools, leaving the agent with limited context 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 descriptions cover all three parameters (name, path, project) completely, so the tool description adds no additional meaning. Baseline is 3 because the schema does the heavy lifting for parameter 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 uses a clear verb and resource: 'List build/pipeline definitions.' It explains the tool's function and distinguishes it from listing actual builds (like list_builds) by focusing on 'definitions,' though it doesn't explicitly differentiate from the similar 'list_pipelines' sibling tool.

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 list_pipelines or list_release_definitions. The description only states what it does, without any context on prerequisites, use cases, or exclusions.

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

list_buildsB

List recent builds with status and results

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
definitionsNoFilter by build definition IDs
branchNameNoFilter by branch (e.g., "refs/heads/main")
statusFilterNoFilter by status
resultFilterNoFilter by result
requestedForNoFilter by user who requested the build
topNoMax builds to return

TDQS

B3.3/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 states the tool lists 'recent builds' and includes 'status and results', but it does not disclose ordering, pagination behavior, or whether it operates across all projects or a specific one. It also doesn't explicitly state that this is a read-only operation, though that is implied by the verb 'List'. It provides minimal value beyond the obvious.

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 is front-loaded with the action and resource. Every word serves a purpose, with no fluff or repetition. It is ideally sized for quick comprehension.

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?

The tool has 7 optional parameters, no output schema, and no annotations, leaving the description as the primary context source. The description gives a high-level overview but omits details like default behavior, return format, and how filters combine. For a relatively simple list tool, it is adequate but not comprehensive, especially without an output schema to explain the 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?

The input schema has 100% description coverage, so the baseline is 3. The description adds little beyond the schema—it mentions 'status and results', which loosely aligns with statusFilter and resultFilter, but it doesn't clarify parameter usage or relationships. The 'recent' qualifier slightly hints at the 'top' parameter but not meaningfully.

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 a specific action ('List') on a specific resource ('recent builds') and includes the key output fields ('status and results'). It distinguishes itself from sibling tools like get_build (single build) and list_build_definitions (build definitions), though it doesn't explicitly name alternatives. The word 'recent' adds scope but could be more precise.

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 gives no guidance on when to use this tool versus alternatives such as get_build or list_build_definitions. There is no mention of when not to use it or what distinguishes it from other list tools. The intended use is only implied by the name and description, not explicitly stated.

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

list_commitsB

Get commit history for a repository

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
repositoryYesRepository name or ID
branchNoBranch name (e.g., "refs/heads/main")
authorNoFilter by author email
fromDateNoStart date (ISO format)
toDateNoEnd date (ISO format)
topNoMax commits to return

TDQS

B3.2/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 behavioral disclosure. It only states the basic action and resource, omitting important behaviors like pagination (top default), filtering (author, branch, dates), or what the response contains. This is a significant gap for a tool with many parameters.

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 is front-loaded with the action and resource. Every word earns its place, and there is no unnecessary verbosity.

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 7 parameters and lack of an output schema, the description is incomplete. It does not explain return value structure, default ordering, or how filters affect results. This under-specification could leave an agent uncertain about the tool's behavior beyond the basic action.

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 every parameter, so the baseline is 3. The description adds no extra semantic meaning beyond the schema; it merely names 'repository' without elaborating on any parameter behavior or formats.

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 commit history for a repository' uses a specific verb and resource, clearly distinguishing it from sibling tools like get_commit (single commit) and get_commit_diff (diff). This is unambiguous and purpose-driven.

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 get_commit or list_branches. The description does not mention any exclusions or competing scenarios, leaving the agent to infer usage from the name alone.

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

list_iterationsA

List iterations (sprints) in a project - useful for sprint planning and filtering work items

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
depthNoDepth of child iterations to return

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 the full burden of behavioral disclosure. However, it only states the basic function ('List iterations') and does not reveal behavioral traits such as whether the operation is read-only, how the depth parameter affects results, or any potential side effects. This is a significant gap for a tool with no annotation support.

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 includes the tool's primary function and a clear use case. It is front-loaded with the key action and resource, with no wasted words.

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?

The description covers the essential purpose and usage context, but it lacks details about the depth parameter behavior and the structure of the returned data. Given that there is no output schema and annotations, the description leaves some ambiguity about what the agent can expect from the 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 provides 100% coverage with descriptions for both parameters ('Depth of child iterations to return' and 'Project name'). The tool description adds no additional parameter semantics beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool lists iterations (sprints) in a project, using a specific verb and resource. It also explains its utility for sprint planning and filtering work items, distinguishing it from other list tools by the unique resource type.

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

Usage Guidelines4/5

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

The description provides clear context on when to use the tool ('useful for sprint planning and filtering work items'), but it does not explicitly mention alternatives or when not to use it. This is sufficient context without exclusions.

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

list_pipelinesB

List pipeline definitions in a project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
nameNoFilter by name (supports * wildcard)
pathNoFilter by folder path
topNoMax pipelines to return

TDQS

B3/5.0
Behavior1/5

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

With no annotations provided, the description carries full responsibility for behavioral disclosure. It merely says 'List pipeline definitions' with no mention of pagination, default sorting, whether project is required, or what fields are returned. This leaves the agent without critical 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 a single concise sentence that immediately conveys the core action. No wasted words, and it is appropriately front-loaded.

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 listing tool with no output schema and no annotations, the description is too sparse. It fails to explain what a pipeline definition includes, whether pagination applies, or how it relates to sibling tools. The parameter schema provides some structure but not enough for the agent to fully understand the tool's behavior.

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 (top, name, path, project). The description adds no additional parameter meaning, but the baseline of 3 is appropriate as the schema handles the heavy lifting.

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

Purpose5/5

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

The description uses a specific verb ('List') and resource ('pipeline definitions') with a scope ('in a project'), clearly distinguishing it from siblings like list_build_definitions and get_pipeline_runs. It is unambiguous about what the tool does.

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

Usage 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. The description only states the action, leaving implied usage without exclusions or references to sibling tools like list_build_definitions or get_pipeline_runs.

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

list_projectsA

List all projects in the Azure DevOps organization/collection

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden. It only says 'List all projects' without disclosing return format, pagination, permissions, or any side effects. While 'List' suggests a read-only operation, it does not explicitly state safety or behavioral details.

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 is front-loaded with the action and resource, containing no filler or redundant information.

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?

For a simple zero-parameter list tool, the description covers the primary action but lacks any indication of the return shape (e.g., project names, IDs, URLs) or potential limitations. Without an output schema, more detail on what 'projects' includes would make it complete.

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

Parameters4/5

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

The input schema has zero parameters, and the description correctly implies no arguments are needed. Baseline 4 is appropriate for a zero-parameter tool; the description adds no extra parameter info but none is required.

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 the specific verb 'List' with resource 'projects' and scope 'in the Azure DevOps organization/collection', clearly distinguishing it from the sibling 'get_project' tool (which retrieves a single project).

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 states the tool lists all projects, which implies when to use it, but does not explicitly mention alternatives like 'get_project' for a single project or exclude any cases. No explicit when-not-to-use guidance is provided.

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

list_pull_requestsC

List pull requests in a repository

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
repositoryYesRepository name or ID
statusNoPR status filteractive
creatorIdNoFilter by creator ID
reviewerIdNoFilter by reviewer ID
topNoMax PRs to return

TDQS

C2.6/5.0
Behavior1/5

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

With no annotations provided, the description must disclose behavior. It only says 'List pull requests' and does not mention default status ('active'), default top limit (50), sorting, pagination, or any side effects. The description fails to add 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.

Conciseness4/5

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

The description is a single concise sentence with no redundant wording. However, it is only 5 words and lacks important context, so it is not a 5.

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?

The tool has 6 parameters, a required 'repository', an enum, and no output schema. The description does not explain return values, default filters, or any limitations. Combined with no annotations, the tool is severely under-specified.

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 6 parameters have descriptions in the schema, so the baseline is 3. The description adds no additional semantics beyond what the schema already provides, so it remains at 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 ('List'), resource ('pull requests'), and scope ('in a repository'). It distinguishes from siblings like 'get_pull_request' via the plural form and from 'get_prs_for_work_item' via repo scope, though it does not explicitly name alternatives.

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 gives no guidance on when to use this tool versus alternatives such as get_pull_request or get_prs_for_work_item. It lacks any mention of use cases, prerequisites, or exclusions.

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

list_release_definitionsC

List release/deployment pipeline definitions

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
searchTextNoFilter by name
pathNoFilter by folder path

TDQS

C2.9/5.0
Behavior2/5

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

Annotations are absent, so the description carries the full burden. It only states the tool 'List's definitions, implying a read-only operation, but it does not disclose whether results are paginated, what the return format is, or whether any special permissions are required. Minimal additional context is provided.

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 with no unnecessary words. It is front-loaded with the action and resource, 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?

The tool lacks an output schema and annotations, and the description provides no usage context or behavioral details. For an agent deciding among many sibling tools, this description is insufficient. The three optional parameters are explained only in the schema, and no distinction from similar tools is made.

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 three parameters with descriptions, so schema coverage is 100%. The description itself adds no parameter-specific information, but the baseline of 3 is appropriate since the schema already handles semantic explanation.

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 'List release/deployment pipeline definitions' clearly states the action (List) and the resource (release/deployment pipeline definitions), distinguishing it from siblings like list_releases or list_pipelines by focusing on definitions. It is not fully specific about what constitutes a definition, but it is clear enough.

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_pipelines, list_releases, or get_pipeline_runs. The description does not mention filtering, prerequisites, or any context that would help an agent choose it appropriately.

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

list_releasesB

List releases with deployment status

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
definitionIdNoFilter by release definition ID
statusFilterNoFilter by status
environmentStatusFilterNoFilter by environment status
topNoMax releases to return

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 the full burden. It only states that it lists releases with deployment status, but does not disclose important behaviors such as default result limits (e.g., top=25), pagination, whether it returns all deployment statuses or the latest one, or any side effects (though it is likely read-only). This minimal disclosure is insufficient for a tool with multiple optional parameters.

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 that immediately conveys the core function with no wasted words. However, it is slightly too terse to include usage guidance, which would have made it more helpful without sacrificing 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 lack of an output schema and annotations, the description should explain return values and behavior. It fails to mention what the response contains (e.g., fields like deployment status, environment details), how the top parameter interacts with other filters, or whether project is required. This incompleteness is a clear gap for a tool with 5 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?

The input schema has 100% description coverage, with each of the 5 parameters clearly described (e.g., 'Filter by release definition ID'). The description adds no additional meaning beyond the schema, so the baseline score of 3 is appropriate; the schema does the heavy lifting.

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 releases with deployment status' uses a specific verb (List) and resource (releases), and adds a meaningful qualifier ('with deployment status') that distinguishes it from sibling tools like list_release_definitions, which lists definitions rather than release instances. The purpose is unambiguous and immediately understandable.

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. With many sibling tools such as get_release, list_release_definitions, and get_release_logs, the absence of any contextual hints or exclusions leaves the agent without direction for tool selection.

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

list_reposA

List all Git repositories in a project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name (uses default if not specified)

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 the full burden of behavioral disclosure. 'List all' indicates read-only scope, but it does not mention default project behavior, authentication needs, pagination, or output format. It restates the core function without adding meaningful 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 a single, well-formed sentence that front-loads the action and object. There is no filler, repetition, or unnecessary detail.

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 simple list operation with one optional parameter, the description is functionally adequate. It covers the essential purpose and scope, though it could mention default project behavior or return type. Given the simplicity and schema coverage, it is sufficiently 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?

The schema covers 100% of the single optional parameter 'project' with a description explaining the default behavior. The tool description's 'in a project' adds little beyond the schema, so the parameter semantics are adequately handled by the 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 uses a specific verb 'List' with the resource 'Git repositories' and a scope qualifier 'in a project'. This clearly distinguishes it from sibling tools like list_projects or list_branches.

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 the tool (when a list of repositories is needed), but provides no explicit exclusions, prerequisites, or alternatives. It does not mention when not to use it or direct users to a sibling tool.

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

list_test_runsB

List test runs for a project - useful for finding test execution history

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
buildUriNoFilter by build URI
topNoMax runs to return

TDQS

B3.3/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 only states 'List test runs' without disclosing return format, ordering, pagination, or the fact that project and buildUri are optional filters. The statement 'for a project' contradicts the schema where project is optional, creating ambiguity about the default scope.

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

Conciseness5/5

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

The description is a single concise sentence that immediately conveys the tool's purpose and use case. Every word earns its place with no redundancy or filler.

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?

While this is a simple list tool, the description is incomplete in explaining optional filters and default behavior. The lack of an output schema and annotations means the agent must infer return structure and behavior. The ambiguity about 'for a project' when project is optional further reduces 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 baseline is 3. The description adds minimal value beyond the schema, only reinforcing that 'project' is a scope. No extra semantics for 'top' or 'buildUri' are 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 tool lists test runs for a project, using a specific verb and resource. It identifies the use case (finding test execution history) but does not explicitly differentiate from sibling tool get_test_runs_for_build, which also lists test runs but filtered by build.

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?

It implies the tool is useful for viewing test execution history, but does not provide explicit guidance on when to use this vs alternatives like get_test_runs_for_build or get_test_results. No exclusions or alternative recommendations are given.

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

list_work_item_typesA

List available work item types in a project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name

TDQS

A3.5/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 does not reveal what the response includes (e.g., IDs, names), whether authentication is needed, or if pagination applies. The description essentially restates the tool name and adds no behavioral context beyond the fact that it lists items.

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 short sentence of seven words, front-loading the action and resource. There is zero redundancy and every word earns its place, making it highly concise and well-structured.

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

Completeness3/5

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

For a tool with one optional parameter and no output schema, the description is minimally complete: it states the purpose and the parameter is defined in the schema. However, it lacks any detail about the return value or the nature of 'work item types', which could be enriched with a brief mention of 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?

The input schema fully documents the single parameter 'project' with description 'Project name' (schema coverage 100%). The tool description adds nothing beyond the schema, merely echoing 'in a project'. Baseline 3 is appropriate since the schema does the heavy lifting.

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

Purpose5/5

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

The description uses the specific verb 'List' with the clear resource 'work item types' and the scope 'in a project', which distinguishes it from sibling tools like query_work_items or get_work_item. Even without the title, the purpose is immediately understandable.

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 stating 'in a project', indicating a project is required, but it does not explicitly say when to use this tool instead of alternatives, nor does it mention any exclusions or prerequisites. The usage is clear but not enhanced with guidance.

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

query_work_itemsC

Query work items using WIQL (Work Item Query Language) or simple filters

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
wiqlNoWIQL query string (if provided, other filters are ignored)
workItemTypeNoFilter by type (Bug, Task, User Story, etc.)
stateNoFilter by state (Active, Closed, etc.)
assignedToNoFilter by assigned user (use "@Me" for current user)
areaPathNoFilter by area path
iterationPathNoFilter by iteration path
tagsNoFilter by tag
topNoMax items to return

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 full burden for behavioral disclosure. It does not mention that WIQL overrides other filters (a key behavior captured only in the schema), nor does it describe pagination, default limits, or return format. The word 'Query' implies a read operation, but safety is not explicitly stated.

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 that clearly conveys the core functionality. It is well-structured and free of unnecessary words, though it is brief given the tool's complexity.

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?

The tool has 9 optional parameters and no output schema, yet the description is only one sentence. It does not clarify expected return values, the precedence of WIQL over filters, or when to choose this tool over related siblings like get_work_item. The brevity leaves significant gaps for a tool with this parameter count.

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 the high-level distinction between WIQL and simple filters, but does not explain individual parameter semantics beyond the schema. The schema itself already provides clear descriptions for all 9 parameters, so the description adds marginal value.

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 queries work items using WIQL or simple filters. It identifies a specific verb ('Query') and resource ('work items'), which distinguishes it from single-item retrieval tools like get_work_item, though it does not explicitly name that sibling alternative.

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 get_work_item or list_work_item_types. The description only mentions two query modes (WIQL or filters) but does not state use cases, exclusions, or prerequisites.

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/text content in a repository

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name
repositoryYesRepository name or ID
searchTextYesText to search for in file contents
pathNoFolder path to search in (e.g., "/src")
branchNoBranch to search (default: default branch)
fileExtensionNoFilter by file extension (e.g., ".cs", ".ts")
topNoMax results to return

TDQS

B3.1/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 behavioral disclosure. It only states the basic purpose and does not mention any behavioral traits such as result format, pagination, rate limits, or whether it searches file contents versus metadata. This is a minimal description with no extra detail.

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 wasted words. It clearly states the action and target. However, it is somewhat minimal and doesn't include any additional structure like usage hints, but for conciseness it is effective.

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 (7 parameters) and the absence of an output schema or annotations, the description is incomplete. It doesn't explain what the search returns (e.g., a list of matching files with snippets or just paths), nor does it cover pagination or result limits. The parameter schema covers inputs well, but the output behavior is entirely unexplained.

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 7 parameters, so the baseline is 3. The description adds no additional meaning to the parameters; it only repeats the general search function. It doesn't elaborate on how 'searchText' relates to 'path' or 'fileExtension', but the schema already provides adequate per-parameter 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 'Search for code/text content in a repository' clearly states the specific verb (search), resource (code/text content), and scope (repository). It distinguishes the tool from siblings like 'get_file_content' (which retrieves a single file) and the various 'list_*' tools, as 'search' is a unique operation among the siblings.

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 offers no guidance on when to use this tool versus alternatives. It doesn't state conditions like 'when you need to find a string in code' or mention that for retrieving a known file, 'get_file_content' should be used instead. There is no explicit or implied context for tool selection.

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

test_connectionA

Test the connection to Azure DevOps Server and verify authentication

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 the full burden. It states the action but does not disclose return format, whether it performs any writes, what happens on authentication failure, or if there are side effects. This is 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 a single concise sentence that immediately states the verb and target. It contains no filler and is appropriately front-loaded.

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

Completeness4/5

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

For a zero-parameter connection test, the description covers the essential purpose. However, with no output schema or annotations, it might be improved by mentioning the expected outcome or when to use it. Still, it is adequate for this simple utility.

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 an empty schema with 100% coverage, so there is nothing for the description to add. Baseline 4 applies as no parameter documentation is 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 uses a specific verb 'Test' and identifies the resource 'connection to Azure DevOps Server' plus 'verify authentication'. This clearly distinguishes it from sibling tools, which all perform specific data retrieval or mutation operations.

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 explicit guidance on when to use this tool versus alternative tools, nor does it mention prerequisites or that it might be used before other API calls. The intended use is implied by the name but not stated.

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.

  1. 39 tool updatesv1.1.2
    • First observedanalyze_build_errors
    • First observedanalyze_test_failures
    • First observedcompare_branches
    • First observedget_build
    • First observedget_build_logs
    • First observedget_commit
    • First observedget_commit_diff
    • First observedget_commits_for_work_item
    • First observedget_failed_tests
    • First observedget_file_content
    • First observedget_pipeline_runs
    • First observedget_pipeline_variables
    • First observedget_pipeline_yaml
    • First observedget_project
    • First observedget_prs_for_work_item
    • First observedget_pull_request
    • First observedget_release
    • First observedget_release_logs
    • First observedget_test_results
    • First observedget_test_run
    • First observedget_test_runs_for_build
    • First observedget_work_item
    • First observedlist_areas
    • First observedlist_branches
    • First observedlist_build_definitions
    • First observedlist_builds
    • First observedlist_commits
    • First observedlist_iterations
    • First observedlist_pipelines
    • First observedlist_projects
    • First observedlist_pull_requests
    • First observedlist_release_definitions
    • First observedlist_releases
    • First observedlist_repos
    • First observedlist_test_runs
    • First observedlist_work_item_types
    • First observedquery_work_items
    • First observedsearch_code
    • First observedtest_connection

TDQS

B3.1/5.0

Scored across 39 tools

Disambiguation4/5

Most tools target distinct resources (builds, repos, work items, tests, releases), but some overlap exists, e.g., list_builds vs get_pipeline_runs, and multiple test analysis tools. Descriptions help differentiate, but an agent might occasionally select the wrong tool.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with lowercase and underscores (e.g., list_branches, get_work_item, analyze_build_errors). No mixing of conventions, making the set predictable for agents.

Tool Count3/5

At 39 tools, the count is high but justified by the broad scope of Azure DevOps (builds, repos, work items, tests, releases). However, it exceeds the typical 15-25 range and feels heavy, fitting the 'borderline' description.

Completeness2/5

The tool surface is heavily read-oriented, lacking mutation operations such as create, update, delete for work items, pull requests, pipelines, and releases. This is a significant gap for a DevOps server, likely causing agent failures when workflows require state changes.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers