Azure DevOps MCP Server with PAT Authentication
Enables deployment of the MCP server as a web service on Render.com's cloud platform, providing HTTP API endpoints for Azure DevOps integration accessible via web applications
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Azure DevOps MCP Server with PAT Authenticationshow me my assigned work items for this sprint"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.
โจ 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:
CLI Interface (
src/index.ts) - Traditional MCP server via stdin/stdoutWeb 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 IDwit_create_work_item- Create new work itemwit_update_work_item- Update work item fieldswit_my_work_items- Get user's assigned work itemswit_add_work_item_comment- Add commentswit_list_backlogs- List team backlogswit_link_work_item_to_pull_request- Link work items to PRsAnd 12 more...
Builds (9 tools)
build_get_builds- List buildsbuild_run_build- Trigger new buildbuild_get_log- Get build logsbuild_get_status- Check build statusAnd 5 more...
Repositories (18 tools)
repo_create_pull_request- Create pull requestsrepo_list_pull_requests_by_repo- List PRsrepo_get_pull_request_by_id- Get PR detailsrepo_list_branches_by_repo- List branchesrepo_search_commits- Search commitsAnd 13 more...
Search (3 tools)
search_code- Search repositoriessearch_wiki- Search wiki pagessearch_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
๐ Quick Start
Option 1: Deploy to Render.com (Recommended)
Fork this repository
Deploy to Render:
Go to render.com
Create new Web Service
Connect your forked repository
Set environment variables (see below)
Set Environment Variables:
AZURE_DEVOPS_ORG=your-organization-name AZURE_DEVOPS_PAT=your-personal-access-tokenDeploy 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 |
| Your Azure DevOps organization name |
|
| Personal Access Token |
|
Optional
Variable | Description | Default |
| HTTP server port |
|
| Node.js environment |
|
๐ซ Creating a Personal Access Token
Go to Azure DevOps:
https://dev.azure.com/{your-organization}Click User Settings โ Personal Access Tokens
Click "New Token"
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 documentationGET /health- Health check
Tools
GET /api/tools- List all available toolsPOST /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 | 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 buildDevelopment Mode
npm run devTesting
# 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)
wit_list_backlogs- List team backlogswit_list_backlog_work_items- List backlog work itemswit_my_work_items- Get user's work itemswit_get_work_items_batch_by_ids- Batch get work itemswit_get_work_item- Get single work itemwit_list_work_item_comments- List work item commentswit_add_work_item_comment- Add work item commentwit_add_child_work_items- Create child work itemswit_link_work_item_to_pull_request- Link to PRwit_get_work_items_for_iteration- Get iteration work itemswit_update_work_item- Update work itemwit_get_work_item_type- Get work item typewit_create_work_item- Create work itemwit_get_query- Get query definitionwit_get_query_results_by_id- Execute querywit_update_work_items_batch- Batch updatewit_work_items_link- Link work itemswit_work_item_unlink- Unlink work itemswit_add_artifact_link- Link artifacts
Builds (9 tools)
build_get_definitions- List build definitionsbuild_get_definition_revisions- Get definition historybuild_get_builds- List buildsbuild_get_log- Get build logsbuild_get_log_by_id- Get specific logbuild_get_changes- Get build changesbuild_run_build- Trigger buildbuild_get_status- Get build statusbuild_update_build_stage- Update build stage
Repositories (18 tools)
repo_create_pull_request- Create PRrepo_update_pull_request- Update PRrepo_update_pull_request_reviewers- Manage reviewersrepo_list_repos_by_project- List repositoriesrepo_list_pull_requests_by_repo- List PRs by reporepo_list_pull_requests_by_project- List PRs by projectrepo_list_pull_request_threads- List PR threadsrepo_list_pull_request_thread_comments- List thread commentsrepo_list_branches_by_repo- List branchesrepo_list_my_branches_by_repo- List my branchesrepo_get_repo_by_name_or_id- Get repositoryrepo_get_branch_by_name- Get branchrepo_get_pull_request_by_id- Get PRrepo_reply_to_comment- Reply to PR commentrepo_create_pull_request_thread- Create PR threadrepo_resolve_comment- Resolve PR commentrepo_search_commits- Search commitsrepo_list_pull_requests_by_commits- Find PRs by commits
Search (3 tools)
search_code- Search code repositoriessearch_wiki- Search wiki pagessearch_workitem- Search work items
Work Management (3 tools)
work_list_team_iterations- List team iterationswork_create_iterations- Create iterationswork_assign_iterations- Assign iterations to team
Releases (2 tools)
release_get_definitions- List release definitionsrelease_get_releases- List releases
Wiki (5 tools)
wiki_list_wikis- List wikiswiki_get_wiki- Get wiki detailswiki_list_pages- List wiki pageswiki_get_page_content- Get page contentwiki_create_or_update_page- Create/update page
Test Plans (6 tools)
testplan_list_test_plans- List test planstestplan_create_test_plan- Create test plantestplan_add_test_cases_to_suite- Add test casestestplan_create_test_case- Create test casetestplan_list_test_cases- List test casestestplan_show_test_results_from_build_id- Get test results
Core (3 tools)
core_list_project_teams- List project teamscore_list_projects- List projectscore_get_identity_ids- Get identity IDs
Advanced Security (2 tools)
advsec_get_alerts- Get security alertsadvsec_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
Fork the repository
Create a feature branch
Make your changes
Add tests if applicable
Submit a pull request
๐ Links
โญ Star History
If this project helped you, please consider giving it a star! โญ
Available Tools
70 toolsadvsec_get_alert_detailsB
Get detailed information about a specific Advanced Security alert.
| Name | Required | Description | Default |
|---|---|---|---|
| alertId | Yes | The ID of the alert to retrieve details for. | |
| project | Yes | The name or ID of the Azure DevOps project. | |
| ref | No | Git reference (branch) to filter the alert. | |
| repository | Yes | The name or ID of the repository containing the alert. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| alertType | No | Filter alerts by type. If not specified, returns all alert types. | |
| confidenceLevels | Yes | Filter alerts by confidence levels. Only applicable for secret alerts. Defaults to both 'high' and 'other'. | |
| continuationToken | No | Continuation token for pagination. | |
| onlyDefaultBranch | No | If true, only return alerts found on the default branch. Defaults to true. | |
| orderBy | No | Order results by specified field. Defaults to 'severity'. | severity |
| project | Yes | The name or ID of the Azure DevOps project. | |
| ref | No | Filter alerts by git reference (branch). If not provided and onlyDefaultBranch is true, only includes alerts from default branch. | |
| repository | Yes | The name or ID of the repository to get alerts for. | |
| ruleId | No | Filter alerts by rule ID. | |
| ruleName | No | Filter alerts by rule name. | |
| severities | No | Filter alerts by severity level. If not specified, returns alerts at any severity. | |
| states | No | Filter alerts by state. If not specified, returns alerts in any state. | |
| toolName | No | Filter alerts by tool name. | |
| top | No | Maximum number of alerts to return. Defaults to 100. | |
| validity | No | Filter alerts by validity status. Only applicable for secret alerts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| branchName | No | Branch name to filter builds | |
| buildIds | No | Array of build IDs to retrieve | |
| buildNumber | No | Build number to filter builds | |
| continuationToken | No | Token for continuing paged results | |
| definitions | No | Array of build definition IDs to filter builds | |
| deletedFilter | No | Filter for deleted builds (see QueryDeletedOption enum) | |
| maxBuildsPerDefinition | No | Maximum number of builds per definition | |
| maxTime | No | Maximum finish time to filter builds | |
| minTime | No | Minimum finish time to filter builds | |
| project | Yes | Project ID or name to get builds for | |
| properties | No | Array of property names to include in the results | |
| queryOrder | No | Order in which builds are returned | QueueTimeDescending |
| queues | No | Array of queue IDs to filter builds | |
| reasonFilter | No | Reason filter for the build (see BuildReason enum) | |
| repositoryId | No | Repository ID to filter builds | |
| repositoryType | No | Type of repository to filter builds | |
| requestedFor | No | User ID or name who requested the build | |
| resultFilter | No | Result filter for the build (see BuildResult enum) | |
| statusFilter | No | Status filter for the build (see BuildStatus enum) | |
| tagFilters | No | Array of tags to filter builds | |
| top | No | Maximum number of builds to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states it '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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| buildId | Yes | ID of the build to get changes for | |
| continuationToken | No | Continuation token for pagination | |
| includeSourceChange | No | Whether to include source changes in the results, defaults to false | |
| project | Yes | Project ID or name to get the build changes for | |
| top | No | Number of changes to retrieve, defaults to 100 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states it's a read operation ('Get'), but doesn't 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| definitionId | Yes | ID of the build definition to get revisions for | |
| project | Yes | Project ID or name to get the build definition revisions for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| builtAfter | No | Return definitions that have builds after this date | |
| continuationToken | No | Token for continuing paged results | |
| definitionIds | No | Array of build definition IDs to filter | |
| includeAllProperties | No | Whether to include all properties in the results | |
| includeLatestBuilds | No | Whether to include the latest builds for each definition | |
| minMetricsTime | No | Minimum metrics time to filter build definitions | |
| name | No | Name of the build definition to filter | |
| notBuiltAfter | No | Return definitions that do not have builds after this date | |
| path | No | Path of the build definition to filter | |
| processType | No | Process type to filter build definitions | |
| project | Yes | Project ID or name to get build definitions for | |
| queryOrder | No | Order in which build definitions are returned | |
| repositoryId | No | Repository ID to filter build definitions | |
| repositoryType | No | Type of repository to filter build definitions | |
| taskIdFilter | No | Task ID to filter build definitions | |
| top | No | Maximum number of build definitions to return | |
| yamlFilename | No | YAML filename to filter build definitions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states '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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| buildId | Yes | ID of the build to get the log for | |
| project | Yes | Project ID or name to get the build log for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| buildId | Yes | ID of the build to get the log for | |
| endLine | No | Ending line number for the log content, defaults to the end of the log | |
| logId | Yes | ID of the log to retrieve | |
| project | Yes | Project ID or name to get the build log for | |
| startLine | No | Starting line number for the log content, defaults to 0 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| buildId | Yes | ID of the build to get the status for | |
| project | Yes | Project ID or name to get the build status for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states '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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| definitionId | Yes | ID of the build definition to run | |
| parameters | No | Custom build parameters as key-value pairs | |
| project | Yes | Project ID or name to run the build in | |
| sourceBranch | No | Source branch to run the build from. If not provided, the default branch will be used. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| buildId | Yes | ID of the build to update | |
| forceRetryAllJobs | No | Whether to force retry all jobs in the stage. | |
| project | Yes | Project ID or name to update the build stage for | |
| stageName | Yes | Name of the stage to update | |
| status | Yes | New status for the stage |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. '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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| searchFilter | Yes | Search filter (unique namme, display name, email) to retrieve identity IDs for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| continuationToken | No | Continuation token for pagination. Used to fetch the next set of results if available. | |
| projectNameFilter | No | Filter projects by name. Supports partial matches. | |
| skip | No | The number of projects to skip for pagination. Defaults to 0. | |
| stateFilter | No | Filter projects by their state. Defaults to 'wellFormed'. | wellFormed |
| top | No | The maximum number of projects to return. Defaults to 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mine | No | If true, only return teams that the authenticated user is a member of. | |
| project | Yes | The name or ID of the Azure DevOps project. | |
| skip | No | The number of teams to skip for pagination. Defaults to 0. | |
| top | No | The maximum number of teams to return. Defaults to 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| artifactSourceId | No | Filter by artifact source ID | |
| artifactType | No | Filter by artifact type | |
| continuationToken | No | Continuation token for pagination | |
| definitionIdFilter | No | Filter by specific release definition IDs | |
| expand | No | Expand options for release definitions | None |
| isDeleted | No | Whether to include deleted release definitions. Default is false. | |
| isExactNameMatch | No | Whether to match the exact name of the release definition. Default is false. | |
| path | No | Path to filter release definitions | |
| project | Yes | Project ID or name to get release definitions for | |
| propertyFilters | No | Filter by properties associated with the release definitions | |
| queryOrder | No | Order of the results | NameAscending |
| searchText | No | Search text to filter release definitions | |
| searchTextContainsFolderName | No | Whether to include folder names in the search text | |
| tagFilter | No | Filter by tags associated with the release definitions | |
| top | No | Number of results to return (for pagination) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| artifactTypeId | No | Filter releases by artifact type ID | |
| artifactVersionId | No | Filter releases by artifact version ID | |
| continuationToken | No | Continuation token for pagination | |
| createdBy | No | User ID or name who created the release | |
| definitionEnvironmentId | No | ID of the definition environment to filter releases | |
| definitionId | No | ID of the release definition to filter releases | |
| environmentStatusFilter | No | Environment status to filter releases | |
| expand | No | Expand options for releases | None |
| isDeleted | No | Whether to include deleted releases (default: false) | |
| maxCreatedTime | No | Maximum created time for releases (default: now) | 2025-08-19T07:02:49.644Z |
| minCreatedTime | No | Minimum created time for releases (default: 7 days ago) | 2025-08-12T07:02:49.644Z |
| path | No | Path to filter releases | |
| project | No | Project ID or name to get releases for | |
| propertyFilters | No | Filter releases by properties | |
| queryOrder | No | Order in which to return releases (default: Ascending) | Ascending |
| releaseIdFilter | No | Filter by specific release IDs | |
| searchText | No | Search text to filter releases | |
| sourceBranchFilter | No | Filter releases by source branch | |
| sourceId | No | Filter releases by artifact source ID | |
| statusFilter | No | Status of the releases to filter (default: Active) | Active |
| tagFilter | No | Filter releases by tags | |
| top | No | Number of releases to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| description | No | The description of the pull request. Optional. | |
| forkSourceRepositoryId | No | The ID of the fork repository that the pull request originates from. Optional, used when creating a pull request from a fork. | |
| isDraft | No | Indicates whether the pull request is a draft. Defaults to false. | |
| repositoryId | Yes | The ID of the repository where the pull request will be created. | |
| sourceRefName | Yes | The source branch name for the pull request, e.g., 'refs/heads/feature-branch'. | |
| targetRefName | Yes | The target branch name for the pull request, e.g., 'refs/heads/main'. | |
| title | Yes | The title of the pull request. | |
| workItems | No | Work item IDs to associate with the pull request, space-separated. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. '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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | The content of the comment to be added. | |
| filePath | No | The path of the file where the comment thread will be created. (optional) | |
| project | No | Project ID or project name (optional) | |
| pullRequestId | Yes | The ID of the pull request where the comment thread exists. | |
| repositoryId | Yes | The ID of the repository where the pull request is located. | |
| rightFileEndLine | No | Position 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) | |
| rightFileEndOffset | No | Position 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) | |
| rightFileStartLine | No | Position of first character of the thread's span in right file. The line number of a thread's position. Starts at 1. (optional) | |
| rightFileStartOffset | No | Position 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) | |
| status | No | The status of the comment thread. Defaults to 'Active'. | Active |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| branchName | Yes | The name of the branch to retrieve, e.g., 'main' or 'feature-branch'. | |
| repositoryId | Yes | The ID of the repository where the branch is located. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| includeWorkItemRefs | No | Whether to reference work items associated with the pull request. | |
| pullRequestId | Yes | The ID of the pull request to retrieve. | |
| repositoryId | Yes | The ID of the repository where the pull request is located. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | Project name or ID where the repository is located. | |
| repositoryNameOrId | Yes | Repository name or ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| repositoryId | Yes | The ID of the repository where the branches are located. | |
| top | No | The maximum number of branches to return. Defaults to 100. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| repositoryId | Yes | The ID of the repository where the branches are located. | |
| top | No | The maximum number of branches to return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| commits | Yes | Array of commit IDs to query for | |
| project | Yes | Project name or ID | |
| queryType | No | Type of query to perform | LastMergeCommit |
| repository | Yes | Repository name or ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| created_by_me | No | Filter pull requests created by the current user. | |
| i_am_reviewer | No | Filter pull requests where the current user is a reviewer. | |
| project | Yes | The name or ID of the Azure DevOps project. | |
| skip | No | The number of pull requests to skip. | |
| status | No | Filter pull requests by status. Defaults to 'Active'. | Active |
| top | No | The maximum number of pull requests to return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| created_by_me | No | Filter pull requests created by the current user. | |
| i_am_reviewer | No | Filter pull requests where the current user is a reviewer. | |
| repositoryId | Yes | The ID of the repository where the pull requests are located. | |
| skip | No | The number of pull requests to skip. | |
| status | No | Filter pull requests by status. Defaults to 'Active'. | Active |
| top | No | The maximum number of pull requests to return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| fullResponse | No | Return full comment JSON response instead of trimmed data. | |
| project | No | Project ID or project name (optional) | |
| pullRequestId | Yes | The ID of the pull request for which to retrieve thread comments. | |
| repositoryId | Yes | The ID of the repository where the pull request is located. | |
| skip | No | The number of comments to skip. | |
| threadId | Yes | The ID of the thread for which to retrieve comments. | |
| top | No | The maximum number of comments to return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While '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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| baseIteration | No | The base iteration ID for which to retrieve threads. Optional, defaults to the latest base iteration. | |
| fullResponse | No | Return full thread JSON response instead of trimmed data. | |
| iteration | No | The iteration ID for which to retrieve threads. Optional, defaults to the latest iteration. | |
| project | No | Project ID or project name (optional) | |
| pullRequestId | Yes | The ID of the pull request for which to retrieve threads. | |
| repositoryId | Yes | The ID of the repository where the pull request is located. | |
| skip | No | The number of threads to skip. | |
| top | No | The maximum number of threads to return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | The name or ID of the Azure DevOps project. | |
| repoNameFilter | No | Optional filter to search for repositories by name. If provided, only repositories with names containing this string will be returned. | |
| skip | No | The number of repositories to skip. Defaults to 0. | |
| top | No | The maximum number of repositories to return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states '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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | The content of the comment to be added. | |
| fullResponse | No | Return full comment JSON response instead of a simple confirmation message. | |
| project | No | Project ID or project name (optional) | |
| pullRequestId | Yes | The ID of the pull request where the comment thread exists. | |
| repositoryId | Yes | The ID of the repository where the pull request is located. | |
| threadId | Yes | The ID of the thread to which the comment will be added. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While '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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| fullResponse | No | Return full thread JSON response instead of a simple confirmation message. | |
| pullRequestId | Yes | The ID of the pull request where the comment thread exists. | |
| repositoryId | Yes | The ID of the repository where the pull request is located. | |
| threadId | Yes | The ID of the thread to be resolved. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| fromCommit | No | Starting commit ID | |
| includeLinks | No | Include commit links | |
| includeWorkItems | No | Include associated work items | |
| project | Yes | Project name or ID | |
| repository | Yes | Repository name or ID | |
| skip | No | Number of commits to skip | |
| toCommit | No | Ending commit ID | |
| top | No | Maximum number of commits to return | |
| version | No | The name of the branch, tag or commit to filter commits by | |
| versionType | No | The meaning of the version parameter, e.g., branch, tag or commit | Branch |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. '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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| description | No | The new description for the pull request. | |
| isDraft | No | Whether the pull request should be a draft. | |
| pullRequestId | Yes | The ID of the pull request to update. | |
| repositoryId | Yes | The ID of the repository where the pull request exists. | |
| status | No | The new status of the pull request. Can be 'Active' or 'Abandoned'. | |
| targetRefName | No | The new target branch name (e.g., 'refs/heads/main'). | |
| title | No | The new title for the pull request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states '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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform on the reviewers. Can be 'add' or 'remove'. | |
| pullRequestId | Yes | The ID of the pull request to update. | |
| repositoryId | Yes | The ID of the repository where the pull request exists. | |
| reviewerIds | Yes | List of reviewer ids to add or remove from the pull request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| branch | No | Filter by branches | |
| includeFacets | No | Include facets in the search results | |
| path | No | Filter by paths | |
| project | No | Filter by projects | |
| repository | No | Filter by repositories | |
| searchText | Yes | Keywords to search for in code repositories | |
| skip | No | Number of results to skip | |
| top | No | Maximum number of results to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| includeFacets | No | Include facets in the search results | |
| project | No | Filter by projects | |
| searchText | Yes | Keywords to search for wiki pages | |
| skip | No | Number of results to skip | |
| top | No | Maximum number of results to return | |
| wiki | No | Filter by wiki names |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| areaPath | No | Filter by area paths | |
| assignedTo | No | Filter by assigned to users | |
| includeFacets | No | Include facets in the search results | |
| project | No | Filter by projects | |
| searchText | Yes | Search text to find in work items | |
| skip | No | Number of results to skip for pagination | |
| state | No | Filter by work item states | |
| top | No | Number of results to return | |
| workItemType | No | Filter by work item types |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states '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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| planId | Yes | The ID of the test plan. | |
| project | Yes | The unique identifier (ID or name) of the Azure DevOps project. | |
| suiteId | Yes | The ID of the test suite. | |
| testCaseIds | Yes | The ID(s) of the test case(s) to add. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| areaPath | No | The area path for the test case. | |
| iterationPath | No | The iteration path for the test case. | |
| priority | No | The priority of the test case. | |
| project | Yes | The unique identifier (ID or name) of the Azure DevOps project. | |
| steps | No | The 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. | |
| title | Yes | The title of the test case. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| areaPath | No | The area path for the test plan | |
| description | No | The description of the test plan | |
| endDate | No | The end date of the test plan | |
| iteration | Yes | The iteration path for the test plan | |
| name | Yes | The name of the test plan to be created. | |
| project | Yes | The unique identifier (ID or name) of the Azure DevOps project where the test plan will be created. | |
| startDate | No | The start date of the test plan |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states it '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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| planid | Yes | The ID of the test plan. | |
| project | Yes | The unique identifier (ID or name) of the Azure DevOps project. | |
| suiteid | Yes | The ID of the test suite. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| continuationToken | No | Token to continue fetching test plans from a previous request. | |
| filterActivePlans | No | Filter to include only active test plans. Defaults to true. | |
| includePlanDetails | No | Include detailed information about each test plan. | |
| project | Yes | The unique identifier (ID or name) of the Azure DevOps project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| buildid | Yes | The ID of the build. | |
| project | Yes | The unique identifier (ID or name) of the Azure DevOps project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states it 'Gets 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | The content of the wiki page in markdown format. | |
| etag | No | ETag for editing existing pages (optional, will be fetched if not provided). | |
| path | Yes | The path of the wiki page (e.g., '/Home' or '/Documentation/Setup'). | |
| project | No | The project name or ID where the wiki is located. If not provided, the default project will be used. | |
| wikiIdentifier | Yes | The unique identifier or name of the wiki. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | The path of the wiki page to retrieve content for. | |
| project | Yes | The project name or ID where the wiki is located. | |
| wikiIdentifier | Yes | The unique identifier of the wiki. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | The project name or ID where the wiki is located. If not provided, the default project will be used. | |
| wikiIdentifier | Yes | The unique identifier of the wiki. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states '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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| continuationToken | No | Token for pagination to retrieve the next set of pages. | |
| pageViewsForDays | No | Number of days to retrieve page views for. If not specified, page views are not included. | |
| project | Yes | The project name or ID where the wiki is located. | |
| top | No | The maximum number of pages to return. Defaults to 20. | |
| wikiIdentifier | Yes | The unique identifier of the wiki. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states it '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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | The project name or ID to filter wikis. If not provided, all wikis in the organization will be returned. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 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.
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.
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.
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.
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.
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_artifact_linkA
Add artifact links (repository, branch, commit, builds) to work items. You can either provide the full vstfs URI or the individual components to build it automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| artifactUri | No | The complete VSTFS URI of the artifact to link. If provided, individual component parameters are ignored. | |
| branchName | No | The branch name (e.g., 'main'). Required when linkType is 'Branch'. | |
| buildId | No | The build ID. Required when linkType is 'Build', 'Found in build', or 'Integrated in build'. | |
| comment | No | Comment to include with the artifact link. | |
| commitId | No | The commit SHA hash. Required when linkType is 'Fixed in Commit'. | |
| linkType | No | Type of artifact link, defaults to 'Branch'. This determines both the link type and how to build the VSTFS URI from individual components. | Branch |
| project | Yes | The name or ID of the Azure DevOps project. | |
| projectId | No | The project ID (GUID) containing the artifact. Required for Git artifacts when artifactUri is not provided. | |
| pullRequestId | No | The pull request ID. Required when linkType is 'Pull Request'. | |
| repositoryId | No | The repository ID (GUID) containing the artifact. Required for Git artifacts when artifactUri is not provided. | |
| workItemId | Yes | The ID of the work item to add the artifact link to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It correctly indicates this is a write operation ('Add'), but doesn't specify permission requirements, whether links are reversible, rate limits, or what happens on success/failure. The description adds some context about the two linking methods but lacks comprehensive behavioral details 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with two sentences that each earn their place: the first states the purpose and scope, the second explains the two implementation approaches. It's front-loaded with the core functionality and wastes no words on redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 11 parameters, no annotations, and no output schema, the description provides adequate but incomplete context. It covers the what and how but lacks behavioral details (permissions, side effects, error handling) and output expectations. The high schema coverage helps, but the description should do more given the tool's complexity and mutation nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already documents all 11 parameters thoroughly. The description adds marginal value by mentioning the two linking approaches (full URI vs. components) and listing artifact types, but doesn't provide additional parameter semantics beyond what's already in the schema descriptions. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Add artifact links') and target resource ('to work items'), distinguishing it from sibling tools like wit_add_child_work_items or wit_add_work_item_comment. It specifies the types of artifacts (repository, branch, commit, builds) and provides two distinct methods for linking (full URI or individual components).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about when to use this tool (adding artifact links to work items) and offers guidance on two approaches (full URI vs. component-based). However, it doesn't explicitly state when to choose this tool over alternatives like wit_link_work_item_to_pull_request or wit_work_items_link, nor does it 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.
wit_add_child_work_itemsC
Create one or many child work items from a parent by work item type and parent id.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | ||
| parentId | Yes | The ID of the parent work item to create a child work item under. | |
| project | Yes | The name or ID of the Azure DevOps project. | |
| workItemType | Yes | The type of the child work item to create. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| comment | Yes | The text of the comment to add to the work item. | |
| format | No | html | |
| project | Yes | The name or ID of the Azure DevOps project. | |
| workItemId | Yes | The ID of the work item to add a comment to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | A 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. | |
| project | Yes | The name or ID of the Azure DevOps project. | |
| workItemType | Yes | The type of work item to create, e.g., 'Task', 'Bug', etc. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | Optional depth parameter to specify how deep to expand the query. Defaults to 0. | |
| expand | No | Optional expand parameter to include additional details in the response. Defaults to 'None'. | |
| includeDeleted | No | Whether to include deleted items in the query results. Defaults to false. | |
| project | Yes | The name or ID of the Azure DevOps project. | |
| query | Yes | The ID or path of the query to retrieve. | |
| useIsoDateFormat | No | Whether to use ISO date format in the response. Defaults to false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the basic action 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The ID of the query to retrieve results for. | |
| project | No | The name or ID of the Azure DevOps project. If not provided, the default project will be used. | |
| team | No | The name or ID of the Azure DevOps team. If not provided, the default team will be used. | |
| timePrecision | No | Whether to include time precision in the results. Defaults to false. | |
| top | No | The maximum number of results to return. Defaults to 50. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| asOf | No | Optional date string to retrieve the work item as of a specific time. If not provided, the current state will be returned. | |
| expand | No | Expand options include 'all', 'fields', 'links', 'none', and 'relations'. Relations can be used to get child workitems. Defaults to 'none'. | |
| fields | No | Optional list of fields to include in the response. If not provided, all fields will be returned. | |
| id | Yes | The ID of the work item to retrieve. | |
| project | Yes | The name or ID of the Azure DevOps project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Optional list of fields to include in the response. If not provided, a hardcoded default set of fields will be used. | |
| ids | Yes | The IDs of the work items to retrieve. | |
| project | Yes | The name or ID of the Azure DevOps project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| iterationId | Yes | The ID of the iteration to retrieve work items for. | |
| project | Yes | The name or ID of the Azure DevOps project. | |
| team | No | The name or ID of the Azure DevOps team. If not provided, the default team will be used. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | The name or ID of the Azure DevOps project. | |
| workItemType | Yes | The name of the work item type to retrieve. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states '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.
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.
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.
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.
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.
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_link_work_item_to_pull_requestB
Link a single work item to an existing pull request.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The project ID of the Azure DevOps project (note: project name is not valid). | |
| pullRequestId | Yes | The ID of the pull request to link to. | |
| pullRequestProjectId | No | The project ID containing the pull request. If not provided, defaults to the work item's project ID (for same-project linking). | |
| repositoryId | Yes | The ID of the repository containing the pull request. Do not use the repository name here, use the ID instead. | |
| workItemId | Yes | The ID of the work item to link to the pull request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the tool creates a link (a write operation) but doesn't disclose behavioral traits like required permissions, whether the link is reversible, error conditions, or rate limits. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose with zero waste. Every word earns its place, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't cover behavioral aspects like permissions, side effects, or response format, leaving critical gaps for an AI agent to understand how to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 5 parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema, such as explaining relationships between parameters or usage nuances. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Link'), the resource ('a single work item'), and the target ('to an existing pull request'). It distinguishes from sibling tools like 'wit_work_items_link' (which might link multiple items) and 'wit_work_item_unlink' (which does the opposite).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'wit_add_artifact_link' or 'wit_work_items_link', nor does it mention prerequisites or exclusions. It simply states what the tool does 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.
wit_list_backlogsC
Revieve a list of backlogs for a given project and team.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | The name or ID of the Azure DevOps project. | |
| team | Yes | The name or ID of the Azure DevOps team. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| backlogId | Yes | The ID of the backlog category to retrieve work items from. | |
| project | Yes | The name or ID of the Azure DevOps project. | |
| team | Yes | The name or ID of the Azure DevOps team. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | The name or ID of the Azure DevOps project. | |
| top | No | Optional number of comments to retrieve. Defaults to all comments. | |
| workItemId | Yes | The ID of the work item to retrieve comments for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states '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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| includeCompleted | No | Whether to include completed work items. Defaults to false. | |
| project | Yes | The name or ID of the Azure DevOps project. | |
| top | No | The maximum number of work items to return. Defaults to 50. | |
| type | No | The type of work items to retrieve. Defaults to 'assignedtome'. | assignedtome |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states it '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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The ID of the work item to update. | |
| updates | Yes | An array of field updates to apply to the work item. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states it'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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| updates | Yes | An 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
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.
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.
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.
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.
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.
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.
wit_work_items_linkC
Link work items together in batch.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | The name or ID of the Azure DevOps project. | |
| updates | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'link work items together in batch' implies a write operation, it doesn't disclose important behavioral traits like whether this requires specific permissions, whether links are reversible, what happens on partial failures in batch operations, rate limits, or what the response format looks like. The description is insufficient 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at just 6 words, with zero wasted language. It's front-loaded with the core action and immediately specifies the batch scope. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a batch mutation tool with no annotations, no output schema, and incomplete parameter documentation, the description is inadequate. It should explain more about the batch operation behavior, error handling, permissions required, and what constitutes a successful response. The current description leaves too many operational questions unanswered for a tool that modifies data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, with the 'project' parameter well-described but the 'updates' array having only partial documentation. The description adds no parameter semantics beyond what's in the schema - it doesn't explain the structure of batch updates, provide examples of valid link types, or clarify how multiple updates are processed. The baseline 3 reflects that the schema does some work but the description doesn't compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('link work items together') and scope ('in batch'), which provides a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'wit_link_work_item_to_pull_request' or 'wit_work_item_unlink', which would require mentioning the batch nature or specific linking context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites like required permissions, when batch linking is appropriate versus single operations, or how it differs from related sibling tools such as 'wit_link_work_item_to_pull_request' or 'wit_work_item_unlink'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wit_work_item_unlinkB
Remove one or many links from a single work item
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The ID of the work item to remove the links from. | |
| project | Yes | The name or ID of the Azure DevOps project. | |
| type | No | Type of link to remove. Options include 'parent', 'child', 'duplicate', 'duplicate of', 'related', 'successor', 'predecessor', 'tested by', 'tests', 'affects', 'affected by', and 'artifact'. Defaults to 'related'. | related |
| url | No | Optional URL to match for the link to remove. If not provided, all links of the specified type will be removed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'Remove' implies a destructive mutation, it doesn't specify permission requirements, whether the operation is reversible, rate limits, or what happens when removing all links of a type. The description lacks critical behavioral context 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.
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 action and resource, making it immediately understandable. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with no annotations and no output schema, the description is incomplete. It doesn't address behavioral aspects like permissions, reversibility, or response format. The 100% schema coverage helps with parameters, but overall context for safe and effective use is lacking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing complete parameter documentation. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain link removal logic or URL matching behavior). Baseline 3 is appropriate when schema does all parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Remove') and resource ('links from a single work item'), with the phrase 'one or many' indicating scope. It distinguishes from sibling tools like wit_work_items_link (which adds links) and wit_update_work_item (which updates work item fields rather than specifically removing links).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing existing links), exclusions, or compare it to similar tools like wit_update_work_item for link management. Usage context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
work_assign_iterationsC
Assign existing iterations to a specific team in a project.
| Name | Required | Description | Default |
|---|---|---|---|
| iterations | Yes | An array of iterations to assign. Each iteration must have an identifier and a path. | |
| project | Yes | The name or ID of the Azure DevOps project. | |
| team | Yes | The name or ID of the Azure DevOps team. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states '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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| iterations | Yes | An array of iterations to create. Each iteration must have a name and can optionally have start and finish dates in ISO format. | |
| project | Yes | The name or ID of the Azure DevOps project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | The name or ID of the Azure DevOps project. | |
| team | Yes | The name or ID of the Azure DevOps team. | |
| timeframe | No | The timeframe for which to retrieve iterations. Currently, only 'current' is supported. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 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.
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.
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.
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.
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.
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.
70 tool updates
v1.0.0- First observed
advsec_get_alert_details - First observed
advsec_get_alerts - First observed
build_get_builds - First observed
build_get_changes - First observed
build_get_definition_revisions - First observed
build_get_definitions - First observed
build_get_log - First observed
build_get_log_by_id - First observed
build_get_status - First observed
build_run_build - First observed
build_update_build_stage - First observed
core_get_identity_ids - First observed
core_list_project_teams - First observed
core_list_projects - First observed
release_get_definitions - First observed
release_get_releases - First observed
repo_create_pull_request - First observed
repo_create_pull_request_thread - First observed
repo_get_branch_by_name - First observed
repo_get_pull_request_by_id - First observed
repo_get_repo_by_name_or_id - First observed
repo_list_branches_by_repo - First observed
repo_list_my_branches_by_repo - First observed
repo_list_pull_request_thread_comments - First observed
repo_list_pull_request_threads - First observed
repo_list_pull_requests_by_commits - First observed
repo_list_pull_requests_by_project - First observed
repo_list_pull_requests_by_repo - First observed
repo_list_repos_by_project - First observed
repo_reply_to_comment - First observed
repo_resolve_comment - First observed
repo_search_commits - First observed
repo_update_pull_request - First observed
repo_update_pull_request_reviewers - First observed
search_code - First observed
search_wiki - First observed
search_workitem - First observed
testplan_add_test_cases_to_suite - First observed
testplan_create_test_case - First observed
testplan_create_test_plan - First observed
testplan_list_test_cases - First observed
testplan_list_test_plans - First observed
testplan_show_test_results_from_build_id - First observed
wiki_create_or_update_page - First observed
wiki_get_page_content - First observed
wiki_get_wiki - First observed
wiki_list_pages - First observed
wiki_list_wikis - First observed
wit_add_artifact_link - First observed
wit_add_child_work_items - First observed
wit_add_work_item_comment - First observed
wit_create_work_item - First observed
wit_get_query - First observed
wit_get_query_results_by_id - First observed
wit_get_work_item - First observed
wit_get_work_item_type - First observed
wit_get_work_items_batch_by_ids - First observed
wit_get_work_items_for_iteration - First observed
wit_link_work_item_to_pull_request - First observed
wit_list_backlog_work_items - First observed
wit_list_backlogs - First observed
wit_list_work_item_comments - First observed
wit_my_work_items - First observed
wit_update_work_item - First observed
wit_update_work_items_batch - First observed
wit_work_item_unlink - First observed
wit_work_items_link - First observed
work_assign_iterations - First observed
work_create_iterations - First observed
work_list_team_iterations
TDQS
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.
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.
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.
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
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
Manage repositories, users, releases, and automate GitHub workflows
327 dev tools via REST API and MCP. Generate Dockerfiles, schemas, K8s, APIs, and more.
Access the GitHub API, enabling file operations, repository management, search functionality, andโฆ
- mcpOAuthcom.vibgrate
Query your team's drift, vulnerability, and upgrade data from any AI assistant. OAuth 2.1, 51 tools.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Azure DevOps through Personal Access Token authentication. Supports work item management, wiki operations, project/repository listing, and build pipeline access through natural language.1,028MIT
- FlicenseNot gradedqualityFmaintenanceEnables interaction with Azure DevOps through Cursor chat, providing tools to manage builds, pipelines, work items, sprints, and board operations. Supports secure authentication via Personal Access Tokens and allows natural language-driven DevOps task management.1-

Azure DevOps MCP Serverofficial
AlicenseNot gradedqualityAmaintenanceProvides Azure DevOps tooling for AI agents, enabling interaction with projects, work items, repositories, and pipelines through natural language.82,4471,997MIT- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to interact with Azure DevOps through an MCP server with 34 tools for PRs, work items, repos, and branches, optimized for token efficiency and agent-first workflows.4MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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