Skip to main content
Glama
ennuiii

Azure DevOps MCP Server with PAT Authentication

by ennuiii

Azure DevOps MCP Server with PAT Authentication

A Model Context Protocol (MCP) server for Azure DevOps that uses Personal Access Token (PAT) authentication instead of Azure CLI. This server provides both CLI and HTTP API interfaces for interacting with Azure DevOps services.

Deploy to Render

โœจ Features

  • ๐Ÿ”‘ PAT Authentication: Uses Personal Access Tokens instead of Azure CLI

  • ๐ŸŒ HTTP API: REST API endpoints for web applications

  • ๐Ÿ“ก MCP Protocol: Full Model Context Protocol support

  • ๐Ÿš€ Deploy Ready: Configured for Render.com deployment

  • ๐Ÿ› ๏ธ 75 Tools: Comprehensive Azure DevOps functionality

Related MCP server: Azure DevOps MCP Server

๐Ÿ—๏ธ Architecture

This server provides two interfaces:

  1. CLI Interface (src/index.ts) - Traditional MCP server via stdin/stdout

  2. Web Interface (src/server-web.ts) - HTTP REST API for web deployment

๐Ÿ”ง Available Tools (75 Total)

Work Items (19 tools)

  • wit_get_work_item - Get work item by ID

  • wit_create_work_item - Create new work item

  • wit_update_work_item - Update work item fields

  • wit_my_work_items - Get user's assigned work items

  • wit_add_work_item_comment - Add comments

  • wit_list_backlogs - List team backlogs

  • wit_link_work_item_to_pull_request - Link work items to PRs

  • And 12 more...

Builds (9 tools)

  • build_get_builds - List builds

  • build_run_build - Trigger new build

  • build_get_log - Get build logs

  • build_get_status - Check build status

  • And 5 more...

Repositories (18 tools)

  • repo_create_pull_request - Create pull requests

  • repo_list_pull_requests_by_repo - List PRs

  • repo_get_pull_request_by_id - Get PR details

  • repo_list_branches_by_repo - List branches

  • repo_search_commits - Search commits

  • And 13 more...

Search (3 tools)

  • search_code - Search repositories

  • search_wiki - Search wiki pages

  • search_workitem - Search work items

Other Categories

  • Work Management (3 tools): Iterations and teams

  • Releases (2 tools): Release definitions and deployments

  • Wiki (5 tools): Wiki page management

  • Test Plans (6 tools): Test management

  • Core (3 tools): Projects and teams

  • Advanced Security (2 tools): Security alerts

See complete tool list

๐Ÿš€ Quick Start

  1. Fork this repository

  2. Deploy to Render:

    • Go to render.com

    • Create new Web Service

    • Connect your forked repository

    • Set environment variables (see below)

  3. Set Environment Variables:

    AZURE_DEVOPS_ORG=your-organization-name
    AZURE_DEVOPS_PAT=your-personal-access-token
  4. Deploy and get your URL: https://your-service.onrender.com

Option 2: Local Development

# Clone repository
git clone https://github.com/ennuiii/DevOpsMcpPAT.git
cd DevOpsMcpPAT

# Install dependencies
npm install

# Set environment variables
export AZURE_DEVOPS_ORG="your-org"
export AZURE_DEVOPS_PAT="your-pat-token"

# Build and start
npm run build
npm start

# Server will be available at http://localhost:3000

๐Ÿ”‘ Environment Variables

Required

Variable

Description

Example

AZURE_DEVOPS_ORG

Your Azure DevOps organization name

contoso

AZURE_DEVOPS_PAT

Personal Access Token

your-token-here

Optional

Variable

Description

Default

PORT

HTTP server port

3000

NODE_ENV

Node.js environment

production

๐ŸŽซ Creating a Personal Access Token

  1. Go to Azure DevOps: https://dev.azure.com/{your-organization}

  2. Click User Settings โ†’ Personal Access Tokens

  3. Click "New Token"

  4. Configure scopes:

    • โœ… Work Items: Read & Write

    • โœ… Code: Read & Write

    • โœ… Build: Read & Execute

    • โœ… Release: Read, Write & Execute

    • โœ… Project and Team: Read

    • โœ… Analytics: Read

    • โœ… Test Management: Read & Write

๐Ÿ“ก API Endpoints

Health & Info

  • GET / - API documentation

  • GET /health - Health check

Tools

  • GET /api/tools - List all available tools

  • POST /api/tools/{toolName} - Call specific tool

MCP Protocol

  • POST /mcp - JSON-RPC 2.0 endpoint

๐Ÿงช Example Usage

Get Work Item

curl -X POST https://your-service.onrender.com/api/tools/wit_get_work_item \
  -H "Content-Type: application/json" \
  -d '{"id": 123, "project": "MyProject"}'

List Projects

curl -X POST https://your-service.onrender.com/api/tools/core_list_projects \
  -H "Content-Type: application/json" \
  -d '{}'

Search Code

curl -X POST https://your-service.onrender.com/api/tools/search_code \
  -H "Content-Type: application/json" \
  -d '{"searchText": "function", "project": ["MyProject"]}'

๐Ÿ—๏ธ Project Structure

โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ index.ts              # CLI MCP server (PAT auth)
โ”‚   โ”œโ”€โ”€ server-web.ts         # HTTP server wrapper
โ”‚   โ”œโ”€โ”€ tools/                # Tool implementations
โ”‚   โ”‚   โ”œโ”€โ”€ workitems.ts     # Work item tools
โ”‚   โ”‚   โ”œโ”€โ”€ builds.ts        # Build tools
โ”‚   โ”‚   โ”œโ”€โ”€ repos.ts         # Repository tools
โ”‚   โ”‚   โ””โ”€โ”€ ...              # Other tool categories
โ”‚   โ”œโ”€โ”€ prompts.ts           # MCP prompts
โ”‚   โ””โ”€โ”€ utils.ts             # Utilities
โ”œโ”€โ”€ package.json             # Dependencies & scripts
โ”œโ”€โ”€ tsconfig.json           # TypeScript config
โ”œโ”€โ”€ render.yaml             # Render deployment config
โ”œโ”€โ”€ Dockerfile              # Container config
โ””โ”€โ”€ README.md               # This file

๐Ÿ”„ Differences from Original

Feature

Original Azure DevOps MCP

This PAT Version

Authentication

Azure CLI / DefaultAzureCredential

Personal Access Token

Dependencies

Requires @azure/identity

No Azure Identity SDK

Setup

Requires az login

Just needs PAT token

Multi-tenant

Yes (via --tenant flag)

No (PAT is org-specific)

Web Interface

No

Yes (HTTP API)

Deployment

Local only

Render.com ready

๐Ÿ› ๏ธ Development

Build

npm run build

Development Mode

npm run dev

Testing

# Test CLI version
export AZURE_DEVOPS_PAT="your-token"
echo '{}' | node dist/index.js your-org

# Test web version
npm start
curl http://localhost:3000/health

๐Ÿ“š Complete Tool Reference

Work Items (19 tools)

  1. wit_list_backlogs - List team backlogs

  2. wit_list_backlog_work_items - List backlog work items

  3. wit_my_work_items - Get user's work items

  4. wit_get_work_items_batch_by_ids - Batch get work items

  5. wit_get_work_item - Get single work item

  6. wit_list_work_item_comments - List work item comments

  7. wit_add_work_item_comment - Add work item comment

  8. wit_add_child_work_items - Create child work items

  9. wit_link_work_item_to_pull_request - Link to PR

  10. wit_get_work_items_for_iteration - Get iteration work items

  11. wit_update_work_item - Update work item

  12. wit_get_work_item_type - Get work item type

  13. wit_create_work_item - Create work item

  14. wit_get_query - Get query definition

  15. wit_get_query_results_by_id - Execute query

  16. wit_update_work_items_batch - Batch update

  17. wit_work_items_link - Link work items

  18. wit_work_item_unlink - Unlink work items

  19. wit_add_artifact_link - Link artifacts

Builds (9 tools)

  1. build_get_definitions - List build definitions

  2. build_get_definition_revisions - Get definition history

  3. build_get_builds - List builds

  4. build_get_log - Get build logs

  5. build_get_log_by_id - Get specific log

  6. build_get_changes - Get build changes

  7. build_run_build - Trigger build

  8. build_get_status - Get build status

  9. build_update_build_stage - Update build stage

Repositories (18 tools)

  1. repo_create_pull_request - Create PR

  2. repo_update_pull_request - Update PR

  3. repo_update_pull_request_reviewers - Manage reviewers

  4. repo_list_repos_by_project - List repositories

  5. repo_list_pull_requests_by_repo - List PRs by repo

  6. repo_list_pull_requests_by_project - List PRs by project

  7. repo_list_pull_request_threads - List PR threads

  8. repo_list_pull_request_thread_comments - List thread comments

  9. repo_list_branches_by_repo - List branches

  10. repo_list_my_branches_by_repo - List my branches

  11. repo_get_repo_by_name_or_id - Get repository

  12. repo_get_branch_by_name - Get branch

  13. repo_get_pull_request_by_id - Get PR

  14. repo_reply_to_comment - Reply to PR comment

  15. repo_create_pull_request_thread - Create PR thread

  16. repo_resolve_comment - Resolve PR comment

  17. repo_search_commits - Search commits

  18. repo_list_pull_requests_by_commits - Find PRs by commits

Search (3 tools)

  1. search_code - Search code repositories

  2. search_wiki - Search wiki pages

  3. search_workitem - Search work items

Work Management (3 tools)

  1. work_list_team_iterations - List team iterations

  2. work_create_iterations - Create iterations

  3. work_assign_iterations - Assign iterations to team

Releases (2 tools)

  1. release_get_definitions - List release definitions

  2. release_get_releases - List releases

Wiki (5 tools)

  1. wiki_list_wikis - List wikis

  2. wiki_get_wiki - Get wiki details

  3. wiki_list_pages - List wiki pages

  4. wiki_get_page_content - Get page content

  5. wiki_create_or_update_page - Create/update page

Test Plans (6 tools)

  1. testplan_list_test_plans - List test plans

  2. testplan_create_test_plan - Create test plan

  3. testplan_add_test_cases_to_suite - Add test cases

  4. testplan_create_test_case - Create test case

  5. testplan_list_test_cases - List test cases

  6. testplan_show_test_results_from_build_id - Get test results

Core (3 tools)

  1. core_list_project_teams - List project teams

  2. core_list_projects - List projects

  3. core_get_identity_ids - Get identity IDs

Advanced Security (2 tools)

  1. advsec_get_alerts - Get security alerts

  2. advsec_get_alert_details - Get alert details

๐Ÿ› Troubleshooting

Common Issues

Authentication Failed

  • Verify PAT token is valid and not expired

  • Check token has required scopes

  • Ensure organization name is correct

Service Won't Start

  • Check environment variables are set

  • Verify Node.js version >= 20.0.0

  • Check logs for specific error messages

Tool Execution Fails

  • Ensure PAT has permissions for the specific operation

  • Check project/repository names are correct

  • Verify work item IDs exist

๐Ÿ“„ License

MIT License - see LICENSE file for details.

๐Ÿค Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Add tests if applicable

  5. Submit a pull request

โญ Star History

If this project helped you, please consider giving it a star! โญ

Available Tools

70 tools
advsec_get_alert_detailsB

Get detailed information about a specific Advanced Security alert.

ParametersJSON Schema
NameRequiredDescriptionDefault
alertIdYesThe ID of the alert to retrieve details for.
projectYesThe name or ID of the Azure DevOps project.
refNoGit reference (branch) to filter the alert.
repositoryYesThe name or ID of the repository containing the alert.

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 full burden for behavioral disclosure but adds minimal context. It states this is a read operation ('Get'), but doesn't mention authentication requirements, rate limits, error conditions, response format, or whether it's idempotent. For a tool that likely accesses sensitive security data, this lack of behavioral context is a significant gap.

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

Conciseness5/5

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

The description is a single, efficient sentence that states exactly what the tool does without unnecessary words. It's appropriately sized for a straightforward retrieval tool and front-loads the core functionality. 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 read-only tool with 100% schema coverage, the description is minimally adequate. However, with no output schema and no annotations, the description should ideally provide more context about what 'detailed information' includes or the response structure. The combination of complete parameter documentation but missing behavioral and output context results in a middle score.

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 has 100% description coverage, so all parameters are documented in the schema itself. The description adds no additional parameter semantics beyond what's in the schema - it doesn't explain relationships between parameters (e.g., that alertId must exist within the specified project/repository) or provide examples. This meets the baseline for high schema coverage.

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

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 ('detailed information about a specific Advanced Security alert'), making the purpose unambiguous. It distinguishes from the sibling 'advsec_get_alerts' by specifying retrieval of details for a single alert rather than listing multiple alerts. However, it doesn't explicitly contrast with other security-related tools beyond the sibling, keeping it at 4 rather than 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (like needing project/repository context first), when not to use it, or how it differs from other alert-related tools beyond the implied distinction from 'advsec_get_alerts'. The agent must infer usage from the tool name and parameters alone.

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

advsec_get_alertsC

Retrieve Advanced Security alerts for a repository.

ParametersJSON Schema
NameRequiredDescriptionDefault
alertTypeNoFilter alerts by type. If not specified, returns all alert types.
confidenceLevelsYesFilter alerts by confidence levels. Only applicable for secret alerts. Defaults to both 'high' and 'other'.
continuationTokenNoContinuation token for pagination.
onlyDefaultBranchNoIf true, only return alerts found on the default branch. Defaults to true.
orderByNoOrder results by specified field. Defaults to 'severity'.severity
projectYesThe name or ID of the Azure DevOps project.
refNoFilter alerts by git reference (branch). If not provided and onlyDefaultBranch is true, only includes alerts from default branch.
repositoryYesThe name or ID of the repository to get alerts for.
ruleIdNoFilter alerts by rule ID.
ruleNameNoFilter alerts by rule name.
severitiesNoFilter alerts by severity level. If not specified, returns alerts at any severity.
statesNoFilter alerts by state. If not specified, returns alerts in any state.
toolNameNoFilter alerts by tool name.
topNoMaximum number of alerts to return. Defaults to 100.
validityNoFilter alerts by validity status. Only applicable for secret alerts.

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 mentions retrieval but fails to describe key traits like pagination behavior (implied by 'continuationToken' in schema), rate limits, authentication needs, or what the return format looks like. This is inadequate for a tool with 15 parameters and no output schema.

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

Conciseness5/5

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

The description is a single, direct sentence that efficiently conveys the core purpose without unnecessary words. It is front-loaded and appropriately sized for the tool's complexity, making it easy to parse quickly.

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

Completeness2/5

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

Given the tool's complexity (15 parameters, no output schema, and no annotations), the description is insufficient. It does not explain the return structure, pagination, error handling, or behavioral nuances, leaving significant gaps for the agent to operate effectively in a real-world context.

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

Parameters3/5

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

The input schema has 100% description coverage, so parameters are well-documented in the schema itself. The description does not add any meaningful semantic context beyond what the schema provides, such as explaining interactions between parameters or usage examples. This meets the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the action ('Retrieve') and resource ('Advanced Security alerts for a repository'), making the purpose specific and understandable. However, it does not explicitly differentiate from its sibling 'advsec_get_alert_details', which likely fetches details for a specific alert, so it misses full sibling 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?

The description provides no guidance on when to use this tool versus alternatives, such as its sibling 'advsec_get_alert_details' or other alert-related tools. It lacks context on prerequisites, timing, or exclusions, leaving the agent to infer usage based on the tool name alone.

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

build_get_buildsC

Retrieves a list of builds for a given project.

ParametersJSON Schema
NameRequiredDescriptionDefault
branchNameNoBranch name to filter builds
buildIdsNoArray of build IDs to retrieve
buildNumberNoBuild number to filter builds
continuationTokenNoToken for continuing paged results
definitionsNoArray of build definition IDs to filter builds
deletedFilterNoFilter for deleted builds (see QueryDeletedOption enum)
maxBuildsPerDefinitionNoMaximum number of builds per definition
maxTimeNoMaximum finish time to filter builds
minTimeNoMinimum finish time to filter builds
projectYesProject ID or name to get builds for
propertiesNoArray of property names to include in the results
queryOrderNoOrder in which builds are returnedQueueTimeDescending
queuesNoArray of queue IDs to filter builds
reasonFilterNoReason filter for the build (see BuildReason enum)
repositoryIdNoRepository ID to filter builds
repositoryTypeNoType of repository to filter builds
requestedForNoUser ID or name who requested the build
resultFilterNoResult filter for the build (see BuildResult enum)
statusFilterNoStatus filter for the build (see BuildStatus enum)
tagFiltersNoArray of tags to filter builds
topNoMaximum number of builds 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 states it 'retrieves a list,' implying a read-only operation, but doesn't cover critical aspects like pagination behavior (implied by 'continuationToken' in schema), rate limits, authentication needs, or what the returned list structure looks like. For a tool with 21 parameters and no annotations, this is a significant gap in transparency.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It's appropriately sized and front-loaded, making it easy to parse quickly.

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

Completeness2/5

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

Given the complexity (21 parameters, no output schema, no annotations), the description is inadequate. It doesn't explain the return format, pagination, filtering logic, or error handling. For a list-retrieval tool with many optional filters, more context is needed to guide effective use.

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

Parameters3/5

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

The schema description coverage is 100%, with detailed descriptions for all 21 parameters, so the schema does the heavy lifting. The description adds no additional parameter semantics beyond implying a list retrieval, which is already clear from the schema. This meets the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the action ('Retrieves') and resource ('list of builds for a given project'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'build_get_status' or 'build_get_changes', which might also involve retrieving build-related information, so it lacks specific sibling 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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, exclusions, or compare it to other build-related tools in the sibling list, leaving the agent with no contextual usage information.

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

build_get_changesC

Get the changes associated with a specific build.

ParametersJSON Schema
NameRequiredDescriptionDefault
buildIdYesID of the build to get changes for
continuationTokenNoContinuation token for pagination
includeSourceChangeNoWhether to include source changes in the results, defaults to false
projectYesProject ID or name to get the build changes for
topNoNumber of changes to retrieve, defaults to 100

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 states it's a read operation ('Get'), but doesn't mention pagination behavior (implied by 'continuationToken' in schema), rate limits, authentication requirements, or what 'changes' specifically refers to (e.g., code changes, status changes). This leaves significant gaps for a tool with 5 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, clear sentence with zero wasted words. It's appropriately sized for a straightforward retrieval tool and front-loads the essential information without unnecessary elaboration.

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

Completeness2/5

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

For a tool with 5 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what 'changes' means in this context, what format results return, or behavioral aspects like pagination. The 100% schema coverage helps, but the description should provide more context about the operation's scope and results.

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 5 parameters. The description adds no additional parameter semantics beyond implying 'buildId' is required. This meets the baseline of 3 when schema does the heavy lifting, but doesn't provide extra value like explaining relationships between parameters.

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 ('changes associated with a specific build'), making the purpose understandable. It doesn't explicitly differentiate from siblings like 'build_get_builds' or 'testplan_show_test_results_from_build_id', but the specificity of 'changes' provides some implicit 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?

The description provides no guidance on when to use this tool versus alternatives. With many sibling tools in the build and test domains, there's no mention of prerequisites, appropriate contexts, or comparisons to similar tools like 'build_get_log' or 'testplan_show_test_results_from_build_id'.

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

build_get_definition_revisionsC

Retrieves a list of revisions for a specific build definition.

ParametersJSON Schema
NameRequiredDescriptionDefault
definitionIdYesID of the build definition to get revisions for
projectYesProject ID or name to get the build definition revisions for

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. It states the tool retrieves a list, implying a read-only operation, but doesn't disclose behavioral details like whether it requires authentication, has rate limits, returns paginated results, or what the output format looks like. 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, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse quickly.

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

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 incomplete. It doesn't explain what a 'revision' entails, the return format, or any behavioral aspects like error handling. For a tool that likely returns structured data, more context is needed to guide effective use.

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

Parameters3/5

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

The schema description coverage is 100%, with clear descriptions for both parameters ('definitionId' and 'project'). The description adds no additional parameter semantics beyond what the schema provides, such as format examples or constraints. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the action ('retrieves a list of revisions') and resource ('for a specific build definition'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'build_get_definitions' or 'build_get_builds', which might handle related but different 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 guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as needing an existing build definition, or compare it to siblings like 'build_get_definitions' for broader definition queries. Usage context is implied but not stated.

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

build_get_definitionsB

Retrieves a list of build definitions for a given project.

ParametersJSON Schema
NameRequiredDescriptionDefault
builtAfterNoReturn definitions that have builds after this date
continuationTokenNoToken for continuing paged results
definitionIdsNoArray of build definition IDs to filter
includeAllPropertiesNoWhether to include all properties in the results
includeLatestBuildsNoWhether to include the latest builds for each definition
minMetricsTimeNoMinimum metrics time to filter build definitions
nameNoName of the build definition to filter
notBuiltAfterNoReturn definitions that do not have builds after this date
pathNoPath of the build definition to filter
processTypeNoProcess type to filter build definitions
projectYesProject ID or name to get build definitions for
queryOrderNoOrder in which build definitions are returned
repositoryIdNoRepository ID to filter build definitions
repositoryTypeNoType of repository to filter build definitions
taskIdFilterNoTask ID to filter build definitions
topNoMaximum number of build definitions to return
yamlFilenameNoYAML filename to filter build definitions

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 of behavioral disclosure. It states 'Retrieves a list' which implies a read-only operation, but doesn't mention pagination behavior (though 'continuationToken' in schema hints at it), rate limits, authentication needs, or what happens with large result sets. This leaves significant gaps for an agent to understand operational constraints.

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

Conciseness5/5

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

The description is a single, clear sentence that efficiently communicates the core purpose without unnecessary words. It's front-loaded with the essential action and resource, making it easy to parse quickly.

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

Completeness3/5

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

Given the complexity (17 parameters, no output schema, no annotations), the description is minimally adequate. It identifies the resource but doesn't explain return format, error conditions, or relationship to sibling tools. For a list-retrieval tool with many filtering options, more context about typical usage patterns would be helpful.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters are documented in the schema itself. The description adds no additional parameter semantics beyond stating it retrieves 'for a given project' (which aligns with the required 'project' parameter). This meets the baseline for high schema coverage but doesn't provide extra value.

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

Purpose4/5

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

The description clearly states the verb ('Retrieves') and resource ('list of build definitions for a given project'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'build_get_definition_revisions' or 'release_get_definitions', which might retrieve similar but different resources.

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 available (e.g., 'build_get_definition_revisions', 'release_get_definitions'), there's no indication of context, prerequisites, or exclusions to help an agent choose appropriately.

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

build_get_logC

Retrieves the logs for a specific build.

ParametersJSON Schema
NameRequiredDescriptionDefault
buildIdYesID of the build to get the log for
projectYesProject ID or name to get the build log for

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 states it 'retrieves' logs, implying a read-only operation, but doesn't specify permissions needed, rate limits, pagination, log format, or error handling. This is insufficient for a tool that likely accesses system data.

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, efficient sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly.

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

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 incomplete. It doesn't explain what the logs contain, their format, or potential limitations, which is critical for a retrieval tool in a build system context with many sibling tools.

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 clear descriptions for both parameters ('buildId' and 'project'). The description adds no additional semantic context beyond what the schema provides, such as examples or constraints, so it meets the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the verb ('Retrieves') and resource ('logs for a specific build'), making the purpose unambiguous. It doesn't explicitly differentiate from sibling tools like 'build_get_log_by_id' or 'build_get_status', but the specificity is adequate for understanding what it 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. It doesn't mention siblings like 'build_get_log_by_id' (which might have different parameters) or 'testplan_show_test_results_from_build_id' (which might serve a related purpose), leaving the agent without 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.

build_get_log_by_idC

Get a specific build log by log ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
buildIdYesID of the build to get the log for
endLineNoEnding line number for the log content, defaults to the end of the log
logIdYesID of the log to retrieve
projectYesProject ID or name to get the build log for
startLineNoStarting line number for the log content, defaults to 0

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 states it's a read operation ('Get'), implying non-destructive behavior, but doesn't cover aspects like authentication needs, rate limits, error handling, or response format, leaving significant gaps for a mutation-free 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, clear sentence with no wasted words, making it highly concise and front-loaded. It efficiently conveys the core purpose without unnecessary elaboration.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete for a tool with 5 parameters. It lacks details on behavioral traits, error cases, or return values, making it insufficient for full contextual understanding despite the clear purpose.

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 parameters are well-documented in the schema. The description adds no additional semantic context beyond implying retrieval by 'log ID', which aligns with the schema. Baseline score of 3 is appropriate as the schema handles parameter documentation effectively.

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

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 ('specific build log by log ID'), making the purpose understandable. However, it doesn't differentiate from sibling 'build_get_log' (which appears to fetch logs without specifying a log ID), missing full distinction for a score of 5.

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 'build_get_log' or other build-related tools. The description lacks context, prerequisites, or exclusions, offering minimal usage direction.

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

build_get_statusB

Fetches the status of a specific build.

ParametersJSON Schema
NameRequiredDescriptionDefault
buildIdYesID of the build to get the status for
projectYesProject ID or name to get the build status for

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 of behavioral disclosure. It states 'fetches the status,' implying a read-only operation, but doesn't specify authentication needs, rate limits, error handling, or what the status entails (e.g., pending, success, failure). This leaves significant gaps for a tool that likely interacts with a build system.

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

Conciseness5/5

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

The description is a single, clear sentence that efficiently conveys the core purpose without unnecessary words. It's front-loaded and wastes no space, making it easy to parse quickly.

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

Completeness3/5

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

Given the complexity of build systems and lack of annotations or output schema, the description is minimally adequate. It identifies the tool's function but doesn't cover behavioral aspects like response format or error conditions, leaving room for improvement in context.

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

Parameters3/5

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

The input schema has 100% description coverage, clearly documenting both parameters ('buildId' and 'project'). The description doesn't add any meaning beyond this, such as format examples or constraints, but the schema provides adequate baseline information, justifying a score of 3.

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

Purpose4/5

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

The description clearly states the action ('fetches') and resource ('status of a specific build'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'build_get_builds' or 'testplan_show_test_results_from_build_id', which might also provide build-related information, so it doesn't reach the highest score.

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 related to builds (e.g., 'build_get_builds', 'build_get_log', 'testplan_show_test_results_from_build_id'), there's no indication of context, prerequisites, or exclusions for selecting this specific tool.

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

build_run_buildC

Triggers a new build for a specified definition.

ParametersJSON Schema
NameRequiredDescriptionDefault
definitionIdYesID of the build definition to run
parametersNoCustom build parameters as key-value pairs
projectYesProject ID or name to run the build in
sourceBranchNoSource branch to run the build from. If not provided, the default branch will be used.

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 states the tool 'triggers a new build' which implies a write/mutation operation, but doesn't disclose critical behaviors like whether this requires specific permissions, if it's rate-limited, what happens on success/failure, or if it returns a build ID. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It's appropriately sized for a tool with clear functionality and doesn't bury key information. 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?

For a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what happens after triggering the build, what the expected response might be, error conditions, or authentication requirements. Given the complexity of build systems and the lack of structured behavioral information, the description should provide more operational context.

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

Parameters3/5

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

The schema description coverage is 100%, with all parameters well-documented in the schema itself. The description doesn't add any meaningful parameter semantics beyond what's already in the schema descriptions (e.g., it doesn't explain relationships between parameters or provide usage examples). This meets the baseline of 3 when the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the action ('Triggers a new build') and the target ('for a specified definition'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'build_get_builds' or 'build_update_build_stage', which would require mentioning this is specifically for initiating new builds rather than retrieving or modifying existing ones.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid build definition), exclusions, or related tools like 'build_get_definitions' for finding definition IDs. This leaves the agent without context for appropriate tool selection.

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

build_update_build_stageC

Updates the stage of a specific build.

ParametersJSON Schema
NameRequiredDescriptionDefault
buildIdYesID of the build to update
forceRetryAllJobsNoWhether to force retry all jobs in the stage.
projectYesProject ID or name to update the build stage for
stageNameYesName of the stage to update
statusYesNew status for the stage

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. 'Updates' implies a mutation operation, but the description doesn't mention permission requirements, whether changes are reversible, what happens to dependent processes, or what the expected response looks like. For a tool that modifies build stages, this is a significant gap in 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 extremely concise with a single sentence that directly states the tool's purpose. There's zero wasted language or unnecessary elaboration, making it easy to parse quickly.

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

Completeness2/5

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

For a mutation tool with 5 parameters and no annotations or output schema, the description is insufficient. It doesn't explain the tool's role in the build pipeline, what happens when stages are updated, error conditions, or success indicators. The agent would need to guess about important behavioral aspects of this state-changing 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 description coverage is 100%, so all parameters are documented in the schema. The description doesn't add any meaningful parameter semantics beyond what's already in the schema - it doesn't explain relationships between parameters (like how buildId relates to project) or provide usage examples. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the action ('Updates') and target ('stage of a specific build'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'build_run_build' or 'build_get_status' which also operate on builds, leaving some ambiguity about when to choose this specific 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?

The description provides no guidance on when to use this tool versus alternatives. With multiple build-related sibling tools (build_get_builds, build_run_build, build_get_status), there's no indication of when stage updates are appropriate versus other build operations or how this relates to the broader build workflow.

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

core_get_identity_idsB

Retrieve Azure DevOps identity IDs for a provided search filter.

ParametersJSON Schema
NameRequiredDescriptionDefault
searchFilterYesSearch filter (unique namme, display name, email) to retrieve identity IDs for.

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 states the tool retrieves IDs but doesn't disclose behavioral traits like authentication requirements, rate limits, pagination, error handling, or what happens if no matches are found. This leaves significant gaps for a retrieval 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, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, making it easy to understand 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?

Given the tool's moderate complexity (retrieval with a filter), no annotations, and no output schema, the description is minimally adequate but incomplete. It covers the basic purpose but lacks details on behavior, usage context, and output format, which are important for effective tool 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 the schema already documents the single parameter 'searchFilter' with its description. The description adds no additional meaning beyond what the schema provides, such as examples of valid filters or search syntax. Baseline 3 is appropriate when schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the action ('Retrieve') and resource ('Azure DevOps identity IDs') with a specific scope ('for a provided search filter'). It distinguishes itself from sibling tools that handle builds, releases, repositories, etc., but doesn't explicitly differentiate from potential identity-related siblings (none are listed).

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 a search filter but doesn't specify scenarios, prerequisites, or exclusions. Sibling tools include various retrieval functions, but no explicit comparison is made.

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

core_list_projectsB

Retrieve a list of projects in your Azure DevOps organization.

ParametersJSON Schema
NameRequiredDescriptionDefault
continuationTokenNoContinuation token for pagination. Used to fetch the next set of results if available.
projectNameFilterNoFilter projects by name. Supports partial matches.
skipNoThe number of projects to skip for pagination. Defaults to 0.
stateFilterNoFilter projects by their state. Defaults to 'wellFormed'.wellFormed
topNoThe maximum number of projects to return. Defaults to 100.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states this is a retrieval operation, implying read-only behavior, but doesn't disclose important behavioral traits like authentication requirements, rate limits, pagination details (beyond what's in the schema), error conditions, or response format. For a tool with no annotation coverage, this leaves significant gaps.

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

Conciseness5/5

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

The description is a single, clear sentence with zero waste. It's front-loaded with the core purpose and appropriately sized for a simple list operation. 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?

Given the tool's moderate complexity (5 parameters, no output schema, no annotations), the description is minimally adequate but incomplete. It covers the basic purpose but lacks behavioral context, usage guidelines, and output details. For a list tool with filtering and pagination, more guidance would be helpful.

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

Parameters3/5

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

The description adds no parameter semantics beyond what's already in the schema (which has 100% coverage). It doesn't explain how parameters interact, provide examples, or clarify edge cases. With high schema coverage, the baseline is 3, but the description doesn't compensate with additional insights.

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 ('Retrieve') and resource ('list of projects in your Azure DevOps organization'), making the purpose immediately understandable. However, it doesn't differentiate this tool from other list/retrieve tools in the sibling set (like core_list_project_teams or repo_list_repos_by_project), which would require 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 Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, context for filtering, or comparison to sibling tools like core_list_project_teams. The agent must infer usage solely from the tool name and parameters.

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

core_list_project_teamsC

Retrieve a list of teams for the specified Azure DevOps project.

ParametersJSON Schema
NameRequiredDescriptionDefault
mineNoIf true, only return teams that the authenticated user is a member of.
projectYesThe name or ID of the Azure DevOps project.
skipNoThe number of teams to skip for pagination. Defaults to 0.
topNoThe maximum number of teams to return. Defaults to 100.

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 full burden. It mentions retrieval but lacks behavioral details: it doesn't specify authentication requirements, rate limits, pagination behavior (beyond schema hints), error conditions, or what the returned list includes (e.g., team IDs, names, members). This is inadequate for a tool with parameters and no output schema.

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

Conciseness5/5

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

The description is a single, clear sentence with zero wasted words. It's front-loaded with the core purpose and efficiently specifies the resource context. Every element earns its place without 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?

Given 4 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain return values (e.g., list format, fields), error handling, or behavioral constraints like authentication. For a retrieval tool with pagination parameters, this leaves significant gaps for an agent to use it correctly.

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 parameters. The description adds no parameter-specific information beyond implying the 'project' parameter is required. Baseline 3 is appropriate as the schema does the heavy lifting, but the description doesn't enhance understanding of parameter interactions or defaults.

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 ('retrieve a list') and resource ('teams for the specified Azure DevOps project'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'core_list_projects' or 'wit_list_backlogs' beyond the resource type, which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing project access), compare to similar tools (e.g., 'wit_list_backlog_work_items' for work items), or specify use cases (e.g., team management vs. project overview).

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

release_get_definitionsC

Retrieves list of release definitions for a given project.

ParametersJSON Schema
NameRequiredDescriptionDefault
artifactSourceIdNoFilter by artifact source ID
artifactTypeNoFilter by artifact type
continuationTokenNoContinuation token for pagination
definitionIdFilterNoFilter by specific release definition IDs
expandNoExpand options for release definitionsNone
isDeletedNoWhether to include deleted release definitions. Default is false.
isExactNameMatchNoWhether to match the exact name of the release definition. Default is false.
pathNoPath to filter release definitions
projectYesProject ID or name to get release definitions for
propertyFiltersNoFilter by properties associated with the release definitions
queryOrderNoOrder of the resultsNameAscending
searchTextNoSearch text to filter release definitions
searchTextContainsFolderNameNoWhether to include folder names in the search text
tagFilterNoFilter by tags associated with the release definitions
topNoNumber of results to return (for pagination)

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 states it's a retrieval operation, implying read-only behavior, but doesn't mention any side effects, authentication requirements, rate limits, or pagination details beyond what's in the schema. For a tool with 15 parameters and no annotation coverage, this leaves significant gaps in understanding its 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, clear sentence that efficiently conveys the core purpose without unnecessary words. It's front-loaded with the main action and resource, making it easy to parse quickly. Every word earns its place.

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

Completeness2/5

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

Given the tool's complexity (15 parameters, no output schema, no annotations), the description is inadequate. It doesn't explain what a 'release definition' is, how results are structured, or any behavioral nuances like pagination or filtering logic. For a list-retrieval tool with many options, more context is needed to guide effective use.

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

Parameters3/5

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

The schema description coverage is 100%, meaning all parameters are documented in the schema itself. The description adds no additional parameter semantics beyond stating it retrieves 'list of release definitions for a given project', which aligns with the schema but doesn't provide extra context. This meets the baseline score when schema coverage is high.

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 ('Retrieves list') and resource ('release definitions for a given project'), making the purpose immediately understandable. However, it doesn't explicitly differentiate this tool from similar sibling tools like 'build_get_definitions' or 'release_get_releases', which would require mentioning what distinguishes release definitions from other types of definitions or releases.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, such as needing project access, or compare it to sibling tools like 'release_get_releases' or 'build_get_definitions' to help the agent choose appropriately. Usage is implied only by the tool name and description.

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

release_get_releasesC

Retrieves a list of releases for a given project.

ParametersJSON Schema
NameRequiredDescriptionDefault
artifactTypeIdNoFilter releases by artifact type ID
artifactVersionIdNoFilter releases by artifact version ID
continuationTokenNoContinuation token for pagination
createdByNoUser ID or name who created the release
definitionEnvironmentIdNoID of the definition environment to filter releases
definitionIdNoID of the release definition to filter releases
environmentStatusFilterNoEnvironment status to filter releases
expandNoExpand options for releasesNone
isDeletedNoWhether to include deleted releases (default: false)
maxCreatedTimeNoMaximum created time for releases (default: now)2025-08-19T07:02:49.644Z
minCreatedTimeNoMinimum created time for releases (default: 7 days ago)2025-08-12T07:02:49.644Z
pathNoPath to filter releases
projectNoProject ID or name to get releases for
propertyFiltersNoFilter releases by properties
queryOrderNoOrder in which to return releases (default: Ascending)Ascending
releaseIdFilterNoFilter by specific release IDs
searchTextNoSearch text to filter releases
sourceBranchFilterNoFilter releases by source branch
sourceIdNoFilter releases by artifact source ID
statusFilterNoStatus of the releases to filter (default: Active)Active
tagFilterNoFilter releases by tags
topNoNumber of releases to return

TDQS

C2.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. It only states the basic action without disclosing behavioral traits like pagination details (implied by 'continuationToken' but not explained), rate limits, authentication needs, or what happens with large result sets. This is inadequate for a tool with 22 parameters and no output schema.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.

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

Completeness2/5

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

Given the complexity (22 parameters, no annotations, no output schema), the description is insufficient. It lacks details on return values, error handling, or usage context, leaving significant gaps for an agent to understand how to effectively invoke this 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?

Schema description coverage is 100%, so the schema fully documents all 22 parameters. The description adds no additional parameter semantics beyond what's in the schema, meeting the baseline score of 3 for high coverage without extra value.

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

Purpose3/5

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

The description states the tool 'retrieves a list of releases for a given project,' which is a clear verb+resource combination. However, it doesn't distinguish this from sibling tools like 'release_get_definitions' or other list/retrieve tools in the server, leaving the purpose somewhat generic for this context.

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 doesn't mention prerequisites, context-specific recommendations, or exclusions, which is a significant gap given the many sibling tools available.

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

repo_create_pull_requestC

Create a new pull request.

ParametersJSON Schema
NameRequiredDescriptionDefault
descriptionNoThe description of the pull request. Optional.
forkSourceRepositoryIdNoThe ID of the fork repository that the pull request originates from. Optional, used when creating a pull request from a fork.
isDraftNoIndicates whether the pull request is a draft. Defaults to false.
repositoryIdYesThe ID of the repository where the pull request will be created.
sourceRefNameYesThe source branch name for the pull request, e.g., 'refs/heads/feature-branch'.
targetRefNameYesThe target branch name for the pull request, e.g., 'refs/heads/main'.
titleYesThe title of the pull request.
workItemsNoWork item IDs to associate with the pull request, space-separated.

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. 'Create a new pull request' implies a write operation but doesn't mention authentication requirements, rate limits, whether it returns the created pull request object, or any side effects. For a mutation tool with zero annotation coverage, this is insufficient 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, efficient sentence that states the core purpose without any wasted words. It's appropriately front-loaded and earns its place as a minimal but clear statement of what the tool does.

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 complex mutation tool with 8 parameters and no annotations or output schema, the description is inadequate. It doesn't explain what happens after creation, what permissions are required, or how this tool relates to other pull request operations. The context signals indicate this is a significant operation that needs more explanation than provided.

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 description coverage is 100%, with all 8 parameters well-documented in the schema itself. The description adds no parameter information beyond what's already in the schema, which meets the baseline expectation when schema coverage is high. No additional value is provided regarding parameter usage or relationships.

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

Purpose4/5

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

The description 'Create a new pull request' clearly states the action (create) and resource (pull request), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'repo_update_pull_request' or 'repo_create_pull_request_thread', which would require a more specific scope statement to earn a 5.

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

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 multiple sibling tools related to pull requests (e.g., 'repo_update_pull_request', 'repo_get_pull_request_by_id'), there's no indication of when this creation tool is appropriate versus when to use other pull request operations.

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

repo_create_pull_request_threadC

Creates a new comment thread on a pull request.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesThe content of the comment to be added.
filePathNoThe path of the file where the comment thread will be created. (optional)
projectNoProject ID or project name (optional)
pullRequestIdYesThe ID of the pull request where the comment thread exists.
repositoryIdYesThe ID of the repository where the pull request is located.
rightFileEndLineNoPosition of last character of the thread's span in right file. The line number of a thread's position. Starts at 1. Must only be set if rightFileStartLine is also specified. (optional)
rightFileEndOffsetNoPosition of last character of the thread's span in right file. The character offset of a thread's position inside of a line. Must only be set if rightFileEndLine is also specified. (optional)
rightFileStartLineNoPosition of first character of the thread's span in right file. The line number of a thread's position. Starts at 1. (optional)
rightFileStartOffsetNoPosition of first character of the thread's span in right file. The line number of a thread's position. The character offset of a thread's position inside of a line. Starts at 1. Must only be set if rightFileStartLine is also specified. (optional)
statusNoThe status of the comment thread. Defaults to 'Active'.Active

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 states the tool creates a comment thread but doesn't mention permissions required, whether this is a write operation (implied but not explicit), rate limits, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It's appropriately sized and front-loaded, making it easy to parse quickly.

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

Completeness2/5

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

For a mutation tool with 10 parameters, no annotations, and no output schema, the description is incomplete. It doesn't address behavioral aspects like permissions, side effects, or response format, leaving significant gaps for the agent to infer or guess.

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 description coverage is 100%, meaning all parameters are documented in the schema itself. The description adds no additional parameter information beyond what's in the schema (e.g., it doesn't explain relationships between parameters like filePath and line offsets). Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the action ('Creates') and target ('new comment thread on a pull request'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'repo_reply_to_comment' or 'repo_resolve_comment', which also involve pull request comments, so it misses full sibling differentiation.

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

Usage 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 doesn't mention prerequisites, context (e.g., when to create a thread vs. reply to an existing one), or exclusions, leaving the agent with no usage direction beyond the basic purpose.

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

repo_get_branch_by_nameC

Get a branch by its name.

ParametersJSON Schema
NameRequiredDescriptionDefault
branchNameYesThe name of the branch to retrieve, e.g., 'main' or 'feature-branch'.
repositoryIdYesThe ID of the repository where the branch is located.

TDQS

C2.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 full burden. It doesn't disclose behavioral traits such as required permissions, error handling (e.g., if branch doesn't exist), rate limits, or what data is returned (e.g., branch metadata, commit details). 'Get' is ambiguousโ€”it could imply read-only, but no explicit safety or operational context is given.

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, efficient sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place without 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?

Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'get' returns (e.g., branch details, commit hash, permissions) or behavioral aspects like error cases. For a tool with 2 parameters and no structured output info, more context is needed to guide effective use.

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

Parameters3/5

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

Schema description coverage is 100%, with clear descriptions for both parameters ('branchName' and 'repositoryId'). The description adds no additional meaning beyond the schema, which already defines the parameters well. Baseline 3 is appropriate as the schema does the heavy lifting.

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

Purpose3/5

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

The description states the action ('Get') and resource ('a branch'), but it's vague about scope and doesn't distinguish from sibling tools like 'repo_list_branches_by_repo' or 'repo_list_my_branches_by_repo'. It specifies retrieval by name but lacks context about what 'get' entails (e.g., metadata vs. content).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'repo_list_branches_by_repo' for listing branches or 'repo_get_repo_by_name_or_id' for repository info. The description implies usage when a specific branch name is known, but it doesn't mention prerequisites, exclusions, or comparisons to sibling tools.

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

repo_get_pull_request_by_idB

Get a pull request by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeWorkItemRefsNoWhether to reference work items associated with the pull request.
pullRequestIdYesThe ID of the pull request to retrieve.
repositoryIdYesThe ID of the repository where the pull request is located.

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 states it's a read operation ('Get'), which implies non-destructive, but doesn't cover important aspects like authentication requirements, rate limits, error conditions, or what the response includes (e.g., fields returned, format). For a tool with no annotation coverage, this leaves significant gaps.

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

Conciseness5/5

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

The description is a single, direct sentence with zero wasted words. It's appropriately sized for a simple retrieval tool and front-loads the core purpose immediately.

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

Completeness3/5

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

Given the tool's low complexity (simple read operation), high schema coverage (100%), and lack of output schema, the description is minimally adequate. However, it doesn't compensate for the absence of annotations or output schema by explaining behavioral traits or return values, leaving room for improvement in 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%, with clear descriptions for all parameters (pullRequestId, repositoryId, includeWorkItemRefs). The description adds no additional parameter semantics beyond what the schema already provides, so it meets the baseline of 3 where the schema does the heavy lifting.

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 ('a pull request by its ID'), making the purpose immediately understandable. It distinguishes from siblings like repo_list_pull_requests_by_repo (which lists multiple) by specifying retrieval by ID, though it doesn't explicitly mention this distinction in the description text.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing repositoryId and pullRequestId), compare to similar tools (e.g., repo_get_pull_request_by_id vs repo_list_pull_requests_by_repo for single vs multiple), or indicate any constraints.

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

repo_get_repo_by_name_or_idB

Get the repository by project and repository name or ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject name or ID where the repository is located.
repositoryNameOrIdYesRepository name or ID.

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 of behavioral disclosure. It states 'Get' (implying a read operation) but doesn't clarify if this requires specific permissions, what happens if the repository doesn't exist, or the format of the returned data. For a tool with zero annotation coverage, this leaves significant gaps in understanding its 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, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and parameters, making it easy to understand at a glance. Every part of the sentence contributes to clarity.

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

Completeness3/5

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

Given the tool's low complexity (2 parameters, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks details on usage guidelines, behavioral traits, or output format. For a simple read tool, this might suffice, but it doesn't provide a complete picture for effective agent use.

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

Parameters3/5

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

The schema description coverage is 100%, with clear descriptions for both parameters ('project' and 'repositoryNameOrId'). The description mentions these parameters but doesn't add meaningful semantics beyond what the schema already provides, such as examples or constraints. With high schema coverage, the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Get the repository by project and repository name or ID.' It specifies the verb ('Get') and resource ('repository'), and mentions the key parameters (project and repository name/ID). However, it doesn't explicitly differentiate from sibling tools like 'repo_list_repos_by_project' or 'repo_get_branch_by_name', which would require 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 Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'repo_list_repos_by_project' for listing repositories or 'repo_get_branch_by_name' for branch-specific operations. There's no context on prerequisites, such as needing project access, or when this tool is preferred over others.

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

repo_list_branches_by_repoB

Retrieve a list of branches for a given repository.

ParametersJSON Schema
NameRequiredDescriptionDefault
repositoryIdYesThe ID of the repository where the branches are located.
topNoThe maximum number of branches to return. Defaults to 100.

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 full burden but offers minimal behavioral insight. It doesn't disclose whether this is a read-only operation, if it requires specific permissions, how results are ordered, or if there are rate limits. The description only states the basic function without additional 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, clear sentence with zero wasted words. It's front-loaded with the core purpose and efficiently communicates the essential action without unnecessary elaboration.

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 list operation with no annotations and no output schema, the description is minimally adequate. It covers the basic purpose but lacks behavioral details (e.g., pagination, ordering) and usage guidance that would help an agent operate effectively in context with sibling tools.

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 both parameters (repositoryId and top). The description adds no parameter-specific information beyond what's in the schema, meeting the baseline for high schema coverage without extra value.

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

Purpose4/5

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

The description clearly states the action ('Retrieve a list') and resource ('branches for a given repository'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'repo_get_branch_by_name' or 'repo_list_my_branches_by_repo', which would require specifying scope or filtering differences.

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. It doesn't mention sibling tools like 'repo_list_my_branches_by_repo' (which might filter to user-specific branches) or 'repo_get_branch_by_name' (for single branch details), leaving the agent without 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.

repo_list_my_branches_by_repoB

Retrieve a list of my branches for a given repository Id.

ParametersJSON Schema
NameRequiredDescriptionDefault
repositoryIdYesThe ID of the repository where the branches are located.
topNoThe maximum number of branches 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 full burden for behavioral disclosure. It only states the retrieval action without mentioning permissions needed, rate limits, pagination behavior, or what 'my branches' entails (e.g., branches owned by the current user). This leaves significant gaps for a tool that likely involves user-specific data.

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, efficient sentence with no wasted words. It's appropriately sized for a simple retrieval tool and front-loads the key action and resource.

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

Completeness3/5

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

Given the tool's low complexity (2 parameters, no output schema, no annotations), the description is minimally adequate but incomplete. It lacks behavioral context (e.g., permissions, pagination) and doesn't clarify the 'my branches' scope, which is crucial for correct usage without annotations or output schema.

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 both parameters (repositoryId and top). The description adds no additional parameter semantics beyond what's in the schema, such as clarifying 'my branches' in relation to repositoryId. This meets the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the action ('Retrieve a list') and resource ('my branches for a given repository Id'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'repo_list_branches_by_repo' (which might list all branches vs. only 'my' branches), missing full sibling 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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'repo_list_branches_by_repo' or explain the difference between 'my branches' and other branch listings, leaving usage context unclear.

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

repo_list_pull_requests_by_commitsB

Lists pull requests by commit IDs to find which pull requests contain specific commits

ParametersJSON Schema
NameRequiredDescriptionDefault
commitsYesArray of commit IDs to query for
projectYesProject name or ID
queryTypeNoType of query to performLastMergeCommit
repositoryYesRepository name or 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 but offers minimal information. It doesn't describe what the tool returns (e.g., format, pagination), error conditions, rate limits, authentication needs, or whether it's a read-only operation. The description only states what it does at a high level without operational 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, efficient sentence that clearly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded with the essential information.

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

Completeness2/5

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

Given the tool has no annotations and no output schema, the description is insufficiently complete. For a tool with 4 parameters that queries pull requests by commits, users need more information about what the tool returns, error handling, and behavioral characteristics that aren't covered by the input schema alone.

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 four parameters thoroughly. The description doesn't add any meaningful parameter semantics beyond what's in the schema - it mentions 'commit IDs' which aligns with the 'commits' parameter but provides no additional context about parameter usage or interactions.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('Lists pull requests') and resources ('by commit IDs'), and distinguishes it from sibling tools like 'repo_list_pull_requests_by_project' or 'repo_list_pull_requests_by_repo' by specifying the unique query mechanism based on commit IDs.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, when it's appropriate compared to other pull request listing tools, or any limitations in its functionality.

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

repo_list_pull_requests_by_projectB

Retrieve a list of pull requests for a given project Id or Name.

ParametersJSON Schema
NameRequiredDescriptionDefault
created_by_meNoFilter pull requests created by the current user.
i_am_reviewerNoFilter pull requests where the current user is a reviewer.
projectYesThe name or ID of the Azure DevOps project.
skipNoThe number of pull requests to skip.
statusNoFilter pull requests by status. Defaults to 'Active'.Active
topNoThe maximum number of pull requests 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 of behavioral disclosure. It mentions retrieval but lacks details on permissions, rate limits, pagination (beyond schema defaults), or response format. For a list operation with no annotation coverage, this leaves significant gaps in understanding how the tool behaves.

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, efficient sentence with zero waste. It front-loads the core purpose without unnecessary elaboration, making it easy 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?

Given the tool's moderate complexity (6 parameters, no output schema, no annotations), the description is minimally adequate but incomplete. It covers the basic purpose but lacks behavioral context, usage guidelines, and output details, leaving the agent to rely heavily on the schema alone.

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 6 parameters. The description adds no additional parameter semantics beyond implying filtering by project, which is already covered in the schema. This meets the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the action ('Retrieve a list') and resource ('pull requests for a given project'), making the purpose understandable. It doesn't explicitly differentiate from siblings like 'repo_list_pull_requests_by_repo' or 'repo_list_pull_requests_by_commits', which would require 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 Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'repo_list_pull_requests_by_repo' or 'repo_list_pull_requests_by_commits', nor does it mention prerequisites or exclusions. It merely restates the basic functionality without contextual advice.

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

repo_list_pull_requests_by_repoC

Retrieve a list of pull requests for a given repository.

ParametersJSON Schema
NameRequiredDescriptionDefault
created_by_meNoFilter pull requests created by the current user.
i_am_reviewerNoFilter pull requests where the current user is a reviewer.
repositoryIdYesThe ID of the repository where the pull requests are located.
skipNoThe number of pull requests to skip.
statusNoFilter pull requests by status. Defaults to 'Active'.Active
topNoThe maximum number of pull requests 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 the full burden of behavioral disclosure. It states the action ('Retrieve a list') but doesn't mention whether this is a read-only operation, if it requires authentication, what the return format looks like (e.g., paginated list), or any rate limits. For a tool with 6 parameters and no annotations, this leaves significant behavioral gaps.

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

Conciseness4/5

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

The description is a single, straightforward sentence that efficiently conveys the core action. It's front-loaded with the main purpose and wastes no words, though it could be slightly more informative without losing conciseness.

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

Completeness3/5

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

Given the tool's moderate complexity (6 parameters, no output schema, no annotations), the description is minimally adequate. It states what the tool does but lacks details on usage context, behavioral traits, or output expectations. With no output schema, the description doesn't compensate by explaining return values, leaving room for improvement.

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 parameter clearly documented (e.g., 'repositoryId' as the repository ID, 'status' with enum values). The description adds no additional parameter semantics beyond what the schema provides, but since schema coverage is high, 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.

Purpose4/5

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

The description clearly states the verb ('Retrieve') and resource ('list of pull requests for a given repository'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'repo_list_pull_requests_by_project' or 'repo_list_pull_requests_by_commits', but the 'by_repo' in the name implies repository-specific filtering.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'repo_list_pull_requests_by_project' or 'repo_get_pull_request_by_id'. It doesn't mention prerequisites, such as needing repository access, or suggest scenarios where this tool is preferred over others.

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

repo_list_pull_request_thread_commentsB

Retrieve a list of comments in a pull request thread.

ParametersJSON Schema
NameRequiredDescriptionDefault
fullResponseNoReturn full comment JSON response instead of trimmed data.
projectNoProject ID or project name (optional)
pullRequestIdYesThe ID of the pull request for which to retrieve thread comments.
repositoryIdYesThe ID of the repository where the pull request is located.
skipNoThe number of comments to skip.
threadIdYesThe ID of the thread for which to retrieve comments.
topNoThe maximum number of comments 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 of behavioral disclosure. While 'Retrieve' implies a read-only operation, the description doesn't mention authentication requirements, rate limits, pagination behavior (beyond what's implied by 'skip' and 'top' parameters), error conditions, or response format. For a tool with 7 parameters and no annotation coverage, this leaves significant behavioral aspects undocumented.

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

Conciseness5/5

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

The description is a single, clear sentence that efficiently communicates the core functionality without unnecessary words. It's appropriately sized for a straightforward list operation and gets directly to the point. Every word earns its place in this concise formulation.

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

Completeness3/5

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

Given the tool's moderate complexity (7 parameters, 3 required) and the absence of both annotations and output schema, the description is minimally adequate but incomplete. It states what the tool does but lacks crucial context about authentication, error handling, response format, and relationships to sibling tools. The 100% schema coverage helps, but for a tool with no output schema, more behavioral context would be beneficial.

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 all parameters well-documented in the input schema. The description doesn't add any parameter-specific information beyond what's already in the schema (e.g., it doesn't explain relationships between parameters like 'repositoryId', 'pullRequestId', and 'threadId'). With complete schema coverage, the baseline score of 3 is appropriate as the description provides no additional parameter semantics.

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 ('Retrieve a list') and target resource ('comments in a pull request thread'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'repo_list_pull_request_threads' or 'wit_list_work_item_comments', but the specificity of 'pull request thread comments' provides adequate distinction. This is clear but lacks explicit sibling differentiation.

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

Usage 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. There are multiple sibling tools for listing comments (e.g., 'wit_list_work_item_comments') and pull request-related data, but no indication of when this specific tool is appropriate. The description is purely functional without contextual usage information.

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

repo_list_pull_request_threadsB

Retrieve a list of comment threads for a pull request.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseIterationNoThe base iteration ID for which to retrieve threads. Optional, defaults to the latest base iteration.
fullResponseNoReturn full thread JSON response instead of trimmed data.
iterationNoThe iteration ID for which to retrieve threads. Optional, defaults to the latest iteration.
projectNoProject ID or project name (optional)
pullRequestIdYesThe ID of the pull request for which to retrieve threads.
repositoryIdYesThe ID of the repository where the pull request is located.
skipNoThe number of threads to skip.
topNoThe maximum number of threads 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 mentions retrieving a list but doesn't clarify key behaviors like pagination (implied by 'skip' and 'top' parameters but not explained), authentication requirements, rate limits, error handling, or whether the operation is read-only (though implied by 'Retrieve'). This leaves significant gaps for a tool with 8 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, efficient sentence that directly states the tool's purpose without redundancy or fluff. It is appropriately front-loaded and wastes no words, 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?

Given the lack of annotations and output schema, the description is minimally adequate but incomplete. It covers the basic purpose but misses behavioral details (e.g., pagination, auth) and output expectations, which are crucial for a list-retrieval tool with multiple parameters. The high schema coverage helps, but overall context remains sparse.

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, thoroughly documenting all 8 parameters, so the description adds no additional parameter information. This meets the baseline score of 3, as the schema adequately handles parameter semantics without needing description reinforcement.

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 ('Retrieve') and resource ('a list of comment threads for a pull request'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'repo_list_pull_request_thread_comments' or 'repo_list_pull_requests_by_repo', which handle related but distinct 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 guidance on when to use this tool versus alternatives, such as 'repo_list_pull_request_thread_comments' for individual comments or 'repo_list_pull_requests_by_repo' for pull request lists. It lacks context about prerequisites, exclusions, or typical use cases, leaving the agent to infer usage from the tool name alone.

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

repo_list_repos_by_projectB

Retrieve a list of repositories for a given project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesThe name or ID of the Azure DevOps project.
repoNameFilterNoOptional filter to search for repositories by name. If provided, only repositories with names containing this string will be returned.
skipNoThe number of repositories to skip. Defaults to 0.
topNoThe maximum number of repositories 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 full burden. It states 'Retrieve a list' which implies a read-only operation, but doesn't disclose behavioral traits like pagination behavior (implied by skip/top parameters but not explained), rate limits, authentication needs, or what happens if the project doesn't exist. For a tool with 4 parameters and no annotations, this is a significant gap.

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

Conciseness5/5

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

Single sentence, front-loaded with the core purpose, zero waste. Every word earns its place by clearly stating the tool's function without redundancy or fluff.

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

Completeness3/5

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

Given 4 parameters with 100% schema coverage but no annotations and no output schema, the description is minimally adequate. It covers the basic purpose but lacks behavioral context (e.g., pagination, error handling) and output details. For a list-retrieval tool, this is the bare minimum.

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 4 parameters thoroughly. The description doesn't add any parameter semantics beyond what's in the schema (e.g., it doesn't explain format of project ID/name or how repoNameFilter matching works). Baseline 3 is appropriate when schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the verb ('Retrieve') and resource ('list of repositories'), specifying it's for a given project. It distinguishes from some siblings like repo_get_repo_by_name_or_id (single repo) and repo_list_branches_by_repo (branches not repos), but doesn't explicitly differentiate from all repo_list_* tools (e.g., repo_list_pull_requests_by_project is similar but for pull requests).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like repo_get_repo_by_name_or_id (for single repos) or repo_list_pull_requests_by_project (for pull requests in projects). The description implies usage for listing repositories in a project but lacks explicit when/when-not statements or prerequisite context.

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

repo_reply_to_commentB

Replies to a specific comment on a pull request.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesThe content of the comment to be added.
fullResponseNoReturn full comment JSON response instead of a simple confirmation message.
projectNoProject ID or project name (optional)
pullRequestIdYesThe ID of the pull request where the comment thread exists.
repositoryIdYesThe ID of the repository where the pull request is located.
threadIdYesThe ID of the thread to which the comment will be added.

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 full burden for behavioral disclosure. While 'Replies to' implies a write operation, the description doesn't mention authentication requirements, permission levels needed, rate limits, whether replies are editable/deletable, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is insufficient 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, efficient sentence with zero wasted words. It's appropriately sized for the tool's complexity and gets straight to the point without unnecessary elaboration.

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

Completeness3/5

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

For a mutation tool with no annotations and no output schema, the description is minimally adequate but has significant gaps. It states what the tool does but lacks behavioral context, usage guidance, and output information. The 100% schema coverage helps, but the description should do more given this is a write operation with multiple 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 schema description coverage is 100%, so the schema already documents all 6 parameters thoroughly. The description adds no parameter-specific information beyond what's in the schema (like explaining the relationship between repositoryId, pullRequestId, and threadId). With high schema coverage, the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action ('Replies to') and target ('a specific comment on a pull request'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'wit_add_work_item_comment' or 'repo_create_pull_request_thread' that also handle comments in different contexts, so it doesn't achieve full sibling differentiation.

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

Usage 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. There are multiple comment-related tools in the sibling list (e.g., 'wit_add_work_item_comment', 'repo_create_pull_request_thread'), but the description doesn't indicate this is specifically for replying to existing pull request comment threads versus creating new threads or commenting on work items.

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

repo_resolve_commentC

Resolves a specific comment thread on a pull request.

ParametersJSON Schema
NameRequiredDescriptionDefault
fullResponseNoReturn full thread JSON response instead of a simple confirmation message.
pullRequestIdYesThe ID of the pull request where the comment thread exists.
repositoryIdYesThe ID of the repository where the pull request is located.
threadIdYesThe ID of the thread to be resolved.

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 states the action ('Resolves') but doesn't clarify what 'resolves' entails (e.g., marking as closed, locking the thread, permissions required, side effects, or whether it's reversible). For a mutation tool with zero annotation coverage, this lacks critical 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, direct sentence with no wasted words, efficiently conveying the core action. It's front-loaded with the verb and target, making it easy to parse quickly.

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 this is a mutation tool (implied by 'Resolves') with no annotations and no output schema, the description is insufficiently complete. It doesn't explain the outcome (e.g., what 'resolved' means, confirmation message format, or error conditions), leaving gaps in understanding the tool's full behavior and results.

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 all parameters clearly documented in the schema (e.g., repositoryId, pullRequestId, threadId, fullResponse). The description doesn't add any parameter-specific details beyond what the schema provides, so it meets the baseline of 3 for high schema coverage without extra value.

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

Purpose4/5

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

The description clearly states the action ('Resolves') and target ('a specific comment thread on a pull request'), making the purpose immediately understandable. It doesn't explicitly distinguish from sibling tools like 'repo_reply_to_comment' or 'repo_update_pull_request', but the verb 'resolves' suggests a distinct operation focused on thread closure rather than modification or reply.

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, prerequisites (e.g., needing comment thread IDs from other tools), or contextual constraints. The description is purely functional without usage context, leaving the agent to infer when resolution is appropriate based on general knowledge.

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

repo_search_commitsC

Searches for commits in a repository

ParametersJSON Schema
NameRequiredDescriptionDefault
fromCommitNoStarting commit ID
includeLinksNoInclude commit links
includeWorkItemsNoInclude associated work items
projectYesProject name or ID
repositoryYesRepository name or ID
skipNoNumber of commits to skip
toCommitNoEnding commit ID
topNoMaximum number of commits to return
versionNoThe name of the branch, tag or commit to filter commits by
versionTypeNoThe meaning of the version parameter, e.g., branch, tag or commitBranch

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. 'Searches for commits' implies a read-only operation, but it doesn't specify whether this requires authentication, has rate limits, returns paginated results, or what the output format looks like. For a tool with 10 parameters and no annotation coverage, this is a significant gap in 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, efficient sentence with zero wasted words. It's front-loaded with the core purpose ('Searches for commits in a repository'), making it immediately clear. Every word earns its place, and there's no unnecessary elaboration.

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

Completeness2/5

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

Given the complexity (10 parameters, no annotations, no output schema), the description is insufficiently complete. It doesn't explain what the search returns (e.g., commit metadata, links), how results are structured, or any behavioral constraints. For a search tool with many configuration options, more context is needed to help an agent use it effectively.

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

Parameters3/5

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

The schema description coverage is 100%, with all parameters well-documented in the input schema (e.g., 'fromCommit' as 'Starting commit ID', 'top' as 'Maximum number of commits to return'). The description adds no additional parameter information beyond what the schema provides. According to the rules, when schema coverage is high (>80%), the baseline score is 3 even with no param info in the description.

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

Purpose4/5

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

The description 'Searches for commits in a repository' clearly states the action (searches) and resource (commits in a repository), making the purpose immediately understandable. However, it doesn't differentiate this from potential sibling tools like 'repo_list_branches_by_repo' or 'repo_get_branch_by_name', which also operate on repositories but for different resources. The description is specific but lacks sibling differentiation.

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

Usage 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. There are many sibling tools for repository operations (e.g., 'repo_list_branches_by_repo', 'repo_get_pull_request_by_id'), but the description doesn't indicate this is specifically for commit searches rather than other repository queries. No context, exclusions, or alternatives are mentioned.

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

repo_update_pull_requestC

Update a Pull Request by ID with specified fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
descriptionNoThe new description for the pull request.
isDraftNoWhether the pull request should be a draft.
pullRequestIdYesThe ID of the pull request to update.
repositoryIdYesThe ID of the repository where the pull request exists.
statusNoThe new status of the pull request. Can be 'Active' or 'Abandoned'.
targetRefNameNoThe new target branch name (e.g., 'refs/heads/main').
titleNoThe new title for the pull request.

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 states 'Update' implies a mutation, but doesn't cover critical aspects like required permissions, whether updates are reversible, rate limits, or what happens to unspecified fields. This is a significant gap for a mutation tool with zero 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, efficient sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly, though this brevity contributes to gaps in other dimensions.

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

Completeness2/5

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

Given the complexity of updating a pull request (a mutation operation with 7 parameters), no annotations, and no output schema, the description is inadequate. It lacks details on behavior, error conditions, and output format, leaving the agent with insufficient context for reliable use.

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

Parameters3/5

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

The schema description coverage is 100%, so the schema fully documents all 7 parameters. The description adds no additional meaning beyond implying that fields can be 'specified', which is redundant with the schema. This meets the baseline of 3 when the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the action ('Update') and resource ('Pull Request by ID with specified fields'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'repo_update_pull_request_reviewers' or 'wit_update_work_item', which would require more specific language about what fields can be updated.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing repository and pull request IDs), nor does it compare to related tools like 'repo_create_pull_request' or 'repo_update_pull_request_reviewers', leaving the agent to infer usage context.

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

repo_update_pull_request_reviewersC

Add or remove reviewers for an existing pull request.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesAction to perform on the reviewers. Can be 'add' or 'remove'.
pullRequestIdYesThe ID of the pull request to update.
repositoryIdYesThe ID of the repository where the pull request exists.
reviewerIdsYesList of reviewer ids to add or remove from the pull request.

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. While it implies a mutation operation ('Add or remove'), it doesn't specify required permissions, whether changes are reversible, potential rate limits, or what happens if reviewer IDs are invalid. For a mutation tool with zero annotation coverage, this leaves significant behavioral gaps.

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

Conciseness5/5

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

The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for the tool's complexity and front-loads the core functionality immediately.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't address what happens on success/failure, return values, error conditions, or integration with sibling tools. The combination of mutation nature and lack of structured metadata requires more descriptive context than provided.

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

Parameters3/5

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

The schema description coverage is 100%, with all parameters well-documented in the schema itself. The description doesn't add any meaningful parameter semantics beyond what's already in the schema (e.g., it doesn't explain format of reviewer IDs or provide examples). Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the action ('Add or remove') and resource ('reviewers for an existing pull request'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'repo_update_pull_request' or mention that this is specifically for reviewer management rather than general pull request updates.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'repo_update_pull_request' for other modifications, nor does it mention prerequisites such as needing an existing pull request ID or appropriate permissions. It simply states what the tool does without contextual usage instructions.

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

search_codeC

Search Azure DevOps Repositories for a given search text

ParametersJSON Schema
NameRequiredDescriptionDefault
branchNoFilter by branches
includeFacetsNoInclude facets in the search results
pathNoFilter by paths
projectNoFilter by projects
repositoryNoFilter by repositories
searchTextYesKeywords to search for in code repositories
skipNoNumber of results to skip
topNoMaximum number of results 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 but offers minimal information. It doesn't describe what the search returns (e.g., file matches, line numbers), pagination behavior (though schema has skip/top), authentication requirements, rate limits, or whether it's read-only (implied but not stated). The description lacks essential context for a search operation.

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

Conciseness4/5

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

The description is a single, efficient sentence that states the core purpose without waste. It's appropriately sized for a search tool, though it could be slightly more informative given the lack of annotations. Every word earns its place, making it front-loaded and clear.

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

Completeness2/5

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

Given the complexity of an 8-parameter search tool with no annotations and no output schema, the description is insufficient. It doesn't explain what the search returns (e.g., code snippets, file paths), how results are structured, or any behavioral traits like performance or limitations. For a tool with rich filtering options, more context 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?

Schema description coverage is 100%, so the schema already documents all 8 parameters thoroughly. The description adds no additional parameter semantics beyond implying 'searchText' is required. With high schema coverage, the baseline of 3 is appropriate as the description doesn't compensate but doesn't need to.

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

Purpose4/5

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

The description clearly states the action ('Search') and target resource ('Azure DevOps Repositories') with the scope ('for a given search text'). It distinguishes from siblings like 'search_wiki' and 'search_workitem' by specifying code repositories. However, it doesn't explicitly differentiate from 'repo_search_commits' which searches commits rather than code content.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over 'search_wiki' or 'search_workitem', nor does it indicate any prerequisites, constraints, or typical use cases for code searching versus other repository operations.

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

search_wikiC

Search Azure DevOps Wiki for a given search text

ParametersJSON Schema
NameRequiredDescriptionDefault
includeFacetsNoInclude facets in the search results
projectNoFilter by projects
searchTextYesKeywords to search for wiki pages
skipNoNumber of results to skip
topNoMaximum number of results to return
wikiNoFilter by wiki names

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 but offers minimal information. It doesn't mention whether this is a read-only operation, what permissions are required, how results are structured, pagination behavior, or rate limits. The description only states what the tool does at a high level without revealing operational characteristics.

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, efficient sentence that states the core functionality without unnecessary words. It's front-loaded with the essential information and contains no redundant phrases. Every word earns its place in conveying the tool's purpose.

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

Completeness2/5

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

For a search tool with 6 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what the search returns (page titles, snippets, full content?), how results are ordered, or error conditions. While the schema covers parameter definitions, the description fails to provide the contextual understanding needed for effective tool selection and use.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters are documented in the schema itself. The description adds no additional parameter semantics beyond implying that 'searchText' is the primary input. It doesn't explain search syntax, result ranking, or how filters interact. With complete schema coverage, the baseline of 3 is appropriate as the description doesn't compensate but doesn't need to.

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

Purpose4/5

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

The description clearly states the action ('Search') and target resource ('Azure DevOps Wiki'), making the purpose immediately understandable. It distinguishes itself from sibling tools like 'search_code' and 'search_workitem' by specifying the wiki domain. However, it doesn't explicitly differentiate from other wiki tools like 'wiki_list_pages' or 'wiki_get_page_content', which could provide similar functionality through browsing rather than search.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when search is preferable to browsing wiki pages directly (e.g., 'wiki_list_pages'), nor does it specify prerequisites like authentication or project context. The agent must infer usage from the tool name and parameters alone.

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

search_workitemC

Get Azure DevOps Work Item search results for a given search text

ParametersJSON Schema
NameRequiredDescriptionDefault
areaPathNoFilter by area paths
assignedToNoFilter by assigned to users
includeFacetsNoInclude facets in the search results
projectNoFilter by projects
searchTextYesSearch text to find in work items
skipNoNumber of results to skip for pagination
stateNoFilter by work item states
topNoNumber of results to return
workItemTypeNoFilter by work item types

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 full burden. It states 'Get...search results' which implies a read-only operation, but doesn't disclose behavioral traits like pagination behavior (implied by skip/top parameters), authentication requirements, rate limits, error conditions, or what the return format looks like. The description is minimal and lacks essential context for safe invocation.

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, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized for a search tool and front-loads the essential information. Every word earns its place.

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

Completeness2/5

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

For a 9-parameter search tool with no annotations and no output schema, the description is inadequate. It doesn't explain what the search covers (fields searched), how results are returned, pagination behavior, or error handling. With rich parameter schema but no output information, the description should provide more context about the operation's behavior and results.

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 9 parameters thoroughly. The description mentions only 'search text' (mapping to the required searchText parameter) but doesn't add any meaningful semantic context beyond what's in the schema. With high schema coverage, the baseline is 3 even without additional parameter information in the description.

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 ('Azure DevOps Work Item search results') with the key input ('search text'). It's specific about what the tool does but doesn't differentiate from sibling tools like 'search_code' or 'search_wiki' beyond mentioning 'Work Item'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. With many sibling tools like 'wit_get_work_item', 'wit_my_work_items', and 'wit_get_query_results_by_id', the description offers no context about when this search tool is preferable or what distinguishes it from other work item retrieval methods.

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

testplan_add_test_cases_to_suiteC

Adds existing test cases to a test suite.

ParametersJSON Schema
NameRequiredDescriptionDefault
planIdYesThe ID of the test plan.
projectYesThe unique identifier (ID or name) of the Azure DevOps project.
suiteIdYesThe ID of the test suite.
testCaseIdsYesThe ID(s) of the test case(s) to add.

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 states the tool 'Adds existing test cases to a test suite,' implying a mutation operation, but does not cover critical aspects like permissions required, whether the operation is idempotent, error handling, or what happens if test cases are already in the suite. This leaves significant gaps in understanding 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, clear sentence that directly states the tool's purpose without any unnecessary words or fluff. It is front-loaded and efficiently communicates the core action, making it easy to understand at a glance.

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

Completeness2/5

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

Given the complexity of a mutation tool with no annotations and no output schema, the description is insufficient. It lacks details on behavioral traits, error conditions, and what the tool returns, which are crucial for an AI agent to use it correctly. The high schema coverage does not compensate for these missing contextual elements.

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 description coverage is 100%, meaning all parameters are documented in the input schema. The description does not add any additional meaning or context beyond what the schema provides, such as explaining relationships between parameters or usage examples. Since the schema handles the heavy lifting, the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action ('Adds') and the target resources ('existing test cases to a test suite'), which is specific and unambiguous. However, it does not explicitly differentiate from sibling tools like 'testplan_create_test_case' or 'testplan_list_test_cases', which involve test cases but for different purposes, so it falls short of a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, such as when to add test cases versus creating new ones or listing existing ones. It lacks context about prerequisites, like whether the test cases must already exist or be in a specific state, and does not mention any exclusions or related tools.

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

testplan_create_test_caseB

Creates a new test case work item.

ParametersJSON Schema
NameRequiredDescriptionDefault
areaPathNoThe area path for the test case.
iterationPathNoThe iteration path for the test case.
priorityNoThe priority of the test case.
projectYesThe unique identifier (ID or name) of the Azure DevOps project.
stepsNoThe steps to reproduce the test case. Make sure to format each step as '1. Step one|Expected result one 2. Step two|Expected result two. USE '|' as the delimiter between step and expected result. DO NOT use '|' in the description of the step or expected result.
titleYesThe title of the test case.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden of behavioral disclosure. While 'Creates' implies a write/mutation operation, the description doesn't mention authentication requirements, permission levels needed, whether the creation is reversible, what happens on failure, or what the response looks like. For a creation tool with zero annotation coverage, this leaves significant behavioral questions unanswered.

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, efficient sentence that states the core purpose without any wasted words. It's appropriately sized and front-loaded with the essential information. Every word earns its place in this minimal but complete statement of function.

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

Completeness3/5

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

Given this is a creation tool with 6 parameters, no annotations, and no output schema, the description is minimally adequate but incomplete. While it states what the tool does, it doesn't provide behavioral context, usage guidance, or output expectations. The 100% schema coverage helps, but for a mutation tool with no safety annotations, more behavioral disclosure would be beneficial.

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 6 parameters thoroughly. The description adds no additional parameter information beyond what's in the schema. According to scoring rules, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in description, which applies here.

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 ('Creates') and resource ('a new test case work item'), providing specific verb+resource pairing. However, it doesn't differentiate from sibling tools like 'wit_create_work_item' or 'testplan_add_test_cases_to_suite', which could create confusion about when to use this specific test case creation tool versus other creation tools in the system.

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 multiple sibling creation tools (wit_create_work_item, testplan_add_test_cases_to_suite, testplan_create_test_plan), there's no indication of when this specific test case creation tool is appropriate versus other work item creation tools. No prerequisites, exclusions, or comparison to alternatives are mentioned.

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

testplan_create_test_planC

Creates a new test plan in the project.

ParametersJSON Schema
NameRequiredDescriptionDefault
areaPathNoThe area path for the test plan
descriptionNoThe description of the test plan
endDateNoThe end date of the test plan
iterationYesThe iteration path for the test plan
nameYesThe name of the test plan to be created.
projectYesThe unique identifier (ID or name) of the Azure DevOps project where the test plan will be created.
startDateNoThe start date of the test plan

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 but only states it 'creates' without detailing behavioral aspects like required permissions, whether it's idempotent, error handling, or what happens on success. This is inadequate for a mutation tool with zero 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, efficient sentence with no wasted words. It's appropriately sized and front-loaded, clearly stating the core function without unnecessary elaboration.

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

Completeness2/5

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

For a creation tool with 7 parameters, no annotations, and no output schema, the description is insufficient. It lacks behavioral context, usage guidelines, and details about the creation process, making it incomplete for effective tool 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 the schema fully documents all 7 parameters. The description adds no parameter-specific information beyond implying a 'project' context, meeting the baseline for high schema coverage without extra value.

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

Purpose4/5

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

The description clearly states the action ('Creates') and resource ('new test plan in the project'), making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'testplan_list_test_plans' or 'testplan_create_test_case', which would require 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 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 doesn't mention prerequisites, constraints, or sibling tools like 'testplan_list_test_plans' for viewing existing plans, leaving usage context unclear.

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

testplan_list_test_casesC

Gets a list of test cases in the test plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
planidYesThe ID of the test plan.
projectYesThe unique identifier (ID or name) of the Azure DevOps project.
suiteidYesThe ID of the test suite.

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 states it 'Gets a list,' implying a read-only operation, but doesn't specify permissions required, pagination behavior, rate limits, or what happens if parameters are invalid. This leaves significant gaps for a tool with three required 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, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and appropriately sized for its function, earning a high score for conciseness.

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

Completeness2/5

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

Given the tool's complexity (3 required parameters) and lack of annotations and output schema, the description is incomplete. It doesn't explain return values, error conditions, or behavioral details, making it inadequate for an agent to use the tool effectively without additional context.

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

Parameters3/5

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

The schema description coverage is 100%, with clear descriptions for 'planid', 'project', and 'suiteid'. The description adds no additional parameter semantics beyond what the schema provides, such as format examples or constraints, so it meets the baseline score of 3.

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

Purpose4/5

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

The description clearly states the verb ('Gets') and resource ('list of test cases in the test plan'), making the purpose understandable. However, it doesn't distinguish this tool from its sibling 'testplan_list_test_plans' or other list tools, missing specific differentiation that would warrant a score of 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'testplan_list_test_plans' or other test-related tools. It lacks context about prerequisites, such as needing an existing test plan and suite, or any exclusions, leaving usage unclear.

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

testplan_list_test_plansC

Retrieve a paginated list of test plans from an Azure DevOps project. Allows filtering for active plans and toggling detailed information.

ParametersJSON Schema
NameRequiredDescriptionDefault
continuationTokenNoToken to continue fetching test plans from a previous request.
filterActivePlansNoFilter to include only active test plans. Defaults to true.
includePlanDetailsNoInclude detailed information about each test plan.
projectYesThe unique identifier (ID or name) of the Azure DevOps project.

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 mentions pagination and filtering options, which is helpful, but fails to cover critical aspects like whether this is a read-only operation (implied but not stated), potential rate limits, authentication requirements, error handling, or the structure of returned data. For a list operation with no annotation coverage, this leaves significant gaps.

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

Conciseness4/5

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

The description is a single, well-structured sentence that efficiently conveys the core functionality and key features (paginated list, filtering, detailed info). It's front-loaded with the main purpose and avoids unnecessary words, though it could be slightly more concise by integrating the filtering details more seamlessly.

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

Completeness3/5

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

Given the tool's moderate complexity (list operation with filtering), 100% schema coverage helps, but the lack of annotations and output schema means the description should do more. It covers the basic purpose and parameters but misses behavioral details (e.g., pagination mechanics, error cases) and output expectations, making it adequate but incomplete for full agent understanding.

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

Parameters3/5

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

The input schema has 100% description coverage, so the schema already documents all parameters thoroughly. The description adds minimal value by mentioning filtering for active plans and detailed information, which aligns with the schema but doesn't provide additional semantic context beyond what's already in the parameter descriptions.

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

Purpose4/5

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

The description clearly states the action ('Retrieve a paginated list') and resource ('test plans from an Azure DevOps project'), making the purpose evident. However, it doesn't explicitly differentiate this tool from its sibling tools (like testplan_list_test_cases), which prevents a perfect score.

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

Usage Guidelines2/5

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

The description mentions filtering capabilities ('allows filtering for active plans and toggling detailed information'), which provides some implied context for usage. However, it lacks explicit guidance on when to use this tool versus alternatives (e.g., other testplan_* tools or search tools), and doesn't mention prerequisites or exclusions.

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

testplan_show_test_results_from_build_idB

Gets a list of test results for a given project and build ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
buildidYesThe ID of the build.
projectYesThe unique identifier (ID or name) of the Azure DevOps project.

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 of behavioral disclosure. It states it 'Gets a list' (implying read-only), but doesn't describe the return format (e.g., structure, pagination), error conditions, authentication needs, rate limits, or whether it's idempotent. For a tool with no annotations, this leaves significant gaps in understanding its 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, efficient sentence that front-loads the core action ('Gets a list of test results') and specifies the key inputs. There is no wasted verbiage, making it easy to parse quickly for an AI agent.

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

Completeness3/5

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

Given the tool's moderate complexity (2 required parameters, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks details on return values, error handling, and usage context. Without annotations or output schema, the agent must rely heavily on the schema and name, leaving room for uncertainty in 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 description mentions parameters ('project and build ID'), but the input schema already has 100% description coverage with clear parameter details. The description adds minimal value beyond what the schema provides, such as implying these are required for fetching test results, but doesn't explain semantics like what constitutes a valid build ID or project identifier beyond the schema's basic descriptions.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Gets') and resource ('list of test results'), specifying the required parameters ('for a given project and build ID'). It distinguishes from many sibling tools focused on builds, releases, repos, etc., but doesn't explicitly differentiate from potential test-related siblings like 'testplan_list_test_cases' or 'testplan_list_test_plans'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid build ID), exclusions, or comparisons to other test-related tools (e.g., 'testplan_list_test_cases'), leaving the agent to infer usage from the name and parameters alone.

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

wiki_create_or_update_pageC

Create or update a wiki page with content.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesThe content of the wiki page in markdown format.
etagNoETag for editing existing pages (optional, will be fetched if not provided).
pathYesThe path of the wiki page (e.g., '/Home' or '/Documentation/Setup').
projectNoThe project name or ID where the wiki is located. If not provided, the default project will be used.
wikiIdentifierYesThe unique identifier or name of the wiki.

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 mentions 'create or update' which implies mutation, but doesn't specify permissions needed, whether operations are atomic, how conflicts are handled, or what happens on success/failure. This is inadequate for a mutation tool with zero 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, efficient sentence that states the core functionality without unnecessary words. It's appropriately sized and front-loaded with the essential action, earning full marks for 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?

For a mutation tool with 5 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain the 'create or update' logic, return values, error handling, or how it differs from sibling tools, leaving significant gaps for the agent.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all 5 parameters. The description adds no additional parameter semantics beyond what's in the schema, meeting the baseline expectation but not providing extra 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 verb ('create or update') and resource ('wiki page with content'), making the purpose understandable. However, it doesn't distinguish this tool from its sibling 'wiki_get_page_content' or explain the 'create or update' logic, which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'wiki_get_page_content' or 'wiki_list_pages'. There's no mention of prerequisites, error conditions, or typical use cases, leaving the agent with minimal contextual direction.

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

wiki_get_page_contentC

Retrieve wiki page content by wikiIdentifier and path.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesThe path of the wiki page to retrieve content for.
projectYesThe project name or ID where the wiki is located.
wikiIdentifierYesThe unique identifier of the wiki.

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 full burden. It states the tool retrieves content but doesn't disclose behavioral traits such as whether it's read-only (implied by 'retrieve'), authentication requirements, rate limits, error conditions, or the format of returned content. For a tool with no annotations, this is a significant gap in transparency.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose and required parameters. It's front-loaded with no wasted words, making it easy to parse quickly. Every part of the sentence earns its place.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'content' includes (e.g., text, metadata, formatting), potential errors, or return format. For a retrieval tool with three required parameters, more context is needed to guide the agent effectively.

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

Parameters3/5

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

Schema description coverage is 100%, with clear descriptions for each parameter (wikiIdentifier, project, path). The description adds minimal value beyond the schema, only reiterating the parameters without providing additional context like examples or constraints. Baseline 3 is appropriate as the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the action ('Retrieve') and resource ('wiki page content'), specifying it's for a particular wiki page identified by wikiIdentifier and path. It distinguishes from siblings like wiki_list_pages (which lists pages) and wiki_get_wiki (which gets wiki metadata), though it doesn't explicitly name these alternatives. The purpose is specific but could be more differentiated from similar tools.

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 wiki_list_pages or search_wiki. The description mentions the required parameters but doesn't explain the context or prerequisites for retrieving content. This leaves the agent without explicit usage instructions.

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

wiki_get_wikiC

Get the wiki by wikiIdentifier

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoThe project name or ID where the wiki is located. If not provided, the default project will be used.
wikiIdentifierYesThe unique identifier of the wiki.

TDQS

C2.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. It states 'Get' but doesn't specify if this is a read-only operation, what permissions are needed, error handling, or response format. The description lacks details on behavioral traits like rate limits, authentication, or what data is returned, making it insufficient 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, efficient sentence with zero waste. It's front-loaded with the core action ('Get the wiki'), making it easy to scan. No unnecessary words or redundancy are present, earning a perfect score for conciseness.

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

Completeness2/5

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

Given the tool's complexity (retrieval operation with 2 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'Get' returns (e.g., wiki metadata, structure, or content), error conditions, or usage context. For a tool with no structured output or behavioral hints, more detail is needed to be fully helpful.

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

Parameters3/5

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

Schema description coverage is 100%, with clear descriptions for both parameters: 'wikiIdentifier' as the unique identifier and 'project' as optional with default behavior. The description adds no additional meaning beyond the schema, such as format examples or constraints. With high schema coverage, the baseline score of 3 is appropriate as the schema does the heavy lifting.

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

Purpose3/5

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

The description 'Get the wiki by wikiIdentifier' states a clear verb ('Get') and resource ('wiki'), but it's vague about what 'Get' entailsโ€”does it retrieve metadata, content, or both? It distinguishes from siblings like 'wiki_list_wikis' (list vs. get) but not from 'wiki_get_page_content' (get wiki vs. get page content). The purpose is understandable but lacks specificity.

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. For example, it doesn't clarify if this is for retrieving wiki details versus using 'wiki_list_wikis' for listing or 'wiki_get_page_content' for content. There's no mention of prerequisites, context, or exclusions, leaving usage unclear.

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

wiki_list_pagesB

Retrieve a list of wiki pages for a specific wiki and project.

ParametersJSON Schema
NameRequiredDescriptionDefault
continuationTokenNoToken for pagination to retrieve the next set of pages.
pageViewsForDaysNoNumber of days to retrieve page views for. If not specified, page views are not included.
projectYesThe project name or ID where the wiki is located.
topNoThe maximum number of pages to return. Defaults to 20.
wikiIdentifierYesThe unique identifier of the wiki.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states it 'retrieves a list,' implying a read-only operation, but doesn't disclose pagination behavior (implied by the 'continuationToken' parameter in schema), rate limits, authentication needs, or what happens if the wiki/project doesn't exist. For a tool with 5 parameters and no annotation coverage, this is a significant gap in 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, efficient sentence that front-loads the core purpose. There's zero wasteโ€”every word contributes to understanding the tool's function. It's appropriately sized for a list operation without overcomplicating.

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

Completeness3/5

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

Given the tool's moderate complexity (5 parameters, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks behavioral details, usage context, and output information. With no output schema, the description should ideally hint at return format (e.g., 'returns a paginated list of page metadata'), but it doesn't, leaving gaps in completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all 5 parameters. The description adds no parameter-specific information beyond implying that 'wiki' and 'project' are required (matching the schema's required fields). Since the schema does the heavy lifting, the baseline score of 3 is appropriateโ€”the description doesn't add value but doesn't detract either.

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 ('Retrieve') and resource ('list of wiki pages') with specific context ('for a specific wiki and project'). It distinguishes from obvious siblings like 'wiki_get_page_content' or 'wiki_get_wiki' by focusing on listing pages rather than fetching content or wiki metadata. However, it doesn't explicitly differentiate from 'wiki_list_wikis' (which lists wikis rather than pages) or 'search_wiki' (which might search within pages), so it's not a perfect 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention siblings like 'search_wiki' for filtered searches or 'wiki_get_page_content' for individual page details. There's no context about prerequisites, typical use cases, or exclusions, leaving the agent to infer usage from the tool name alone.

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

wiki_list_wikisB

Retrieve a list of wikis for an organization or project.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoThe project name or ID to filter wikis. If not provided, all wikis in the organization will be returned.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states the tool retrieves a list but doesn't disclose behavioral traits like pagination, rate limits, authentication needs, or what happens if no wikis exist. For a read operation with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves.

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 zero wasteโ€”it directly states the tool's purpose without redundancy. It's appropriately sized and front-loaded, making it easy to understand at a glance.

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

Completeness3/5

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

Given the tool's low complexity (one optional parameter) and high schema coverage, the description is minimally adequate. However, with no annotations and no output schema, it lacks details on return values (e.g., list structure, fields) and behavioral context, which could hinder an agent's ability to use it effectively beyond basic 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%, with the single parameter 'project' fully documented in the schema. The description adds no additional parameter semantics beyond what the schema provides, such as format examples or constraints. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the action ('Retrieve a list') and resource ('wikis'), specifying it's for an organization or project. It distinguishes from siblings like 'wiki_get_wiki' (single wiki) and 'wiki_list_pages' (pages within a wiki), but doesn't explicitly contrast with 'search_wiki' which might have overlapping functionality.

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. It doesn't mention when to choose this over 'search_wiki' (which could filter wikis) or 'core_list_projects' (which lists projects, not wikis). The description implies usage for listing wikis but lacks context about prerequisites or exclusions.

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

wit_add_child_work_itemsC

Create one or many child work items from a parent by work item type and parent id.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
parentIdYesThe ID of the parent work item to create a child work item under.
projectYesThe name or ID of the Azure DevOps project.
workItemTypeYesThe type of the child work item to create.

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. While it indicates a creation action ('Create'), it doesn't specify whether this requires specific permissions, what happens on success (e.g., returns IDs), or potential side effects like updating the parent work item. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding its 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, efficient sentence that front-loads the core action ('Create one or many child work items') and includes key parameters. There is no wasted language or redundancy, making it highly concise and well-structured for quick comprehension.

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 this is a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't cover behavioral aspects like permissions, response format, or error handling, and it lacks usage guidance compared to sibling tools. The high schema coverage helps with parameters, but overall completeness is poor for a tool that creates multiple work items.

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 75%, providing good documentation for most parameters. The description adds minimal value by mentioning 'parent id' and 'work item type', which are already covered in the schema. It doesn't explain the 'items' array structure or the 'project' parameter beyond what the schema provides, so it meets the baseline for high schema coverage without enhancing 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 action ('Create one or many child work items') and the target resource ('from a parent by work item type and parent id'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'wit_create_work_item' or 'wit_update_work_item', which would require mentioning the parent-child relationship specificity.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'wit_create_work_item' for standalone work items or 'wit_update_work_item' for modifications. It lacks context about prerequisites, such as needing an existing parent work item, and doesn't mention any exclusions or scenarios where other tools might be more appropriate.

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

wit_add_work_item_commentC

Add comment to a work item by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
commentYesThe text of the comment to add to the work item.
formatNohtml
projectYesThe name or ID of the Azure DevOps project.
workItemIdYesThe ID of the work item to add a comment to.

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 states this is an 'Add' operation (implying mutation/write), but doesn't mention authentication requirements, permission levels, whether comments are editable/deletable, rate limits, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is insufficient.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a simple tool and front-loads the essential action and target.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what happens after adding a comment (success response, error conditions), doesn't mention the Azure DevOps context implied by parameters, and provides no behavioral context. The description alone is inadequate for safe tool 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 75% (3 of 4 parameters have descriptions), so the baseline is 3. The description mentions 'by ID' which hints at the workItemId parameter, but doesn't add meaningful context beyond what the schema already provides about project, workItemId, comment, or format parameters.

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 ('Add comment') and target resource ('to a work item by ID'), making the purpose immediately understandable. It doesn't differentiate from sibling tools like 'wit_list_work_item_comments' or 'repo_reply_to_comment', but the verb+resource combination is specific enough for basic understanding.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'wit_list_work_item_comments' (for reading comments) or 'repo_reply_to_comment' (for repository comments), nor does it specify prerequisites like needing a work item ID or project context.

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

wit_create_work_itemC

Create a new work item in a specified project and work item type.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYesA record of field names and values to set on the new work item. Each fild is the field name and each value is the corresponding value to set for that field.
projectYesThe name or ID of the Azure DevOps project.
workItemTypeYesThe type of work item to create, e.g., 'Task', 'Bug', etc.

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 states this is a creation tool, implying a write operation, but fails to mention critical details like required permissions, whether the operation is idempotent, rate limits, or what happens on failure. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without any redundant or vague language. It is appropriately sized and front-loaded, making it easy to parse quickly.

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 this is a mutation tool with no annotations and no output schema, the description is insufficiently complete. It lacks information about behavioral traits (e.g., permissions, side effects), expected outputs, error handling, or how it differs from sibling tools, leaving significant gaps for an AI agent to understand its full context.

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

Parameters3/5

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

The description mentions 'specified project and work item type,' which aligns with two of the three parameters, but adds no semantic details beyond what the schema already provides. Since schema description coverage is 100%, the baseline score of 3 is appropriate, as the schema fully documents the parameters without needing extra explanation in the description.

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 ('Create a new work item') and specifies the target resources ('in a specified project and work item type'), making the purpose immediately understandable. It distinguishes itself from sibling tools like 'wit_update_work_item' by focusing on creation rather than modification, though it doesn't 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 provides no guidance on when to use this tool versus alternatives, such as batch creation tools ('wit_update_work_items_batch') or when to prefer updating existing work items. It mentions the required parameters but offers no context about prerequisites, permissions, or typical use cases.

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

wit_get_queryC

Get a query by its ID or path.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNoOptional depth parameter to specify how deep to expand the query. Defaults to 0.
expandNoOptional expand parameter to include additional details in the response. Defaults to 'None'.
includeDeletedNoWhether to include deleted items in the query results. Defaults to false.
projectYesThe name or ID of the Azure DevOps project.
queryYesThe ID or path of the query to retrieve.
useIsoDateFormatNoWhether to use ISO date format in the response. Defaults to false.

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 only states the basic action of retrieving a query, lacking details on permissions, rate limits, error handling, or response format. This is insufficient for a tool with multiple parameters and no output schema.

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

Conciseness5/5

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

The description is a single, direct sentence with no wasted words, making it highly concise and front-loaded. It efficiently communicates the core purpose without unnecessary elaboration.

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

Completeness2/5

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

Given the tool's complexity (6 parameters, no annotations, no output schema), the description is inadequate. It doesn't explain behavioral aspects, usage context, or return values, leaving significant gaps for the agent to infer or guess.

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 description mentions retrieving by 'ID or path', which aligns with the 'query' parameter, but adds minimal value beyond the schema. With 100% schema description coverage, the baseline is 3, as the schema already documents all parameters thoroughly.

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 ('a query by its ID or path'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'wit_get_query_results_by_id' or 'wit_get_work_item', which also retrieve data but for different resources.

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 doesn't mention prerequisites, context for selecting this over similar tools like 'wit_get_query_results_by_id', or any exclusions, leaving the agent without usage direction.

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

wit_get_query_results_by_idB

Retrieve the results of a work item query given the query ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the query to retrieve results for.
projectNoThe name or ID of the Azure DevOps project. If not provided, the default project will be used.
teamNoThe name or ID of the Azure DevOps team. If not provided, the default team will be used.
timePrecisionNoWhether to include time precision in the results. Defaults to false.
topNoThe maximum number of results to return. Defaults to 50.

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 full burden but only states the basic operation. It doesn't disclose whether this is a read-only operation (likely, but not stated), whether it requires specific permissions, rate limits, pagination behavior (though 'top' parameter suggests pagination), or what format the results come in. For a tool with 5 parameters and no annotation coverage, this is insufficient 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, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a straightforward retrieval tool and front-loads the core purpose immediately.

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

Completeness3/5

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

For a retrieval tool with 5 parameters and 100% schema coverage but no annotations and no output schema, the description is minimally adequate. It states what the tool does but leaves significant gaps: no behavioral context, no usage guidance, and no information about return format. The agent would need to rely heavily on the schema and possibly trial-and-error.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters are documented in the schema. The description doesn't add any parameter semantics beyond what's already in the schema - it doesn't explain relationships between parameters (like how project/team interact) or provide examples. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the verb ('Retrieve') and resource ('results of a work item query'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'wit_get_query' (which might retrieve query definition rather than results) or 'wit_get_work_items_batch_by_ids' (which retrieves work items directly rather than query results).

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. There's no mention of prerequisites (like needing an existing query ID), comparison to similar tools (like 'wit_get_query' or 'wit_get_work_items_batch_by_ids'), or typical use cases. The agent must infer usage from the tool name alone.

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

wit_get_work_itemB

Get a single work item by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
asOfNoOptional date string to retrieve the work item as of a specific time. If not provided, the current state will be returned.
expandNoExpand options include 'all', 'fields', 'links', 'none', and 'relations'. Relations can be used to get child workitems. Defaults to 'none'.
fieldsNoOptional list of fields to include in the response. If not provided, all fields will be returned.
idYesThe ID of the work item to retrieve.
projectYesThe name or ID of the Azure DevOps project.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. While 'Get' implies a read operation, the description doesn't mention authentication requirements, rate limits, error conditions, or what happens with invalid IDs. For a tool with no annotation coverage, this leaves significant behavioral gaps.

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

Conciseness5/5

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

The description is a single, clear sentence that efficiently communicates the core purpose without unnecessary words. It's appropriately sized for a straightforward retrieval tool and front-loads the essential information.

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

Completeness3/5

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

For a read operation with comprehensive schema coverage (100%) but no output schema, the description is minimally adequate. It states what the tool does but doesn't address behavioral aspects like authentication, error handling, or return format. With no annotations and no output schema, more context would be helpful for safe usage.

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

Parameters3/5

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

The schema description coverage is 100%, with all 5 parameters well-documented in the schema itself. The description doesn't add any parameter information beyond what's already in the schema, so it meets the baseline of 3 for adequate coverage when schema does the heavy lifting.

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 ('a single work item by ID'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'wit_get_work_items_batch_by_ids' or 'wit_my_work_items', which also retrieve work items but through different mechanisms.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With multiple sibling tools for retrieving work items (e.g., 'wit_get_work_items_batch_by_ids', 'wit_my_work_items', 'search_workitem'), there's no indication that this is specifically for retrieving a single item by ID versus other retrieval methods.

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

wit_get_work_items_batch_by_idsC

Retrieve list of work items by IDs in batch.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoOptional list of fields to include in the response. If not provided, a hardcoded default set of fields will be used.
idsYesThe IDs of the work items to retrieve.
projectYesThe name or ID of the Azure DevOps project.

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 states the tool retrieves work items but doesn't describe what happens on errors (e.g., invalid IDs), whether it's read-only, rate limits, authentication needs, or the response format. For a batch retrieval tool with zero annotation coverage, this is a significant gap in 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, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place without redundancy or fluff.

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

Completeness2/5

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

Given the complexity of batch operations (3 parameters, no output schema, no annotations), the description is incomplete. It doesn't explain what the tool returns (e.g., list of work item objects, error handling for partial failures), behavioral traits, or usage context. For a tool with no structured output or annotation support, this leaves the agent under-informed.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters (ids, project, fields) with clear descriptions. The description adds no additional parameter semantics beyond what's in the schema, such as ID format examples or field selection implications. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the verb ('Retrieve') and resource ('list of work items by IDs in batch'), making the purpose understandable. It doesn't explicitly differentiate from sibling tools like 'wit_get_work_item' (singular) or 'wit_get_query_results_by_id', but the batch aspect is implied. This is clear but lacks explicit sibling differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when batch retrieval is preferred over single-item retrieval (e.g., 'wit_get_work_item'), when to use queries instead, or any prerequisites. This leaves the agent without contextual usage instructions.

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

wit_get_work_items_for_iterationC

Retrieve a list of work items for a specified iteration.

ParametersJSON Schema
NameRequiredDescriptionDefault
iterationIdYesThe ID of the iteration to retrieve work items for.
projectYesThe name or ID of the Azure DevOps project.
teamNoThe name or ID of the Azure DevOps team. If not provided, the default team will be used.

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 but offers minimal behavioral insight. It implies a read-only operation ('Retrieve'), but doesn't disclose details like authentication needs, rate limits, pagination behavior, or what happens if the iteration doesn't exist. For a tool with zero annotation coverage, this is inadequate.

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

Conciseness5/5

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

The description is a single, clear sentence with zero wasted words. It's front-loaded with the core purpose and efficiently communicates the essential action without unnecessary elaboration.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete. It doesn't explain what the returned list contains (e.g., work item fields, format), error conditions, or behavioral traits like pagination. For a retrieval tool with 3 parameters, this leaves significant gaps for an AI agent.

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

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 three parameters thoroughly. The description adds no additional meaning beyond what's in the schema (e.g., it doesn't explain iteration context or project/team relationships). Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the action ('Retrieve a list') and resource ('work items for a specified iteration'), making the purpose understandable. However, it doesn't distinguish this tool from sibling tools like 'wit_list_backlog_work_items' or 'wit_my_work_items' that also retrieve work items, which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'wit_get_work_item' (for single items) or 'wit_get_work_items_batch_by_ids' (for multiple items by ID), nor does it specify prerequisites or contexts for iteration-based retrieval.

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

wit_get_work_item_typeC

Get a specific work item type.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesThe name or ID of the Azure DevOps project.
workItemTypeYesThe name of the work item type to retrieve.

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states 'Get' but doesn't disclose behavioral traits such as whether this is a read-only operation, if it requires specific permissions, what happens on invalid inputs, or the format of the return value. This leaves critical gaps for an agent to understand how to invoke it safely and effectively.

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

Conciseness4/5

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

The description is a single, straightforward sentence that efficiently conveys the core action. It's front-loaded with the main purpose, though it could be slightly more specific (e.g., 'Retrieve metadata for a work item type'). There's no wasted text, making it appropriately concise.

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

Completeness2/5

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

Given the complexity (a read operation with 2 required parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'get' returns (e.g., JSON structure, error handling), behavioral aspects like idempotency, or how it fits into broader workflows. This leaves the agent with insufficient context for reliable use.

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

Parameters3/5

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

The input schema has 100% description coverage, clearly documenting both parameters ('project' and 'workItemType'). The description adds no additional meaning beyond what the schema provides, such as examples or constraints. With high schema coverage, the baseline score of 3 is appropriate as the schema does the heavy lifting.

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

Purpose3/5

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

The description 'Get a specific work item type' clearly states the verb ('Get') and resource ('work item type'), but it's vague about what 'get' entails (e.g., retrieve metadata vs. fetch instances). It doesn't distinguish from siblings like 'wit_get_work_item' (which retrieves actual work items) or 'wit_list_backlogs' (which lists types in a backlog context), leaving ambiguity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention if this is for retrieving metadata about a work item type (e.g., fields, states) versus other tools that handle work items themselves, nor does it specify prerequisites like needing project context first.

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

wit_list_backlogsC

Revieve a list of backlogs for a given project and team.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesThe name or ID of the Azure DevOps project.
teamYesThe name or ID of the Azure DevOps team.

TDQS

C2.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. It only states the basic action without mentioning permissions required, rate limits, pagination, error handling, or what the output format might be (e.g., list structure, fields included). For a tool that likely interacts with Azure DevOps, this leaves significant gaps in understanding its behavior.

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

Conciseness4/5

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

The description is a single, straightforward sentence that efficiently conveys the core purpose. However, the typo ('Revieve' instead of 'Retrieve') slightly detracts from professionalism, and it could be more front-loaded with key details, but overall it's appropriately sized without unnecessary fluff.

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

Completeness2/5

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

Given the complexity of Azure DevOps tools, lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'backlogs' entails (e.g., product vs. sprint backlogs), potential dependencies, or return values. With siblings offering related functionality, more context is needed to ensure the agent can use this tool effectively without confusion.

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, clearly documenting both parameters ('project' and 'team') as names or IDs in Azure DevOps. The description adds no additional meaning beyond this, such as format examples or constraints. With high schema coverage, the baseline score of 3 is appropriate, as the schema does the heavy lifting.

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

Purpose3/5

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

The description states the action ('Revieve' likely means 'Retrieve') and resource ('list of backlogs'), but it's vague about what 'backlogs' specifically refers to in Azure DevOps context. It doesn't distinguish from sibling tools like 'wit_list_backlog_work_items' or 'work_list_team_iterations', which might retrieve related but different data. The typo in 'Revieve' slightly undermines clarity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. With siblings like 'wit_list_backlog_work_items' (which lists work items in backlogs) and 'work_list_team_iterations' (which lists iterations for teams), the description lacks any context on how this tool differs or when it's appropriate, leaving the agent to guess based on the name alone.

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

wit_list_backlog_work_itemsB

Retrieve a list of backlogs of for a given project, team, and backlog category

ParametersJSON Schema
NameRequiredDescriptionDefault
backlogIdYesThe ID of the backlog category to retrieve work items from.
projectYesThe name or ID of the Azure DevOps project.
teamYesThe name or ID of the Azure DevOps team.

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 of behavioral disclosure. It states the tool retrieves a list, implying a read-only operation, but does not specify whether it's paginated, the format of returned items, authentication requirements, rate limits, or error conditions. For a tool with no annotations, this leaves significant gaps in understanding its 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, efficient sentence that front-loads the core purpose ('Retrieve a list of backlogs of work items') and specifies the context ('for a given project, team, and backlog category'). There is no wasted wording, and it is appropriately sized for the tool's complexity.

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

Completeness3/5

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

Given the tool's moderate complexity (3 required parameters, no output schema, no annotations), the description is minimally adequate. It covers the purpose and parameters but lacks details on usage guidelines, behavioral traits, and output format. Without annotations or an output schema, the description should do more to compensate, but it meets a basic threshold.

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 description mentions the parameters ('project, team, and backlog category'), but the input schema already has 100% description coverage with clear explanations for each parameter. The description adds no additional meaning beyond what the schema provides, such as examples or constraints. With high schema coverage, the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action ('Retrieve a list') and the resource ('backlogs of work items'), specifying the scope with 'for a given project, team, and backlog category'. It distinguishes from sibling tools like 'wit_list_backlogs' (which likely lists backlog categories) by focusing on work items within a backlog. However, it could be more specific about what 'backlogs of work items' entails (e.g., items in a specific backlog level).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention sibling tools like 'wit_get_work_items_for_iteration' or 'wit_my_work_items', nor does it specify prerequisites (e.g., needing a valid backlog ID from 'wit_list_backlogs'). Usage is implied by the parameters but not explicitly stated.

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

wit_list_work_item_commentsC

Retrieve list of comments for a work item by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesThe name or ID of the Azure DevOps project.
topNoOptional number of comments to retrieve. Defaults to all comments.
workItemIdYesThe ID of the work item to retrieve comments for.

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 states 'Retrieve list' which implies a read-only operation, but it doesn't mention authentication requirements, rate limits, pagination behavior (despite the 'top' parameter), error handling, or what the return format looks like. This leaves significant gaps for a tool that fetches data.

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, direct sentence with zero wasted words. It front-loads the core purpose ('Retrieve list of comments') efficiently, making it easy to parse and understand at a glance.

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 (3 parameters, no output schema, and no annotations), the description is insufficient. It doesn't explain the return values, pagination behavior (implied by 'top'), or how comments are structured, leaving the agent with incomplete context for proper invocation and result interpretation.

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 description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds no additional meaning beyond implying that 'workItemId' is used to identify the target, which is redundant with the schema. This meets the baseline for high schema coverage without extra value.

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

Purpose4/5

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

The description clearly states the action ('Retrieve list') and resource ('comments for a work item by ID'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'wit_add_work_item_comment' or 'repo_list_pull_request_thread_comments', which also handle comments in different contexts, so it doesn't achieve full sibling 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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'wit_get_work_item' (which might include comments) or 'repo_list_pull_request_thread_comments' (for code-related comments), nor does it specify prerequisites or exclusions, leaving usage context ambiguous.

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

wit_my_work_itemsC

Retrieve a list of work items relevent to the authenticated user.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeCompletedNoWhether to include completed work items. Defaults to false.
projectYesThe name or ID of the Azure DevOps project.
topNoThe maximum number of work items to return. Defaults to 50.
typeNoThe type of work items to retrieve. Defaults to 'assignedtome'.assignedtome

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 but only states it 'retrieves a list', implying a read-only operation without disclosing behavioral traits like authentication requirements (though hinted by 'authenticated user'), rate limits, pagination (top parameter suggests limited returns), or what 'relevent' entails (e.g., based on assignment or activity). It misses details on error handling or response format.

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

Conciseness4/5

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

The description is a single, clear sentence that front-loads the core purpose. It's appropriately sized with no wasted words, though minor spelling error ('relevent') slightly detracts. Efficient for a simple retrieval tool.

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

Completeness3/5

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

Given 4 parameters with full schema coverage, no output schema, and no annotations, the description is minimally adequate. It covers the basic purpose but lacks context on usage scenarios, behavioral details (e.g., authentication, limits), or output expectations. For a user-specific query tool, more guidance on relevance and alternatives 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%, so the schema fully documents parameters (includeCompleted, project, top, type) with descriptions and defaults. The description adds no parameter-specific semantics beyond implying user-relevance, which aligns with the 'type' parameter's enum ('assignedtome', 'myactivity'). Baseline 3 is appropriate as schema does heavy lifting.

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 ('retrieve') and resource ('list of work items'), specifying they are 'relevant to the authenticated user'. It distinguishes from general work item tools like 'wit_get_work_item' or 'wit_get_work_items_batch_by_ids' by focusing on user-relevance, but doesn't explicitly differentiate from sibling 'wit_list_backlog_work_items' or 'wit_get_work_items_for_iteration' which might also retrieve user-specific items.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'search_workitem', 'wit_get_query_results_by_id', or other wit_* siblings. The description implies it's for authenticated user's items, but doesn't specify contexts (e.g., personal dashboard vs. project overview) or exclusions (e.g., not for historical analysis).

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

wit_update_work_itemC

Update a work item by ID with specified fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the work item to update.
updatesYesAn array of field updates to apply to the work item.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states it's an update operation. It doesn't disclose behavioral traits like whether it requires specific permissions, if updates are reversible, what happens on errors, rate limits, or response format. This is a significant gap for a mutation 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, efficient sentence with zero waste. It's front-loaded with the core action and includes essential details (by ID, with fields) without 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?

For a mutation tool with no annotations and no output schema, the description is incomplete. It lacks information about behavioral aspects, error handling, permissions, and what the tool returns. Given the complexity of updating work items, more context 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?

Schema description coverage is 100%, so the schema fully documents the 'id' and 'updates' parameters. The description adds no additional meaning beyond implying field updates, which is already covered in the schema. Baseline 3 is appropriate when schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the verb ('Update') and resource ('work item'), specifying it's done by ID with fields. It distinguishes from siblings like wit_create_work_item (creation) and wit_get_work_item (retrieval), but doesn't explicitly differentiate from wit_update_work_items_batch (batch updates).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like wit_update_work_items_batch for multiple items or wit_create_work_item for new items. It mentions 'by ID' and 'specified fields' but lacks context about prerequisites, permissions, or typical use cases.

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

wit_update_work_items_batchC

Update work items in batch

ParametersJSON Schema
NameRequiredDescriptionDefault
updatesYesAn array of updates to apply to work items. Each update should include the operation (op), work item ID (id), field path (path), and new value (value).

TDQS

C2.6/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 states 'Update' which implies a write/mutation operation, but does not mention permissions required, whether changes are reversible, rate limits, error handling, or response format. This leaves significant gaps in understanding the tool's behavior and risks.

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 'Update work items in batch' that is front-loaded and wastes no words. However, it could be slightly more informative by including key context without losing conciseness.

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

Completeness2/5

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

Given the complexity of a batch update tool with no annotations and no output schema, the description is incomplete. It fails to address critical aspects like behavioral traits (e.g., atomicity, error handling), usage context, or return values, making it inadequate for safe and effective use by an AI agent.

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

Parameters3/5

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

The input schema has 100% description coverage, detailing the 'updates' array with nested properties like 'op', 'id', 'path', 'value', and 'format'. The description does not add any parameter information beyond what the schema provides, so it meets the baseline score of 3 for high schema coverage without extra value.

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

Purpose3/5

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

The description 'Update work items in batch' clearly states the action (update) and resource (work items), and specifies batch operation, which distinguishes it from the sibling tool 'wit_update_work_item' for single updates. However, it lacks specificity about what fields can be updated or the system context, making it somewhat vague.

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 is provided on when to use this tool versus alternatives like 'wit_update_work_item' for single updates or other work item tools. The description implies batch usage but does not specify scenarios, prerequisites, or exclusions, leaving usage context unclear.

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

work_assign_iterationsC

Assign existing iterations to a specific team in a project.

ParametersJSON Schema
NameRequiredDescriptionDefault
iterationsYesAn array of iterations to assign. Each iteration must have an identifier and a path.
projectYesThe name or ID of the Azure DevOps project.
teamYesThe name or ID of the Azure DevOps team.

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 full burden. It states 'assign' implying a mutation operation, but doesn't disclose behavioral traits such as required permissions, whether assignments are reversible, error handling for invalid inputs, or impact on existing team iterations. This is a significant gap for a mutation tool with zero 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, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it easy to parse. Every word earns its place without redundancy or fluff.

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 (mutation with 3 parameters, no annotations, no output schema), the description is incomplete. It doesn't cover behavioral aspects like side effects, error conditions, or return values, which are crucial for safe invocation. The 100% schema coverage helps with inputs, but overall context for a mutation tool is lacking.

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 (project, team, iterations). The description adds no additional meaning beyond what's in the schemaโ€”it doesn't explain parameter relationships, constraints, or examples. Baseline 3 is appropriate when schema does the heavy lifting, but no extra value is added.

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 ('assign') and resource ('existing iterations'), specifying the target ('to a specific team in a project'). It distinguishes from sibling tools like 'work_create_iterations' (create vs assign) and 'work_list_team_iterations' (list vs assign), though not explicitly named. However, it doesn't fully differentiate from potential overlapping tools like 'wit_update_work_item' which might also handle iterations indirectly.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives is provided. The description mentions 'existing iterations' but doesn't clarify prerequisites (e.g., iterations must exist, team must be in the project) or when to choose this over other iteration-related tools like 'work_create_iterations'. It lacks explicit context about 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.

work_create_iterationsC

Create new iterations in a specified Azure DevOps project.

ParametersJSON Schema
NameRequiredDescriptionDefault
iterationsYesAn array of iterations to create. Each iteration must have a name and can optionally have start and finish dates in ISO format.
projectYesThe name or ID of the Azure DevOps project.

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. While 'Create' implies a write operation, it doesn't specify required permissions, whether iterations can be modified or deleted after creation, rate limits, or what happens on success/failure. This is inadequate for a mutation tool with zero 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, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized and front-loaded with the core functionality.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what happens after creation (e.g., returns iteration IDs), error conditions, or how this tool fits into the broader Azure DevOps work management context alongside sibling tools.

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 description coverage is 100%, so the schema already fully documents both parameters. The description doesn't add any additional meaning beyond what's in the schema (e.g., it doesn't explain what 'iterations' represent in Azure DevOps context or provide examples). Baseline 3 is appropriate when the schema does all the work.

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

Purpose4/5

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

The description clearly states the action ('Create new iterations') and the resource ('in a specified Azure DevOps project'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its sibling 'work_assign_iterations' or 'work_list_team_iterations', which prevents a perfect score.

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

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. There's no mention of prerequisites, when not to use it, or how it relates to sibling tools like 'work_assign_iterations' or 'work_list_team_iterations'.

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

work_list_team_iterationsC

Retrieve a list of iterations for a specific team in a project.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesThe name or ID of the Azure DevOps project.
teamYesThe name or ID of the Azure DevOps team.
timeframeNoThe timeframe for which to retrieve iterations. Currently, only 'current' is supported.

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 states the tool retrieves a list, implying a read-only operation, but doesn't specify authentication needs, rate limits, pagination, error conditions, or the format of returned iterations. For a tool with no annotation coverage, this leaves significant gaps in understanding its 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, efficient sentence that front-loads the core action ('Retrieve a list of iterations') without unnecessary words. It directly conveys the purpose without redundancy, making it easy to parse quickly.

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

Completeness2/5

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

Given the complexity of retrieving iterations in Azure DevOps, the lack of annotations and output schema means the description should do more. It doesn't explain what an 'iteration' entails (e.g., sprint details), the structure of the returned list, or potential limitations (e.g., only 'current' timeframe supported). For a tool with no structured behavioral or output data, this is incomplete.

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, clearly documenting all three parameters (project, team, timeframe with enum 'current'). The description adds no additional meaning beyond what the schema provides, such as examples or constraints on project/team formats. With high schema coverage, the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the verb ('Retrieve a list') and resource ('iterations for a specific team in a project'), making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'wit_get_work_items_for_iteration' or 'work_create_iterations', which also involve iterations but serve different purposes (fetching work items vs. creating iterations).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing project/team access), exclusions (e.g., not for past/future iterations beyond 'current'), or comparisons to siblings like 'wit_get_work_items_for_iteration' (which retrieves work items for iterations) or 'work_create_iterations' (which creates new iterations).

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

Tool Schema Changelog

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

  1. 70 tool updatesv1.0.0
    • First observedadvsec_get_alert_details
    • First observedadvsec_get_alerts
    • First observedbuild_get_builds
    • First observedbuild_get_changes
    • First observedbuild_get_definition_revisions
    • First observedbuild_get_definitions
    • First observedbuild_get_log
    • First observedbuild_get_log_by_id
    • First observedbuild_get_status
    • First observedbuild_run_build
    • First observedbuild_update_build_stage
    • First observedcore_get_identity_ids
    • First observedcore_list_project_teams
    • First observedcore_list_projects
    • First observedrelease_get_definitions
    • First observedrelease_get_releases
    • First observedrepo_create_pull_request
    • First observedrepo_create_pull_request_thread
    • First observedrepo_get_branch_by_name
    • First observedrepo_get_pull_request_by_id
    • First observedrepo_get_repo_by_name_or_id
    • First observedrepo_list_branches_by_repo
    • First observedrepo_list_my_branches_by_repo
    • First observedrepo_list_pull_request_thread_comments
    • First observedrepo_list_pull_request_threads
    • First observedrepo_list_pull_requests_by_commits
    • First observedrepo_list_pull_requests_by_project
    • First observedrepo_list_pull_requests_by_repo
    • First observedrepo_list_repos_by_project
    • First observedrepo_reply_to_comment
    • First observedrepo_resolve_comment
    • First observedrepo_search_commits
    • First observedrepo_update_pull_request
    • First observedrepo_update_pull_request_reviewers
    • First observedsearch_code
    • First observedsearch_wiki
    • First observedsearch_workitem
    • First observedtestplan_add_test_cases_to_suite
    • First observedtestplan_create_test_case
    • First observedtestplan_create_test_plan
    • First observedtestplan_list_test_cases
    • First observedtestplan_list_test_plans
    • First observedtestplan_show_test_results_from_build_id
    • First observedwiki_create_or_update_page
    • First observedwiki_get_page_content
    • First observedwiki_get_wiki
    • First observedwiki_list_pages
    • First observedwiki_list_wikis
    • First observedwit_add_artifact_link
    • First observedwit_add_child_work_items
    • First observedwit_add_work_item_comment
    • First observedwit_create_work_item
    • First observedwit_get_query
    • First observedwit_get_query_results_by_id
    • First observedwit_get_work_item
    • First observedwit_get_work_item_type
    • First observedwit_get_work_items_batch_by_ids
    • First observedwit_get_work_items_for_iteration
    • First observedwit_link_work_item_to_pull_request
    • First observedwit_list_backlog_work_items
    • First observedwit_list_backlogs
    • First observedwit_list_work_item_comments
    • First observedwit_my_work_items
    • First observedwit_update_work_item
    • First observedwit_update_work_items_batch
    • First observedwit_work_item_unlink
    • First observedwit_work_items_link
    • First observedwork_assign_iterations
    • First observedwork_create_iterations
    • First observedwork_list_team_iterations

TDQS

B3.2/5.0
Disambiguation4/5

Most tools are well-differentiated by resource type and action, but there is some overlap in search functionality (search_code, search_wiki, search_workitem) and multiple PR listing tools (repo_list_pull_requests_by_project, repo_list_pull_requests_by_repo, repo_list_pull_requests_by_commits) that could cause minor confusion. The descriptions help clarify, but the sheer number of tools increases the risk of misselection.

Naming Consistency5/5

Tool names follow a highly consistent pattern throughout: all use snake_case with a clear prefix indicating the domain (e.g., 'build_', 'repo_', 'wit_'), followed by a verb_noun structure. This predictability makes it easy for agents to understand and navigate the toolset without ambiguity.

Tool Count2/5

With 70 tools, this server is excessively large for typical MCP usage, making it overwhelming and difficult for agents to manage effectively. While Azure DevOps is a broad platform, this count feels bloated and could hinder usability, as many tools might be rarely used or redundant.

Completeness5/5

The toolset provides comprehensive coverage across Azure DevOps domains, including builds, repositories, work items, test plans, wikis, and more, with full CRUD operations and lifecycle management. There are no obvious gaps; agents can perform complex workflows without dead ends.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ennuiii/DevOpsMcpPAT'

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