bitbucket-server-mcp
This MCP server integrates with Bitbucket Server/Data Center, enabling AI assistants to manage repositories, pull requests, code reviews, branches, commits, and more.
Repository Management: List projects and repositories, browse file structures, read file contents, edit files, create/delete repositories, upload attachments, get file blame, list/create forks, and get server info.
Pull Requests: Create (including cross-repo/fork PRs and drafts), get details, update, merge (multiple strategies), decline, list, and get activity, diffs, commits, and commits-to-PR mapping. Also list dashboard PRs across all repos.
Code Review: Manage PR comments (create, edit, delete, react; supports inline anchoring, draft state, tasks, threaded replies, resolve/unresolve) and reviews (approve, unapprove, publish).
Branches & Commits: List branches, create/delete branches (with default branch safety check), list commits, get commit details, compare refs, and list/create/delete/get tags.
Search & Insights: Search code and files across repos, get Code Insights reports and annotations (e.g., SonarQube), and get CI build statuses.
Users: Get user profiles and search users.
Labels: List, add, and remove repository labels.
Webhooks: List, create, update, and delete repository webhooks.
Commit Comments: List, create, edit, and delete comments on specific commits.
Repository Settings: Manage default reviewer conditions, branch restrictions, repository hooks (list/enable/disable/configure), merge checks, reviewer groups, and secret scanning allowlist rules.
SSH & GPG Keys: List, add, and delete SSH and GPG keys for the authenticated user.
Deployments: Get, create, and delete deployment records for commits.
Prompts & Resources: Built-in
review-prprompt for guided PR reviews;bitbucket://projectsresource providing a cached list of accessible projects as ambient context.
Provides tools for interacting with Bitbucket Server (or Data Center) including repository management, pull request operations, code review, and branch/commit management.
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., "@bitbucket-server-mcplist my open pull requests"
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.
Quickstart
Or via Claude Code:
claude mcp add bitbucket \
-e BITBUCKET_URL=https://your-bitbucket-server.com \
-e BITBUCKET_TOKEN=your-token \
-- npx -y @upendra_sengar/bitbucket-server-mcpRelated MCP server: Atlassian Bitbucket MCP Server
Requirements
Bitbucket Server / Data Center 7.21+ (the E2E suite covers 7.21, 8.5, 8.9, 8.19, 9.4 and 10.2).
One of:
Installation
Add to your workspace .vscode/mcp.json:
{
"servers": {
"bitbucket": {
"command": "npx",
"args": ["-y", "@upendra_sengar/bitbucket-server-mcp"],
"env": {
"BITBUCKET_URL": "https://your-bitbucket-server.com",
"BITBUCKET_TOKEN": "your-access-token"
}
}
}
}These clients all use the same mcpServers format. Add the JSON below to the config file for your client:
Client | Config file |
Claude Desktop |
|
Cursor |
|
Windsurf |
|
JetBrains | Settings > Tools > AI Assistant > MCP, or |
Neovim | mcphub.nvim |
{
"mcpServers": {
"bitbucket": {
"command": "npx",
"args": ["-y", "@upendra_sengar/bitbucket-server-mcp"],
"env": {
"BITBUCKET_URL": "https://your-bitbucket-server.com",
"BITBUCKET_TOKEN": "your-access-token"
}
}
}
}Add to your Zed settings (~/.config/zed/settings.json on Linux, ~/Library/Application Support/Zed/settings.json on macOS):
{
"context_servers": {
"bitbucket": {
"source": "custom",
"command": "npx",
"args": ["-y", "@upendra_sengar/bitbucket-server-mcp"],
"env": {
"BITBUCKET_URL": "https://your-bitbucket-server.com",
"BITBUCKET_TOKEN": "your-access-token"
}
}
}
}For environments without Node.js:
{
"mcpServers": {
"bitbucket": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "BITBUCKET_URL=https://your-bitbucket-server.com",
"-e", "BITBUCKET_TOKEN=your-access-token",
"ghcr.io/upendrasengar/bitbucket-server-mcp"
]
}
}
}Or build locally: docker build -t bitbucket-mcp .
Bun users can replace npx -y with bunx in any of the configs above.
Tools
Repositories
Tool | Description |
| List all accessible Bitbucket projects |
| List repositories in a project |
| Browse files and directories |
| Read file contents with pagination |
| Upload a local file and get a markdown reference for PR comments |
| Edit a file by committing a new version via the REST API |
| Get Bitbucket Server version and properties |
| Get line-by-line blame/history for a file |
| Create a new repository |
| Delete a repository (irreversible) |
Pull Requests
Tool | Description |
| Create a PR, including cross-repo from forks ( |
| Get PR details |
| Safely update title, description, or reviewers (read-modify-write, preserves fields not explicitly changed) |
| Merge a PR with optional strategy ( |
| Decline a PR |
| List PRs with filtering by state, author, direction |
| List PRs across all repos for the authenticated user, filtered by role ( |
| Get PR activity timeline, filtered by type ( |
| Get PR diff with per-file truncation support. Use |
| List commits in a pull request |
| List pull requests containing a specific commit |
Code Review
Tool | Description |
| Unified create/edit/delete for PR comments. Supports inline anchoring ( |
| Unified approve/unapprove/publish. Publish transitions all |
Branches & Commits
Tool | Description |
| List branches with default branch detection |
| Browse commit history with branch and author filtering |
| Create or delete branches (safety check prevents deleting default branch) |
| Get details of a specific commit by its ID |
| List commits reachable from one ref but not another |
| List tags in a repository |
| Create or delete tags |
| Get details of a specific tag by its name |
Search & Insights
Tool | Description |
| Search code and files across repositories |
| Fetch Code Insights reports (SonarQube, security scans) and annotations |
| Get CI build status (state, name, URL) by commit ID or PR. When using prId, resolves the latest commit automatically. |
Forks
Tool | Description |
| List forks of a repository |
| Fork a repository into a target project |
Users
Tool | Description |
| Get a user profile by slug |
| Search users by filter query |
Labels
Tool | Description |
| List labels for a repository |
| Add or remove repository labels |
Webhooks
Tool | Description |
| List webhooks for a repository |
| Create, update, or delete webhooks |
Commit Comments
Tool | Description |
| List comments on a specific commit |
| Create, edit, or delete comments on a commit |
Repository Settings
Tool | Description |
| List default reviewer conditions |
| List branch permission restrictions |
| List repository hooks and their status |
| Enable, disable, or configure repository hooks |
| List merge check configurations |
| Configure merge check settings |
| List reviewer groups |
| Create or delete reviewer groups |
| List secret scanning allowlist rules (8.5+) |
Keys
Tool | Description |
| List SSH keys for the authenticated user |
| Add or delete SSH keys |
| List GPG keys for the authenticated user |
| Add or delete GPG keys |
Prompts
Prompt | Description |
| Step-by-step workflow for reviewing a PR: fetch details, read diff, check CI, create draft comments, and publish the review. Invoke via |
Resources
Resource | URI | Description |
|
| Cached list of all accessible projects (5 min TTL). Useful as ambient context without explicit tool calls. |
Configuration
Environment Variables
Variable | Required | Description |
| Yes | Base URL of your Bitbucket Server instance |
| Yes* | Personal access token |
| Yes* | Username for basic auth |
| Yes* | Password for basic auth |
| No | Default project key when not specified in tool calls |
| No | Set to |
| No | Extra headers for all requests ( |
| No | Max lines per file in diffs. Set to |
| No | Cache duration in seconds (default: 300). Set to |
| No | Comma-separated list of tool names to enable. If not set, all tools are available. |
| No | Set to |
| No | HTTP/HTTPS proxy URL (e.g. |
| No | Path to a PEM file with additional CA certificates. Use when Bitbucket is behind a self-signed TLS cert. |
*Either BITBUCKET_TOKEN or both BITBUCKET_USERNAME and BITBUCKET_PASSWORD are required.
Token Permissions
The Personal Access Token needs the following Bitbucket permissions depending on what you intend to do:
Permission | Required for |
Project read |
|
Repository read | All read tools (branches, commits, tags, diff, blame) |
Repository write |
|
Pull request read |
|
Pull request write |
|
For a read-only setup, Project read + Repository read + Pull request read is sufficient.
Read-Only Mode
Set BITBUCKET_READ_ONLY=true to restrict the server to read-only operations. All create_*, update_*, delete_*, manage_*, merge_*, decline_*, fork_*, upload_*, and edit_* tools are disabled.
Tool Filtering
Set BITBUCKET_ENABLED_TOOLS to load only specific tools, reducing context window usage:
BITBUCKET_ENABLED_TOOLS=get_pull_request,get_diff,manage_comment,manage_reviewStartup Healthcheck
When BITBUCKET_STARTUP_HEALTHCHECK=true, the server probes
/rest/api/1.0/application-properties on startup and logs whether Bitbucket is
reachable. If not, it logs a diagnostic line referencing the relevant env vars
(BITBUCKET_URL, BITBUCKET_TOKEN, HTTPS_PROXY, NODE_EXTRA_CA_CERTS)
without blocking the server. Useful for debugging connectivity issues before
the first tool call fails with a generic error.
BITBUCKET_STARTUP_HEALTHCHECK=trueResponse Curation
Read tools return compact responses by default, keeping only the fields an AI assistant typically needs. Every read tool accepts a fields parameter to customize:
Omit
fields: returns a curated summary (e.g. PR id, title, state, author, branches, reviewers, task count)fields: "*all": returns the complete raw Bitbucket API responsefields: "id,title,author.user.name": returns exactly those fields (dot notation for nested paths)
Caching
The server caches frequently accessed data in memory (project lists, repository metadata, default reviewers) to reduce API calls. The cache uses LRU eviction (max 500 entries) so memory stays bounded, and write operations automatically invalidate related entries.
By default, cached entries expire after 5 minutes. Configure with BITBUCKET_CACHE_TTL (in seconds), or set to 0 to disable caching entirely.
Bitbucket Cloud
This server targets Bitbucket Server / Data Center only. Bitbucket Cloud (bitbucket.org) uses a different REST API and is not supported.
Usage Examples
List open PRs assigned to you for review
list_dashboard_pull_requests with role=REVIEWER, state=OPENCreate an inline draft comment on a PR
manage_comment with prId=42, filePath="src/auth.ts", line=17, lineType="ADDED",
text="This token is never invalidated — add expiry.", state="PENDING"Then publish all draft comments at once:
manage_review with prId=42, action="publish", participantStatus="NEEDS_WORK"Get a lightweight diff summary without reading every line
get_diff with prId=42, stat=trueEnable only the tools you need (reduces context window usage)
BITBUCKET_ENABLED_TOOLS=get_pull_request,get_diff,manage_comment,manage_reviewTroubleshooting
UNABLE_TO_VERIFY_LEAF_SIGNATURE or self-signed certificate errors
Set NODE_EXTRA_CA_CERTS=/path/to/your-ca-bundle.pem to point Node.js at your internal CA.
403 Forbidden on write operations
Your token is missing a write-level permission. See the Token Permissions table above for the exact scope needed.
Server starts but can't reach Bitbucket
Enable BITBUCKET_STARTUP_HEALTHCHECK=true — it will log a diagnostic line showing which env vars are missing or misconfigured. In corporate environments also set HTTPS_PROXY.
401 Unauthorized
Token auth and basic auth are mutually exclusive. Set either BITBUCKET_TOKEN alone, or both BITBUCKET_USERNAME + BITBUCKET_PASSWORD. Having all three set will cause unpredictable behaviour — remove whichever pair you don't intend to use.
Tool not found / unexpected behaviour on older Bitbucket versions
Some tools require Bitbucket 8.5+ (e.g. list_secret_scanning_rules). Check the tool description in the Tools section for version requirements. The E2E suite covers 7.21, 8.5, 8.9, 8.19, 9.4, and 10.2.
Contributing
See CONTRIBUTING.md for development setup, architecture overview, and how to add new tools.
License
Apache 2.0
Available Tools
59 toolsbrowse_repositoryCRead-onlyIdempotent
Browse files and directories in a repository to understand project structure.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Directory path to browse (default: root). | |
| limit | No | Max items to return (default: 50). | |
| branch | No | Branch or commit hash (default: default branch). | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is clear. However, the description does not disclose additional behaviors like pagination (implied by the limit parameter), error handling, or the structure of the returned directory listing. This leaves the agent uncertain about the 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 sentence, which is concise but lacks structure. It does not front-load key information like output format or behavior, and it could be more informative without being verbose.
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 5 parameters and no output schema, the description should explain what the tool returns (e.g., a list of files/directories with names and types). The current description only vaguely mentions 'understand project structure,' which is insufficient for an agent to use the tool effectively without additional inference.
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 coverage is 100% with all parameters documented in the input schema. The description adds no extra meaning beyond what the schema provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Browse files and directories in a repository to understand project structure,' which clearly identifies the tool's action and resource. However, it does not explicitly distinguish from sibling tools like get_file_content or list_repositories, which also deal with repository contents.
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 get_file_content for reading file contents or list_repositories for listing repos. There is no mention of context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_refsARead-onlyIdempotent
Compare two refs and list commits accessible from to but not from from. Supports custom field selection via the fields param ('*all' for full raw response, 'id,message,author.name' for a custom subset).
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Target ref (commits reachable from here are included). | |
| from | No | Source ref (commits reachable from here are excluded). | |
| limit | No | Number of commits to return (default: 25, max: 1000). | |
| start | No | Start index for pagination (default: 0). | |
| fields | No | Comma-separated fields to return (dot notation for nested paths). Omit for a curated default; use '*all' for the full raw API response. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate safe read-only and idempotent behavior. The description adds the core logic of commit comparison and details field selection, which provides behavioral context beyond the annotations.
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 two sentences, front-loaded with the primary purpose, and provides param details without extraneous information. Every 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?
While the description covers the main purpose and field selection, it lacks explanation of pagination parameters (limit, start), default project behavior, and repository requirement. The schema documents these, but the description could be more complete for a tool with 7 parameters and no 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?
With 100% schema coverage, baseline is 3. The description adds meaningful value by explaining the `to`/`from` ref semantics and providing concrete `fields` examples ('*all', custom subset), which clarifies usage beyond the schema.
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 compares two refs and lists commits accessible from `to` but not from `from`, with a specific verb and resource. This uniquely identifies its function among siblings like list_commits or get_commit.
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 explains what the tool does but does not provide explicit guidance on when to use it over alternatives (e.g., list_commits). The use case is inferable but not stated, leaving ambiguity in tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pull_requestA
Create a new pull request. Supports cross-repo PRs via sourceProject/sourceRepository and automatic default reviewer merging.
| Name | Required | Description | Default |
|---|---|---|---|
| draft | No | Create the pull request as a draft. | |
| title | Yes | Pull request title. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| reviewers | No | Usernames to assign as reviewers. | |
| repository | Yes | Repository slug. | |
| description | No | Pull request description (Markdown supported). | |
| sourceBranch | Yes | Source branch name. | |
| targetBranch | Yes | Target branch name. | |
| sourceProject | No | Source project key for cross-repo PRs. | |
| sourceRepository | No | Source repository slug for cross-repo PRs. | |
| includeDefaultReviewers | No | Merge default reviewers into the reviewer list (default: true). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate write operation (readOnlyHint=false, destructiveHint=false). Description adds specific behavioral details: supports cross-repo PRs via sourceProject/sourceRepository and automatic default reviewer merging, which are beyond annotation scope. No contradictions.
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?
Two sentences, 20 words. Core purpose first, then feature highlights. No redundancy, every word earns its place. Front-loaded with critical verb 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 11 parameters, 100% schema coverage, no output schema, description captures core action and key features. Lacks mention of return value or side effects, but annotations and intent are clear. Reasonably complete for agent decision-making.
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 coverage is 100%, so baseline 3. Description adds meaning by explaining the purpose of sourceProject/sourceRepository (cross-repo PRs) and includeDefaultReviewers (automatic merging), directly connecting to those parameters and providing context not in schema 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?
Description starts with 'Create a new pull request' – a specific verb and resource. It immediately distinguishes from siblings like update_pull_request and merge_pull_request by focusing on creation and mentioning unique features (cross-repo, default reviewers).
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?
Clearly implies creation use case, but lacks explicit guidance on when to avoid (e.g., 'use for new PRs, not for editing or merging'). No mention of prerequisites beyond required params. Usage is implied but not fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_repositoryB
Create a new repository in a project.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Repository name. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| description | No | Repository description. | |
| defaultBranch | No | Default branch name (defaults to 'main' if not set). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-readonly, non-idempotent, non-destructive behavior; description adds no further behavioral context such as side effects or permissions.
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 is concise and front-loaded, but could include more relevant details without being verbose.
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 creation tool with no output schema, description is minimally adequate; lacks handling for edge cases like duplicate names.
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 covers all parameters with descriptions (100% coverage), so description adds no extra meaning beyond summarizing the action.
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?
Description clearly states 'Create a new repository in a project' using a specific verb and resource, distinguishing from siblings like delete_repository.
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 vs alternatives like fork_repository; no prerequisites or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decline_pull_requestADestructive
Decline a pull request. Fetches the current version automatically for optimistic locking.
| Name | Required | Description | Default |
|---|---|---|---|
| prId | Yes | Pull request ID. | |
| message | No | Reason for declining. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, so the tool's mutation nature is known. The description adds valuable behavioral context: it uses optimistic locking by fetching the current version automatically. This transparency about the locking mechanism is beyond what annotations provide.
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 two concise sentences with no redundant information. The purpose is stated first, followed by the key behavioral detail. Every word earns its place; ideal length for 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?
For a destructive mutation tool with 4 parameters and no output schema, the description covers purpose and one behavioral trait (optimistic locking). It lacks information on return values, error states, or prerequisites, leaving some gaps for an agent to infer.
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% parameter description coverage (4 params, all described). The description does not add any additional information about parameters beyond the schema, so it meets the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action with a specific verb ('Decline') and resource ('a pull request'). It also adds the unique detail about automatic version fetching for optimistic locking, which distinguishes it from siblings like merge_pull_request or update_pull_request.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for declining pull requests but provides no explicit guidance on when to use this tool versus alternatives (e.g., merge_pull_request, update_pull_request). No context on prerequisites or exclusions is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_repositoryADestructive
Delete a repository. This action is irreversible.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the irreversible nature, which complements the destructiveHint annotation. However, it lacks details on side effects, permissions, or cascading impacts.
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?
Extremely concise with two short sentences that front-load the main action and key behavioral trait (irreversible). No wasted words.
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 delete operation with destructiveHint annotation, the description is mostly complete. It could mention required permissions or effects on forks, but the core information is present.
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?
Input schema covers 100% of parameters with descriptions. The tool description does not add further explanation for parameters, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool deletes a repository, which is a specific verb and resource. It is distinct from sibling tools like create_repository or fork_repository.
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 over alternatives or when not to use it. It does not mention prerequisites or context for safe usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_fileA
Edit a file in a repository by committing a new version via the Bitbucket REST API. Returns the commit metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| branch | Yes | Target branch name. | |
| content | Yes | Full new file content as a string. | |
| message | Yes | Commit message. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| filePath | Yes | Path to the file in the repository. | |
| repository | Yes | Repository slug. | |
| sourceBranch | No | Fork point branch when creating a new branch. | |
| sourceCommitId | No | Current commit ID for optimistic locking. If provided and the branch has advanced, the request will fail with a 409 conflict. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states it commits a new version and returns commit metadata, which adds context beyond annotations (readOnlyHint=false, destructiveHint=false). However, it does not disclose that the file content is fully overwritten (replacing existing content) nor explain the optimistic locking behavior hinted by sourceCommitId in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-formed sentence that efficiently conveys the action and return value. No extraneous words or 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 the moderate complexity (8 parameters, 5 required, no output schema), the description covers the core operation but omits context like default project behavior, sourceBranch usage, and conflict handling. It is functional but not fully comprehensive.
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 coverage is 100% so parameters are adequately described. The tool description adds no extra semantic meaning beyond the schema; it merely says 'Edit a file' which is already implied by the action.
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 explicitly states the action ('Edit a file'), the resource ('in a repository'), and the mechanism ('by committing a new version via the Bitbucket REST API'), making the purpose clear. The verb 'edit' is unique among sibling tools (no other 'edit' tool), distinguishing it from browsing, getting content, etc.
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 creating a file or managing branches. There is no mention of prerequisites (e.g., branch must exist) or when not to use it (e.g., for renaming or moving files).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fork_repositoryA
Fork a repository into a target project. Creates a copy of the source repository in the specified target project.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name for the forked repository. Defaults to the source repository name. | |
| project | No | Source project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| repository | Yes | Source repository slug. | |
| target_project | No | Target project key where the fork will be created. Defaults to the user's personal project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it is a mutation (readOnlyHint=false) and not destructive. The description adds that it creates a copy, but does not explain potential side effects like linked history or permissions required. With annotations covering the basic safety profile, the description provides minimal additional behavior 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?
Two concise sentences, front-loaded with the core action, no wasted words.
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 (4 parameters, no output schema, no nested objects), the description adequately covers the purpose and action. It could be improved by mentioning return value or behavior (e.g., the fork is independent), but it is largely complete.
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% (all 4 parameters have descriptions), so the description adds no extra meaning beyond what the schema already provides. Baseline 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 (Fork) and resource (repository), and distinguishes it from siblings like create_repository (which creates a new empty repo) and delete_repository (destructive).
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 vs alternatives, such as when to fork vs create a new repository. No exclusions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_build_statusARead-onlyIdempotent
Get CI build status for a commit or pull request. When prId is provided, automatically resolves the latest commit. Returns build state (SUCCESSFUL, FAILED, INPROGRESS), name, and URL to the CI build.
| Name | Required | Description | Default |
|---|---|---|---|
| prId | No | Pull request ID. If provided, resolves the latest commit automatically. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. Only needed with prId. | |
| commitId | No | Full commit hash. Use this or prId, not both. | |
| repository | No | Repository slug. Only needed with prId. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds value beyond annotations by specifying return fields (build state, name, URL) and auto-resolution behavior for prId. Annotations already indicate read-only and idempotent nature.
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?
Two sentences, no unnecessary words. Purpose is front-loaded, and structure is clear and efficient.
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?
Description covers return values and parameter usage for both modes. No output schema exists, but return info is provided. Consideration of error cases or rate limits is absent but not critical for 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 has 100% coverage, so baseline is 3. Description adds context that prId auto-resolves latest commit and that project/repository are only needed with prId, which slightly enhances 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?
Description clearly states it gets CI build status for a commit or pull request, specifying the resource and action. It distinguishes from siblings by focusing on build status for commits/PRs, and adds nuance about automatic commit resolution.
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?
Description explains when to use prId vs commitId, and that project/repository are only needed with prId. However, it does not explicitly guide when to choose this tool over alternatives like get_code_insights or get_commit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_code_insightsARead-onlyIdempotent
Get code insight reports and their annotations for a pull request. Shows build results, code quality, and other analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| prId | Yes | Pull request ID. | |
| fields | No | Comma-separated fields to return (dot notation for nested paths). Omit for a curated default; use '*all' for the full raw API response. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| fileLimit | No | Number of files to fetch annotations for per page. Only used when includeFileAnnotations is true (default: 50, max: 100). | |
| fileStart | No | Page start index for file annotations. Only used when includeFileAnnotations is true (default: 0). | |
| repository | Yes | Repository slug. | |
| includeFileAnnotations | No | Include per-file annotations keyed by file path (default: false). Fetches changed files and retrieves annotations for each. Paginate with fileStart/fileLimit. Adds `fileAnnotations` to the response. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds context about what the tool shows (build results, code quality) but does not add new behavioral traits beyond the annotations.
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 two concise sentences, front-loaded with the key action, and contains no unnecessary verbiage.
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 7 parameters including pagination options (fileLimit, fileStart, includeFileAnnotations) and no output schema, the description is brief and does not explain how to use these features or what the response structure is. It covers the basics but lacks depth for a complex 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% with detailed parameter descriptions. The tool description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('code insight reports and their annotations for a pull request'), clearly differentiating it from siblings like get_pull_request or get_build_status.
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 implies using it for code insight reports but does not provide explicit guidance on when to use vs alternatives or exclude cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_commitARead-onlyIdempotent
Get details of a specific commit by its ID. Supports custom field selection via the fields param ('*all' for full raw response, 'id,message,author.name' for a custom subset).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Comma-separated fields to return (dot notation for nested paths). Omit for a curated default; use '*all' for the full raw API response. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| commitId | Yes | Full commit hash. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint. Description adds custom field selection behavior with examples. No mention of error responses or rate limits, but sufficient for a read-only 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?
Two sentences, front-loaded with purpose, no unnecessary words. Every sentence adds value.
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 retrieval tool with 4 parameters and no output schema, the description covers the key functionality. Could mention return format or error cases, but not essential given annotations.
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 has 100% coverage, but description enhances understanding of the fields parameter with concrete examples ('*all', 'id,message,author.name'), adding value beyond schema 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?
Clearly states 'Get details of a specific commit by its ID', which is a specific verb+resource scope. Distinct from sibling tools like list_commits and get_commit_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?
Does not explicitly state when to use this tool versus alternatives like list_commits. The verb 'get' implies single resource retrieval, but no guidance on when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_commit_pull_requestsARead-onlyIdempotent
List pull requests that contain a specific commit. Returns the PRs that include the given commit.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 25, max: 100). | |
| start | No | Start index for pagination (default: 0). | |
| fields | No | Comma-separated fields to return (dot notation for nested paths). Omit for a curated default; use '*all' for the full raw API response. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| commitId | Yes | Full commit hash. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, indicating a safe read operation. The description adds no further behavioral details beyond the core function, so it meets the baseline with the annotations carrying the transparency burden.
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 two sentences (16 words), front-loaded, and contains no extraneous 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?
The description is adequate for a simple list tool with comprehensive schema and annotations. It could mention pagination behavior (limit/start), but the schema covers those details, so completeness is good.
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 6 parameters described. The tool description adds no additional meaning beyond restating the purpose, so it achieves the baseline 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 'list' and the resource 'pull requests that contain a specific commit'. It distinguishes from sibling tools like list_pull_requests and get_pull_request by specifying that it returns PRs including a given commit.
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 implies usage context (finding PRs containing a commit), but does not explicitly state when not to use it or compare with alternatives. It is clear enough for a focused tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_diffARead-onlyIdempotent
Get the diff of a pull request. Use stat=true for a lightweight summary of changed files (and line counts if the server supports it) instead of the full diff.
| Name | Required | Description | Default |
|---|---|---|---|
| prId | Yes | Pull request ID. | |
| stat | No | If true, return only the list of changed files and types (ADD, MODIFY, DELETE, RENAME, COPY) instead of the full diff. Line count summary included when available (Bitbucket DC 9.1+). | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| filePath | No | Path to a specific file to get the diff for. Use with stat=true first to discover file paths, then request individual diffs. | |
| repository | Yes | Repository slug. | |
| contextLines | No | Number of context lines around changes (default: 10). Ignored when stat=true. | |
| maxLinesPerFile | No | Max lines per file. 0 = no limit. Defaults to BITBUCKET_DIFF_MAX_LINES_PER_FILE. Ignored when stat=true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds context about the stat parameter producing a summary and server-dependent line counts. No contradictions.
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 two sentences long, front-loads the main purpose, and contains no superfluous text. Every word adds value.
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 output schema and 7 parameters, the description captures the essential behavior (full diff vs. stat summary). It could mention that the output is a diff, but that is implied by the name and parameter descriptions. Annotations cover safety aspects.
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 provides complete descriptions for all 7 parameters (100% coverage). The description does not add significant new meaning beyond what the schema already offers, so baseline 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 'Get the diff of a pull request' with a specific verb and resource. It also distinguishes the stat option for a summary, and no sibling tool overlaps with this exact 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?
The description provides explicit guidance on when to use `stat=true` for a lightweight summary versus the full diff. However, it does not mention alternative tools or conditions where this tool should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_blameARead-onlyIdempotent
Get blame/history information for a file. Returns line-by-line commit authorship data.
| Name | Required | Description | Default |
|---|---|---|---|
| branch | No | Branch or commit hash (default: default branch). | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| filePath | Yes | Path to the file in the repository. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint. The description adds 'line-by-line commit authorship data' which provides specific output behavior beyond annotations. No mention of permissions or limits, but given strong annotations, it's acceptable.
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?
Two sentences: first states purpose, second describes output. No wasted words, highly concise and front-loaded.
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 output schema, and annotations covering safety, the description adequately explains what the tool does and returns. Could mention output format but not essential.
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 already documented. The description does not add extra meaning to parameters (e.g., branch) beyond what the schema provides. Baseline 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 'Get', the resource 'blame/history information for a file', and the output 'line-by-line commit authorship data'. It distinguishes from sibling tools like 'get_file_content' or 'get_commit'.
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 like 'get_commit' or 'get_diff'. Usage is implied but not elaborated with exclusions or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_contentARead-onlyIdempotent
Read file contents from a repository with pagination support for large files.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max lines per request (default: 100, max: 1000). | |
| start | No | Starting line number (default: 0). | |
| branch | No | Branch or commit hash (default: default branch). | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| filePath | Yes | Path to the file in the repository. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent read behavior. The description adds value by disclosing pagination support, which is a key behavioral trait. However, it does not discuss error handling or rate limits, which would push it to 5.
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, front-loaded sentence that uses only 12 words. Every word adds value, with no 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?
For a tool with 6 parameters and no output schema, the description is adequate but lacks details like response format, encoding, or error scenarios. Pagination is mentioned but not fully elaborated.
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 coverage is 100%, so all parameters are already described. The description does not enhance parameter meaning beyond the schema, resulting in a 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 action 'Read file contents' and the resource 'from a repository', and includes a distinguishing feature 'with pagination support for large files'. This differentiates it from siblings like browse_repository or get_diff.
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 implies use for reading file contents, especially large ones, but does not explicitly state when to use this tool over siblings like browse_repository or get_file_blame. No alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pull_requestARead-onlyIdempotent
Get details of a specific pull request including status, reviewers, and metadata. Supports custom field selection via the fields param ('*all' for full raw response, 'id,title,state' for a custom subset).
| Name | Required | Description | Default |
|---|---|---|---|
| prId | Yes | Pull request ID. | |
| fields | No | Comma-separated fields to return (dot notation for nested paths). Omit for a curated default; use '*all' for the full raw API response. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| repository | Yes | Repository slug. | |
| includeMergeVetoes | No | Include merge vetoes from the /merge endpoint (default: false). Adds `mergeCheck` with canMerge, conflicted, outcome, and vetoes fields. | |
| includeBuildSummaries | No | Include build summaries from the UI-layer endpoint (default: false). Adds `buildSummaries` with aggregated CI status per commit. May not be available in older Bitbucket deployments. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the tool is safe and idempotent. The description adds value by explaining the `fields` parameter behavior and the default return content (status, reviewers, metadata). No contradictions with annotations.
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 two sentences: first sentence defines purpose, second sentence explains the key customization parameter. It is front-loaded, concise, and every sentence earns its place with no 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 6 parameters with full schema coverage, no output schema, and no nested objects, the description covers the main behaviors: what the tool returns and how to customize. It does not detail the exact response structure or error cases, but for a read-only detail tool moderated by annotations, it is sufficiently complete.
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 coverage is 100%, so baseline is 3. The description adds meaningful context for the `fields` parameter ('*all' for full response, custom subsets) and implies default output fields. This goes beyond the schema descriptions and helps the agent understand how to tailor the response.
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 'details of a specific pull request', listing included information (status, reviewers, metadata). This distinguishes it from sibling tools like list_pull_requests (which returns a list) and get_pull_request_activity or get_pull_request_commits (which return specific subsets).
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 implies the tool is for fetching a single PR's details but does not explicitly provide when-to-use vs alternatives (e.g., 'Use this for a single PR; use list_pull_requests for a list'). With many sibling tools, some guidance would be beneficial, but the purpose is clear enough for basic selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pull_request_activityARead-onlyIdempotent
Get activity feed for a pull request. Optionally filter to only reviews or comments.
| Name | Required | Description | Default |
|---|---|---|---|
| prId | Yes | Pull request ID. | |
| limit | No | Maximum number of results to return (default: 25, max: 100). | |
| start | No | Start index for pagination (default: 0). | |
| fields | No | Comma-separated fields to return (dot notation for nested paths). Omit for a curated default; use '*all' for the full raw API response. | |
| filter | No | Filter activity type (default: all). | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| repository | Yes | Repository slug. | |
| excludeUsers | No | Usernames to exclude from results (e.g. bot accounts like sa_sec_appsec_auto). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive, so the safety profile is clear. The description adds the ability to filter activity (reviews/comments) but does not discuss pagination, rate limits, or return structure beyond what filters imply.
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 concise sentence that front-loads the tool's purpose and key option (filter). No 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?
Given 8 parameters and no output schema, the description is adequate but lacks details about return values, pagination behavior (start, limit), or the 'fields' parameter. Annotations cover safety, but behavioral detail beyond filtering is missing.
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 input schema fully documents all 8 parameters. The description mentions optional filtering (mapping to the 'filter' parameter) but adds no additional meaning beyond the schema's 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 specifies the action (get), the resource (activity feed for a pull request), and mentions optional filtering by activity type. This clearly distinguishes it from siblings like get_pull_request or get_pull_request_commits.
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 states optional filtering but does not explicitly guide when to use this tool versus alternatives like list_pull_requests or search. Usage context is implied but not fully articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pull_request_commitsARead-onlyIdempotent
List commits for a specific pull request. Returns the commits that are part of the pull request with pagination support.
| Name | Required | Description | Default |
|---|---|---|---|
| prId | Yes | Pull request ID. | |
| limit | No | Maximum number of results to return (default: 25, max: 100). | |
| start | No | Start index for pagination (default: 0). | |
| fields | No | Comma-separated fields to return (dot notation for nested paths). Omit for a curated default; use '*all' for the full raw API response. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds 'with pagination support', which is a behavioral detail beyond annotations. No contradictions.
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 is efficient and front-loaded. No extraneous words; every part adds value.
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?
Covers core functionality and pagination support. No output schema exists, but for a simple list tool, the description is sufficient. Minor gap: no detail on commit fields returned.
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 coverage is 100%, so parameters are fully described in the schema. The description adds no additional meaning to parameters, scoring the baseline 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 tool lists commits for a specific pull request, which distinguishes it from siblings like list_commits (all commits) and get_commit (single commit).
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 like list_commits or get_commit. The purpose is implied but not contrasted with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_server_infoARead-onlyIdempotent
Get Bitbucket Server version and properties. Useful to check connectivity and server version.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description adds minimal behavioral detail. However, it confirms the tool retrieves properties, consistent with the annotations.
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 sentence that is front-loaded and to the point, with no unnecessary words.
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 read-only tool with no parameters and no output schema, the description adequately covers what the tool does and why to use it.
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?
There are no parameters, so the schema covers everything. With 0 parameters, a baseline of 4 is appropriate; the description does not need to add parameter details.
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 retrieves Bitbucket Server version and properties, distinguishing it from sibling tools that operate on repositories, pull requests, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions it is useful for checking connectivity and server version, providing clear context for when to use. It does not specify when not to use or mention alternatives, but the sibling list makes the context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tagARead-onlyIdempotent
Get details of a specific tag by its name. Supports custom field selection via the fields param ('*all' for full raw response, 'id,displayId,hash' for a custom subset).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Tag name (e.g. 'v1.0.0'). | |
| fields | No | Comma-separated fields to return (dot notation for nested paths). Omit for a curated default; use '*all' for the full raw API response. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. Description adds valuable behavioral detail on custom field selection, including special values like '*all'. This goes beyond annotations.
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?
Two concise sentences, front-loaded with purpose. Every sentence adds value with no 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 simple retrieval tool without output schema, the description covers purpose, parameters, and field selection. It could mention return value structure but is largely complete.
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 coverage is 100%. The description adds significant meaning to the 'fields' parameter by explaining allowed values and default behavior, surpassing the schema 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 tool retrieves details of a specific tag by name, using a specific verb and resource. It distinguishes from sibling 'list_tags' which lists all tags.
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 implies usage for retrieving a single tag but does not explicitly exclude alternatives or state when not to use. It provides field selection examples but lacks guide on choosing between this and similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_profileARead-onlyIdempotent
Get a Bitbucket user profile by user slug. Returns user details including display name, email, and active status.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Comma-separated fields to return (dot notation for nested paths). Omit for a curated default; use '*all' for the full raw API response. | |
| userSlug | Yes | User slug (username) to look up. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the agent knows it's a safe, idempotent read operation. The description adds that it returns display name, email, and active status, providing useful behavioral context beyond annotations. No contradictions.
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 concise sentence that covers the action, resource, and key return fields. No unnecessary words or repetition.
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 simple nature of the tool and the presence of annotations covering safety, the description adequately conveys what the tool does and what it returns. It could mention error cases or pagination, but those are not critical for this lookup. Output schema is absent, but the description lists key fields.
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 coverage is 100%, and the description does not add any new information about parameters beyond what the schema already provides. The description briefly lists example return fields but does not explain parameter semantics further.
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'), the resource ('Bitbucket user profile'), and the required identifier ('by user slug'). It also lists returned fields, making the purpose unambiguous. Among siblings, only 'search_users' might overlap, but this tool is specific to a single user lookup.
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 implies usage when needing a specific user's profile details. It does not explicitly exclude alternative tools or mention when not to use, but the context is clear enough that no sibling tool directly matches this purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_branchesARead-onlyIdempotent
List branches in a repository. Also returns the default branch when available. Supports custom field selection via the fields param ('*all' for full raw response, 'displayId,latestCommit' for a custom subset).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of branches to return (default: 25, max: 1000). | |
| start | No | Start index for pagination (default: 0). | |
| fields | No | Comma-separated fields to return (dot notation for nested paths). Omit for a curated default; use '*all' for the full raw API response. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| filterText | No | Filter branches by name substring. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering safety. The description adds behavioral context: it returns the default branch when available and explains the 'fields' param usage, which extends beyond annotations.
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?
Two sentences only: the first states the core purpose, the second adds essential details on default branch and field selection. No wasted words, and key information is front-loaded.
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?
The tool has 6 parameters and no output schema. The description covers the main purpose, default branch, and field selection. It does not describe the response structure, but for a straightforward list tool, the provided context is sufficient given the detailed parameter 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 baseline is 3. The description adds value by explaining the 'fields' parameter with examples ('*all', custom subsets) and noting the default branch return behavior, which is not in the schema.
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 'List branches in a repository', using a specific verb and resource. It distinguishes itself from siblings like 'list_branch_restrictions' and 'manage_branches', and adds details about returning the default branch and supporting field selection.
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 does not provide explicit guidance on when to use this tool versus alternatives or when not to use it. It implies usage for listing branches but lacks direct comparison to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_branch_restrictionsARead-onlyIdempotent
List branch restrictions for a repository. These control which users/groups can push to or delete specific branches or branch patterns.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 25, max: 100). | |
| start | No | Start index for pagination (default: 0). | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive. The description adds domain context on what branch restrictions control, going beyond the annotations.
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?
Two concise sentences, front-loaded with purpose, no unnecessary words.
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?
The description is complete for a list tool with well-documented schema. Could mention return type, but not required given no 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 baseline is 3. The description does not add any parameter-specific information.
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 'List' and resource 'branch restrictions' and explains what these restrictions control (push/delete permissions). This distinguishes it from siblings like 'list_branches'.
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. Given many sibling listing tools, the description lacks context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_commit_commentsARead-onlyIdempotent
Get comments for a specific commit. Returns all comments on the commit with pagination support.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 25, max: 100). | |
| start | No | Start index for pagination (default: 0). | |
| fields | No | Comma-separated fields to return (dot notation for nested paths). Omit for a curated default; use '*all' for the full raw API response. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| commitId | Yes | Full commit hash. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description confirms read-only, idempotent behavior as per annotations, and adds that pagination is supported. No contradictions.
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?
Two sentences, no redundancy. First sentence immediately states 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?
No output schema, and description doesn't mention return structure or field details. Adequate but could be more helpful for a tool with 6 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?
Schema covers all 6 parameters with descriptions (100% coverage). Description adds no additional meaning beyond what schema provides.
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?
Description clearly states 'Get comments for a specific commit' with specific verb and resource, and distinguishes from sibling 'manage_commit_comments' which is CRUD.
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 'get_commit' or 'manage_commit_comments'. No explicit when-not or context for pagination.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_commitsARead-onlyIdempotent
List commits in a repository, optionally filtered by branch and author. Supports custom field selection via the fields param ('*all' for full raw response, 'id,message,author.name' for a custom subset).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of commits to return (default: 25, max: 1000). | |
| start | No | Start index for pagination (default: 0). | |
| author | No | Client-side filter by author (case-insensitive match on name, slug, or displayName). Only filters the current page of results. Use with start/limit to paginate for more matches. | |
| branch | No | Branch name to list commits from. | |
| fields | No | Comma-separated fields to return (dot notation for nested paths). Omit for a curated default; use '*all' for the full raw API response. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description is not required to restate safety. However, it adds behavioral details: the author filter is client-side and only applies to the current page, and the fields param supports '*all' for full raw response. This exceeds the baseline.
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 consists of two concise sentences. The first sentence states the core purpose and filtering options; the second details the fields param. No redundant information; every 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?
With 7 parameters and no output schema, the description covers the main use case, filtering, field selection, and client-side behavior of the author filter. It does not explain branch filter behavior or response format, but these are secondary. Overall, it is largely complete.
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 coverage is 100%, so baseline is 3. The description adds context beyond schema: it explains the fields param with examples and clarifies that the author filter is client-side and pagination-dependent. This adds meaningful 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 tool lists commits in a repository with optional filtering by branch and author. The verb 'list' and resource 'commits' are specific, and the tool is distinct from siblings like 'get_commit' (single commit) and 'list_commit_comments'.
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 implies usage for listing commits in a repository with filters, but it does not explicitly state when to use this tool versus alternatives like 'get_commit' or 'get_commit_pull_requests'. No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dashboard_pull_requestsARead-onlyIdempotent
Get pull requests from the authenticated user dashboard. No project/repo needed. Supports custom field selection via the fields param ('*all' for full raw response, 'id,title,state' for a custom subset).
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | Filter by user role. | |
| limit | No | Maximum number of results to return (default: 25, max: 100). | |
| order | No | Sort order. | |
| start | No | Start index for pagination (default: 0). | |
| state | No | Filter by state. | |
| fields | No | Comma-separated fields to return (dot notation for nested paths). Omit for a curated default; use '*all' for the full raw API response. | |
| closedSince | No | Only return PRs closed after this timestamp (epoch ms). | |
| participantStatus | No | Filter by participant status. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and idempotentHint=true, so the description doesn't need to repeat safety. It adds behavioral context about custom field selection via the `fields` parameter, which is valuable beyond annotations.
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?
Two sentences: first states the core purpose, second explains a key parameter. No wasteful words, front-loaded with 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?
The description covers the tool's purpose and a key parameter. Omits mention of pagination defaults (start, limit) or sorting, but the schema covers these. Given no output schema, it is sufficiently complete.
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 coverage, the schema already describes all 8 parameters. The description adds meaningful guidance for the `fields` parameter (example values, dot notation, defaults), justifying above baseline.
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', the resource 'pull requests', and the scope 'from the authenticated user dashboard'. It explicitly distinguishes itself from sibling tools like list_pull_requests by noting 'No project/repo needed'.
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 for when to use this tool (dashboard PRs without a specific repo). It lacks explicit when-not or alternative tools, but the sibling context and 'No project/repo needed' imply appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_default_reviewer_conditionsARead-onlyIdempotent
List default reviewer conditions for a repository. These conditions determine which users are automatically added as reviewers to pull requests.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Comma-separated fields to return (dot notation for nested paths). Omit for a curated default; use '*all' for the full raw API response. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds minimal behavioral context beyond stating the purpose ('automatically added as reviewers'). It doesn't disclose any other behaviors (e.g., pagination, sorting, or error cases), but for a simple read-only list this is acceptable.
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 very concise: two sentences with no wasted words. It front-loads the action and resource, immediately followed by a clarifying sentence about the purpose. It 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 simplicity (no output schema, only 3 parameters with full coverage), the description is complete enough for an agent to understand what it does. It could optionally mention the return format or pagination behavior, but that's not required for core functionality.
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 coverage is 100%, so the parameters are already documented. The description does not add any extra meaning or usage guidance for the parameters beyond what the schema provides. Baseline 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 (list) and the resource (default reviewer conditions for a repository) with enough context about what these conditions do (automatically add reviewers to PRs). It distinguishes from siblings like list_reviewer_groups and list_branch_restrictions by specifying a unique resource, though it doesn't explicitly differentiate.
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 implies when to use the tool (to view conditions that auto-add reviewers), but it doesn't provide explicit guidance on when not to use it or mention alternatives among the many sibling list tools. The context is clear enough for an agent to infer usage based on the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_forksARead-onlyIdempotent
List forks of a repository. Supports custom field selection via the fields param ('*all' for full raw response, 'slug,name' for a custom subset).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of forks to return (default: 25, max: 1000). | |
| start | No | Start index for pagination (default: 0). | |
| fields | No | Comma-separated fields to return (dot notation for nested paths). Omit for a curated default; use '*all' for the full raw API response. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, which are consistent. The description adds useful behavioral detail about custom field selection via the `fields` param, going beyond annotations.
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 two sentences, clearly front-loaded with the core purpose followed by additional parameter detail. No unnecessary words.
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?
The description covers the main behavior and custom field selection, but lacks mention of pagination or the `limit`/`start` parameters, which are present in the schema. However, for a simple list tool with good annotations, it is largely complete.
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 covers all parameters with descriptions (100% coverage). The description adds examples and clarification for the `fields` parameter, providing extra value beyond the schema.
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 action ('List forks of a repository') and resource. It distinguishes from sibling tools by being specific to forks, and adds extra detail about custom field selection.
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 does not provide explicit guidance on when to use this tool versus alternatives. It mentions the `fields` parameter but lacks context about selection criteria or comparisons to other list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_gpg_keysARead-onlyIdempotent
List GPG keys for the authenticated user.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 25, max: 100). | |
| start | No | Start index for pagination (default: 0). | |
| userSlug | No | Filter by user slug (admin only). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds no further behavioral context beyond what annotations convey, so it meets an adequate baseline.
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?
One concise sentence with immediate verb and resource, no extraneous words. Highly efficient.
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 low complexity and comprehensive annotations and schema, the description is mostly complete. Could optionally mention default pagination or return format, but not necessary.
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 three parameters described. The description adds no parameter information beyond the schema, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists GPG keys for the authenticated user, a specific verb-resource combination. It distinguishes from sibling 'manage_gpg_keys' which implies mutation.
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. The description implies usage for reading GPG keys, but no when-not 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.
list_labelsBRead-onlyIdempotent
List labels for a repository.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 25, max: 100). | |
| start | No | Start index for pagination (default: 0). | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey read-only and idempotent behavior. The description adds no further behavioral context (e.g., pagination details or default limits). It does not contradict annotations, but also does not enhance beyond them.
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, front-loaded sentence that efficiently communicates the purpose. It is appropriately sized for a simple list operation.
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 fully documented input schema and safety annotations, the description provides minimal context about output or typical use cases. It is adequate but could mention expected output format or example 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?
Schema coverage is 100%, so each parameter has a description. The tool description does not add additional context or nuances beyond what is already in the schema. Baseline 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 (list) and resource (labels) with a repository scope. It is specific enough to differentiate from other list tools like list_branches, but does not explicitly distinguish from the sibling manage_labels which might handle CRUD 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?
No guidance is provided on when to use this tool versus alternatives. The presence of manage_labels suggests a more comprehensive label management tool, but the description does not clarify when listing alone is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_merge_checksARead-onlyIdempotent
List merge check configurations for a repository. Merge checks control conditions that must be met before a pull request can be merged.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, idempotentHint). Description adds conceptual explanation but no additional behavioral constraints (e.g., pagination, rate limits).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy. First sentence states action, second adds context. Efficient and front-loaded.
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?
Adequate for a simple read-only list tool with no output schema. Explains concept of merge checks. Could explicitly mention return format but not necessary.
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% for project and repository parameters. Description adds no extra semantic details beyond what's in schema.
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?
Description states 'List merge check configurations for a repository', clearly indicating the verb and resource. It distinguishes from siblings like manage_merge_checks (which modifies) but lacks differentiation from other list 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?
Provides context that merge checks control merge conditions, implying use when viewing checks. No explicit when-to-use or alternatives given, leaving the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsARead-onlyIdempotent
List all Bitbucket projects you have access to. Use this first to discover project keys. Supports custom field selection via the fields param ('*all' for full raw response, 'key,name' for a custom subset).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of projects to return (default: 25, max: 1000) | |
| start | No | Start index for pagination (default: 0). | |
| fields | No | Comma-separated fields to return (dot notation for nested paths). Omit for a curated default; use '*all' for the full raw API response. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior. The description adds value by detailing the `fields` parameter behavior and pagination support, going beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Remarkably concise—two sentences that are front-loaded with the purpose and key guidance. Every sentence adds value without waste.
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?
No output schema exists, but the description adequately covers the tool's purpose, parameters, and usage. It may lack details on return format, but for a list tool with pagination, it is sufficient.
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?
All parameters are described in the schema (100% coverage). The description enhances understanding by providing usage examples for the `fields` parameter (`'*all'` and `'key,name'`).
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 (list), resource (Bitbucket projects), and intended use (discover project keys). It is specific and distinct from sibling tools that deal with repositories, pull requests, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance to use this tool first to discover project keys. While it does not list when not to use or alternatives, the context is clear given the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pull_requestsARead-onlyIdempotent
List pull requests in a repository. Supports filtering by state, direction, order, and client-side author filtering. Supports custom field selection via the fields param ('*all' for full raw response, 'id,title,state' for a custom subset).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 25, max: 100). | |
| order | No | Sort order. | |
| start | No | Start index for pagination (default: 0). | |
| state | No | Filter by state (default: OPEN). | |
| author | No | Client-side filter by author username/displayName. Only filters the current page of results. Use with start/limit to paginate for more matches. | |
| fields | No | Comma-separated fields to return (dot notation for nested paths). Omit for a curated default; use '*all' for the full raw API response. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| direction | No | PR direction filter. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly, idempotent), description clarifies that author filtering is client-side and page-limited, and explains `fields` param with examples. Adds concrete behavioral context not present in annotations.
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?
Two concise sentences: first states purpose and filters, second details `fields` param. Front-loaded with core function, no redundant or irrelevant content.
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?
Covers purpose and key parameters but lacks description of return structure (no output schema). Agent may need to infer default fields or pagination details from schema. Minor gap given complexity.
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 describes all 9 parameters fully (100% coverage). Description adds value by summarizing key filters and providing a concrete example for `fields` ('id,title,state'), aiding quick comprehension without reading schema.
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?
Description clearly states 'List pull requests in a repository' with specific verb and scope. Differentiates from siblings like 'get_pull_request' (single PR) and 'list_dashboard_pull_requests' (dashboard scope) by explicitly mentioning repository 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?
Implies usage for repository-specific listing via name and description, but does not explicitly contrast with alternative tools like 'search' or 'list_dashboard_pull_requests'. Does provide guidance on filtering parameters and client-side author filtering behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_repositoriesARead-onlyIdempotent
List repositories in a project. Use this to find repository slugs for other operations. Supports custom field selection via the fields param ('*all' for full raw response, 'slug,name' for a custom subset).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of repositories to return (default: 25, max: 1000) | |
| start | No | Start index for pagination (default: 0). | |
| fields | No | Comma-separated fields to return (dot notation for nested paths). Omit for a curated default; use '*all' for the full raw API response. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds behavioral context about custom field selection and pagination (via limit/start params), which are not fully covered by annotations.
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 compact at two sentences, with the purpose stated first and usage guidance immediately following. No extraneous information; every sentence is purposeful.
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?
While the description covers core behavior, it does not explicitly state the return format (e.g., list of repository objects) or pagination details beyond parameter names. Given no output schema, slightly more detail 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%, but the description adds value by providing examples for the 'fields' parameter ('*all', 'slug,name') and mentioning the default project, enhancing understanding beyond the schema.
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 'List' and resource 'repositories in a project', and distinguishes its use for finding repository slugs for other operations, differentiating it from sibling tools like browse_repository or create_repository.
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 explicitly advises to use this tool for finding repository slugs, but does not provide explicit when-not-to-use scenarios or alternative tools. However, the context of sibling tools implies alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_repository_hooksARead-onlyIdempotent
List repository hooks and their enabled/disabled state.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 25, max: 100). | |
| start | No | Start index for pagination (default: 0). | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the agent knows it's a safe read. The description adds that it returns enabled/disabled state, which is useful behavioral context beyond annotations. No contradictions.
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 sentence that is front-loaded with verb and resource. Every word is necessary, with no fluff or 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 simple read-only list tool with rich annotations and fully specified schema parameters, the description is nearly complete. It could mention return format (list of hooks with states), but that is implied by 'list...state'. Adequate for the tool's simplicity.
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 coverage is 100% (all 4 parameters have descriptions). The tool description does not add any additional parameter-level information beyond what is in the schema, so baseline 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 'list' and the resource 'repository hooks', and specifies the output includes 'enabled/disabled state'. It distinguishes from sibling 'manage_repository_hooks' which implies mutations, and 'list_webhooks' for a different resource.
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?
Usage is implied (list hooks), but there is no explicit guidance on when to use this tool vs alternatives like 'manage_repository_hooks' for modifications or other list tools. No when-not-to-use or comparative advice is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_reviewer_groupsARead-onlyIdempotent
List reviewer groups configured for a repository.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Comma-separated fields to return (dot notation for nested paths). Omit for a curated default; use '*all' for the full raw API response. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds no additional behavioral context beyond what annotations provide, so it meets the baseline but does not excel.
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, no wasted words. Front-loaded with core 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 simple list tool with full schema coverage and annotations, description is mostly complete. However, lacking usage guidelines slightly reduces 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 description does not need to explain parameters further. Baseline of 3 is appropriate as the description adds no parameter-specific meaning.
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?
Description clearly states verb 'List' and resource 'reviewer groups configured for a repository'. It is distinct from sibling tools like list_default_reviewer_conditions and manage_reviewer_groups.
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. While the name implies listing existing groups, there is no mention of when not to use or comparison with similar list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_secret_scanning_rulesARead-onlyIdempotent
List secret scanning allowlist rules for a repository. Requires Bitbucket Server 8.5+.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Comma-separated fields to return (dot notation for nested paths). Omit for a curated default; use '*all' for the full raw API response. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, indicating a safe read operation. The description adds no further behavioral details (e.g., pagination, rate limits, or output format). Since annotations cover safety, the description adds no extra transparency, scoring at baseline.
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: one sentence explaining the purpose and one sentence for the version requirement. Every word is necessary, and it is front-loaded with the primary action. No wasteful or 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 list tool with no output schema, the description does not explain what the return value looks like (e.g., whether it's paginated, sorted, or includes all rules). Given the annotations and full schema coverage, it is minimally adequate but lacks richness: no mention of typical use cases or result limits.
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%: all three parameters ('fields', 'project', 'repository') have descriptions in the schema. The tool description does not add any additional meaning beyond what the schema already provides, so it meets the baseline for 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 specifies the verb 'List', the resource 'secret scanning allowlist rules', and the scope 'for a repository'. It is specific and distinct from sibling tools like list_branches or list_repositories, making the tool's purpose unmistakable.
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 includes a version requirement ('Requires Bitbucket Server 8.5+'), which provides a necessary precondition. However, it lacks guidance on when to use this tool versus alternatives or when to avoid it. No comparison with sibling list tools is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ssh_keysARead-onlyIdempotent
List SSH keys for the authenticated user.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 25, max: 100). | |
| start | No | Start index for pagination (default: 0). | |
| userSlug | No | Filter by user slug (admin only). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description confirms read-only listing, adding no extra behavioral context beyond what annotations already provide.
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 is concise and front-loaded. Could improve by mentioning pagination behavior, but no wasteful content.
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?
Adequate for a simple list operation with well-documented parameters. Lacks explicit mention of return structure (e.g., paginated list of SSH key objects), but schema coverage compensates.
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 has 100% description coverage for all 3 parameters, including limits and filtering. Description adds no additional semantic value beyond the schema.
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?
Description clearly states 'List SSH keys for the authenticated user.' It uses specific verb and resource, distinguishing it from siblings like manage_ssh_keys which handles mutations.
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 vs alternatives. Siblings like manage_ssh_keys and list_gpg_keys exist, but no explicit context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tagsARead-onlyIdempotent
List tags in a repository. Supports custom field selection via the fields param ('*all' for full raw response, 'id,displayId,hash' for a custom subset).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of tags to return (default: 25, max: 1000). | |
| start | No | Start index for pagination (default: 0). | |
| fields | No | Comma-separated fields to return (dot notation for nested paths). Omit for a curated default; use '*all' for the full raw API response. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| filterText | No | Filter tags by name substring. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds value by detailing the custom field selection capability with concrete examples ('*all', 'id,displayId,hash').
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?
Two sentences with no filler. First sentence states purpose, second adds key detail. 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 simple list tool with full schema coverage and complete annotations, the description is adequate. It could mention pagination or that it returns a list, but those are implied. No output schema is fine.
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 coverage is 100% with detailed descriptions for all 6 parameters. The description provides concrete examples for the fields parameter, adding practical guidance beyond the schema definitions.
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?
Description clearly states 'List tags in a repository', using a specific verb and resource. It distinguishes from siblings like get_tag (single tag retrieval) and manage_tags (CRUD 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?
No explicit guidance on when to use versus alternatives like get_tag or other list tools. Usage is implied from the name and purpose, but lacks any when-to-use or when-not-to-use advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_webhooksARead-onlyIdempotent
List webhooks configured for a repository.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 25, max: 100). | |
| start | No | Start index for pagination (default: 0). | |
| fields | No | Comma-separated fields to return (dot notation for nested paths). Omit for a curated default; use '*all' for the full raw API response. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds no behavioral context beyond listing webhooks per repository, which is already implied by the name and annotations.
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 front-loades the essential information: action, resource, and scope. No extraneous words.
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 there is no output schema, the description could mention the return type or key fields, but for a list webhooks tool, the purpose is clear and the fields parameter offers customization. It is mostly complete for its simplicity.
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 coverage is 100%; each parameter already has a clear description in the schema. The tool description does not add additional meaning or context for 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 ('List') and resource ('webhooks configured for a repository'). It distinguishes from sibling tools like 'manage_webhooks' (which suggests create/update/delete) and 'list_repository_hooks' (different hook type).
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 gives no explicit guidance on when to use this tool versus alternatives (e.g., manage_webhooks). It implies usage for reading webhooks but doesn't mention pagination, default limits, or when to use parameters like start and limit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_branchesADestructive
Manage branches in a repository. Actions: "create" (create a new branch), "delete" (delete a branch). Refuses to delete the default branch.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Operation to perform. | |
| branch | Yes | Branch name. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| repository | Yes | Repository slug. | |
| startPoint | No | Ref to branch from (create only). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive behavior (destructiveHint=true). The description adds the specific constraint about not deleting the default branch, but does not disclose other behaviors like auth requirements, rate limits, or consequences of actions (e.g., whether creation is immediate or reversible).
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?
Two concise sentences that front-load the main purpose, then list actions and a key constraint. No wasted words; every sentence adds value.
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?
The description covers the core functionality but lacks details about return values, error cases, or success indicators. Given no output schema, the description should clarify what the agent can expect after invoking the tool (e.g., confirmation message, updated branch list).
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 coverage is 100%, so the schema already documents all parameters. The description adds minimal value beyond the schema, only restating that actions are create/delete and that startPoint is for create only. Baseline 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 manages branches in a repository, enumerates the two actions (create and delete), and adds a specific constraint (refuses to delete default branch). This distinguishes it from sibling tools like list_branches and other management 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?
The description implies usage for creating or deleting branches but does not explicitly state when to use this tool versus alternatives (e.g., using list_branches for viewing, or other manage tools for different resources). No guidance on prerequisites or workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_commentA
Manage pull request comments. Actions: "create" (general, inline, threaded, or tasks), "edit" (update text/severity/state/threadResolved), "delete", "react" (add emoji reaction), "unreact" (remove reaction). state: RESOLVED toggles the task checkbox on a BLOCKER comment; threadResolved: true closes the conversation (the "Resolve" button in the UI). They are independent and can be passed together.
| Name | Required | Description | Default |
|---|---|---|---|
| line | No | Line number for inline comments (create only). | |
| prId | Yes | Pull request ID. | |
| text | No | Comment text (required for create and edit). | |
| state | No | Comment state. PENDING = draft (create only). RESOLVED = mark as resolved (edit only). OPEN = reopen (edit only). | |
| action | Yes | Operation to perform on the comment. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| version | No | Comment version for optimistic locking (required for edit and delete). | |
| diffType | No | Which diff to anchor the comment on. EFFECTIVE = overall PR diff (default). COMMIT = a single commit's diff. RANGE = diff between two specific commits. | |
| emoticon | No | Emoticon shortcut for react/unreact (e.g. thumbsup, heart, tada). Use search_emoticons to find available options. | |
| filePath | No | File path for inline comments (create only). | |
| fileType | No | Which side of the diff. TO = new version (default). FROM = old version (useful for renames). | |
| lineType | No | Type of line being commented on. ADDED = new line, REMOVED = deleted line, CONTEXT = unchanged line visible in the diff. | |
| parentId | No | Parent comment ID for threaded replies (create only). | |
| severity | No | Comment severity. BLOCKER marks it as a task (create and edit). | |
| commentId | No | Comment ID (required for edit, delete, react, unreact). | |
| repository | Yes | Repository slug. | |
| threadResolved | No | Close or reopen the comment thread (edit only). Independent of `state`. Requires Bitbucket Data Center >= 8.9; older servers accept the PUT but ignore the field. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations don't provide behavioral details, but the description discloses important traits: optimistic locking via version, independence of state and threadResolved, and the Bitbucket Data Center requirement for threadResolved. This adds significant value beyond annotations.
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 relatively concise, combining paragraph and bullet-like structure for actions. It could be more structured (e.g., separate sections for actions and behaviors), but every sentence adds value.
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 17 parameters, no output schema, and many enums, the description covers main behaviors and parameter constraints. It lacks return value details but is complete enough for an agent to invoke 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 baseline is 3. The description adds meaning by explaining the interaction between state and threadResolved, the meaning of RESOLVED vs threadResolved, and that version is required for edit/delete. This extends beyond schema.
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 manages pull request comments with specific actions (create, edit, delete, react, unreact) and explains key behaviors like state and threadResolved. It distinguishes itself from siblings by focusing on PR comments, not commit comments.
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 vs alternatives (e.g., manage_commit_comments). It provides context for actions but lacks when-not-to-use 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.
manage_commit_commentsC
Manage comments on a commit. Actions: "create" (add a new comment), "edit" (update an existing comment), "delete" (remove a comment).
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Comment text (required for create and edit). | |
| action | Yes | Operation to perform. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| version | No | Comment version for optimistic locking (required for edit and delete). | |
| commitId | Yes | Full commit hash. | |
| commentId | No | Comment ID (required for edit and delete). | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description claims a delete action, which is destructive, but the annotations set destructiveHint to false. This is a direct contradiction, as the tool can delete comments. Additionally, no other behavioral traits (auth needs, side effects) are disclosed, so transparency is poor.
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 two sentences with no filler. It front-loads the purpose and actions, making it easy to scan. 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 has 7 parameters and no output schema, the description does not explain return values or behavior in edge cases (e.g., what happens on delete of non-existent comment). It covers the basics but leaves gaps for a moderately complex 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?
Input schema has 100% coverage with descriptions for all parameters. The description adds minimal extra context by stating which actions require which parameters (e.g., version for edit/delete). This is helpful but largely redundant with the schema descriptions, so baseline 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 that the tool manages comments on a commit with specific actions (create, edit, delete), providing a clear verb and resource. However, it does not differentiate from the sibling tool 'manage_comment', which presumably handles comments on pull requests or other objects, so ambiguity remains.
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 lists the allowed actions but provides no guidance on when to use this tool versus alternatives like 'manage_comment' or when not to use it. It lacks explicit context or exclusions, leaving the agent to infer usage without direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_deploymentsA
Manage deployments for a commit. Actions: "get" (retrieve a deployment), "create" (record a new deployment), "delete" (remove a deployment). GET requires key, environmentKey, and deploymentSequenceNumber. POST body requires deploymentSequenceNumber, description, displayName, environment (with displayName, key, optional type), key, state, and optional url. DELETE requires key, environmentKey, and deploymentSequenceNumber.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Deployment key (required for get/delete). Example: "deploy-prod-1". | |
| url | No | Deployment URL (for create, max 1024 chars). | |
| state | No | Deployment state (for create). | |
| action | Yes | Operation to perform. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| commitId | Yes | Full commit hash. | |
| repository | Yes | Repository slug. | |
| description | No | Deployment description (for create, max 255 chars). | |
| displayName | No | Deployment display name (for create, max 255 chars). | |
| environmentKey | No | Environment key (required for get/delete). Example: "prod". | |
| environmentType | No | Environment type (for create). | |
| environmentDisplayName | No | Environment display name (for create). Example: "Production". | |
| deploymentSequenceNumber | No | Deployment sequence number (required for get/delete). Example: 1. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no hints (readOnlyHint=false, etc.), so the description must convey behavior. It discloses that 'get' is read-only, 'create' and 'delete' are mutative. It does not mention idempotency or other traits, but the action descriptions are sufficient.
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 front-loaded with the main purpose and then lists actions and requirements. It is somewhat verbose but well-organized, with each sentence serving a 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?
No output schema exists, but the description does not mention what the tool returns (e.g., deployment details for get, success status for create/delete). For a tool with 13 parameters and three actions, omitting return information leaves a gap.
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 coverage is 100%, so baseline is 3. The description adds value by mapping specific parameters to actions (e.g., 'GET requires key, environmentKey, and deploymentSequenceNumber') and providing examples like 'Example: "deploy-prod-1".'
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 manages deployments for a commit and lists the three actions (get, create, delete). It distinguishes itself from sibling tools, none of which focus on deployments.
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 specifies which parameters are required for each action (e.g., GET requires key, environmentKey, deploymentSequenceNumber). It does not explicitly state when not to use the tool or mention alternatives, but the action-based guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_gpg_keysB
Manage GPG keys for the authenticated user. Actions: "add" (add a key), "delete" (remove a key).
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | GPG public key text (required for add). | |
| keyId | No | Key ID (required for delete). | |
| action | Yes | Operation to perform. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, but the tool modifies GPG keys (add/delete). The description does not disclose side effects, authentication requirements, or constraints (e.g., impact on existing keys). For a mutation tool, more behavioral context is expected.
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 concise with one sentence and an actions list. It front-loads the purpose. Slightly more structure (e.g., bullet points) could improve readability, but it is efficient.
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?
The tool is simple (add/delete GPG key), but the description lacks information on return values, authorization, or limits. Given no output schema, the agent would benefit from knowing what happens on success/failure. It is adequate but not comprehensive.
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 coverage is 100%, providing baseline. The description adds clarifications: 'add a key' for 'add', 'remove a key' for 'delete', and notes that 'text' is required for add and 'keyId' for delete. This adds value beyond the schema's property 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 manages GPG keys for the authenticated user and lists the available actions (add, delete). It distinguishes from sibling tools like list_gpg_keys (for listing) and manage_ssh_keys (for SSH keys). However, it could be more specific about the scope.
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 implies usage for adding/deleting GPG keys, but provides no explicit guidance on when to choose this tool over alternatives (e.g., list_gpg_keys for viewing). No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_labelsB
Manage repository labels. Actions: "add" (create a new label), "remove" (delete a label).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Label name. | |
| action | Yes | Operation to perform. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations set 'destructiveHint: false', but the description explicitly mentions deleting labels ('remove' action). This contradicts the annotation, misleading an agent about the tool's destructive nature.
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 with no unnecessary words. Front-loaded with verb and resource, then enumerates actions compactly.
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?
Lacks details on return values, error handling, or permissions needed. For a mutation tool with no output schema and contradictory annotations, more 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 coverage is 100%, so parameters are documented. The description adds clarification for the 'action' enum values ('add'/'remove' meanings), but does not enrich other parameters beyond schema 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 action ('Manage repository labels') and lists the two specific operations ('add' and 'remove'), which distinguishes it from read-only siblings like 'list_labels'.
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 (e.g., 'list_labels' for viewing). No explicit when-not-to-use or context for selecting between 'add' and 'remove'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_merge_checksB
Configure merge check settings for a repository.
| Name | Required | Description | Default |
|---|---|---|---|
| hookKey | Yes | Merge check hook key. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| settings | Yes | Hook settings object. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, idempotentHint=false, destructiveHint=false, suggesting it's a mutating but non-destructive operation. The description adds 'configure' which implies modification, but does not clarify whether changes are additive or overwrite, or any side effects like requiring admin rights. Given annotations, the description adds minimal 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 sentence with no wasted words. It is front-loaded and efficiently conveys 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?
The description is very sparse for a configuration tool with a complex nested parameter ('settings') and no output schema. It does not explain what merge checks are, how settings work, or what the response indicates. More context is needed for 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 coverage is 100% with all parameters described. The description does not add meaning beyond the schema; notably, 'settings' is an open-ended object without typical examples. Since schema coverage is high, a baseline 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 'Configure merge check settings for a repository' uses a specific verb ('configure') and explicitly names the resource ('merge check settings for a repository'). It clearly distinguishes from the sibling tool 'list_merge_checks' which lists settings rather than configuring them.
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 vs. alternatives, such as first listing existing merge checks, or prerequisites like repository permissions. The sibling 'list_merge_checks' exists but no relationship is mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_repository_hooksA
Manage repository hook settings. Actions: "enable" (enable a hook), "disable" (disable a hook), "configure" (set hook settings).
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Operation to perform. | |
| hookKey | Yes | Hook key (e.g. 'com.atlassian.bitbucket.server.bitbucket-bundled-hooks:force-push-hook'). | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| settings | No | Hook settings object (for 'configure' action). | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-read-only, non-idempotent, and non-destructive behavior. The description adds the actions but does not disclose side effects, required permissions, or failure modes. It is consistent with annotations but adds minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence listing actions. It is efficient but could benefit from clearer structure, such as separating actions into a list or adding formatting. Still, it is well above minimal.
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 5 parameters, a nested settings object, and no output schema, the description should provide more context on how to use the settings parameter or the effects of each action. It is adequate but incomplete for complex 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?
Schema coverage is 100% with descriptions for all 5 parameters. The tool description adds a brief explanation of the three actions (enable, disable, configure) but does not clarify the structure of the 'settings' object or provide examples. This matches 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 tool manages repository hook settings and lists specific actions (enable, disable, configure). This distinguishes it from the sibling 'list_repository_hooks' which is read-only, making the purpose and resource unambiguous.
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 implies usage when needing to change hook settings but provides no explicit guidance on when to use this tool vs alternatives like 'list_repository_hooks' for inspection. No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_reviewA
Approve, unapprove, or publish a review on a pull request. Use "approve" to approve, "unapprove" to remove your approval, and "publish" to submit a review with an optional overview comment and status.
| Name | Required | Description | Default |
|---|---|---|---|
| prId | Yes | Pull request ID. | |
| action | Yes | Review action to perform. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| repository | Yes | Repository slug. | |
| commentText | No | Overview comment text (for publish action). | |
| participantStatus | No | Participant status to set (for publish action). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, providing no hints about mutability or destructiveness. The description discloses basic behavioral traits (each action's effect) but does not cover permissions, side effects, or what happens after actions (e.g., whether approval triggers anything). Adequate but not exhaustive.
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 three short sentences, front-loaded with the overall purpose, then specifying actions. No redundant text; every sentence is essential.
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 6 parameters (3 required, 2 enums) and no output schema, the description covers core functionality and action-specific parameters. It could mention defaults (e.g., project) or error behavior, but it is largely complete for typical 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?
Schema coverage is 100%, so parameters are documented. The description adds value by linking 'commentText' and 'participantStatus' to the 'publish' action, clarifying their usage beyond the schema's 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: 'Approve, unapprove, or publish a review on a pull request.' It uses a specific verb ('manage' implied) and distinguishes from sibling tools by focusing on review actions on 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?
The description provides explicit usage for each action: 'Use "approve" to approve, "unapprove" to remove your approval, and "publish" to submit a review with an optional overview comment and status.' While it does not explicitly compare to alternatives (e.g., manage_comment or merge_pull_request), the guidance is clear for the intended use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_reviewer_groupsC
Manage reviewer groups for a repository. Actions: "create" (create a group), "delete" (remove a group).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Reviewer group name. | |
| action | Yes | Operation to perform. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| reviewers | No | Usernames to include in the group (create only). | |
| repository | Yes | Repository slug. | |
| description | No | Group description (create only). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates that the 'delete' action removes a group, which is a destructive operation. However, the annotations set destructiveHint=false, directly contradicting the description. Additionally, the description provides no behavioral context about side effects (e.g., permanent removal, impact on assigned reviewers) beyond the action names. This is a serious inconsistency.
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: two sentences with no redundant words. It front-loads the purpose and then lists actions efficiently. Every sentence adds value without waste.
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 6 parameters and no output schema, the description covers the core operations but omits important context: error behavior (e.g., duplicate group name on create, non-existent group on delete), permission requirements, and whether changes are immediate or reversible. For a management tool with destructive actions, this lacks necessary 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 coverage is 100%, so the description adds limited new meaning. It clarifies that 'reviewers' and 'description' are applicable only for the 'create' action, which is already stated in the schema descriptions. The description does not further explain parameter semantics, such as format constraints or defaults for 'project'. Baseline 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 manages reviewer groups for a repository and enumerates the supported actions (create and delete). While it specifies the verb and resource, it does not explicitly differentiate from sibling tools like list_reviewer_groups or manage_review, but the name and actions make the purpose distinct enough.
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. There is no mention of prerequisites, error handling, or when not to use it (e.g., if a group already exists or does not exist). The implied use case is for creating or deleting reviewer groups, but without explicit context, the agent may misuse it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_ssh_keysA
Manage SSH keys for the authenticated user. Actions: "add" (add a key), "delete" (remove a key).
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | SSH public key text (required for add). | |
| keyId | No | Key ID (required for delete). | |
| action | Yes | Operation to perform. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations do not indicate readonly or destructive behavior. Description mentions 'authenticated user' but does not elaborate on consequences of deletion or authentication requirements beyond that.
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, efficient sentence that front-loads the purpose and actions. No filler or 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?
Covers the two actions and mentions user scope. Lacks details on response format or side effects, but for a simple mutation tool, the description is largely adequate.
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 coverage is 100% and description aligns with enum values. No additional semantic information beyond what the schema provides, so baseline score applies.
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?
Description clearly states it manages SSH keys with specific actions (add/delete), distinguishing it from sibling tools like list_ssh_keys and manage_gpg_keys.
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 vs alternatives (e.g., list_ssh_keys for listing). The description only lists actions without providing context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_tagsBDestructive
Manage tags in a repository. Actions: "create" (create a new tag pointing to a commit), "delete" (delete a tag by name).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Tag name (e.g. 'v1.0.0'). | |
| action | Yes | Operation to perform. | |
| message | No | Optional message for the tag (create only). | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| repository | Yes | Repository slug. | |
| startPoint | No | Commit hash to tag (create only). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint: true; description adds no further context (e.g., permanence of delete, auth needs, side effects). No added value beyond annotations.
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?
Extremely concise: one sentence with a list of actions. No fluff; 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?
Lacks details on return values, error scenarios (e.g., tag already exists), and behavior for delete on nonexistent tag. Absent output schema increases need for description 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 covers all 6 parameters completely (100% coverage). Description reiterates actions but adds no extra meaning not in schema.
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?
Clearly states it manages tags with actions 'create' and 'delete', specific to tags and repository, distinguishing from siblings like 'list_tags' and 'get_tag'.
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 (e.g., creating vs listing) or alternatives. Does not mention prerequisites like commit existence for create.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_webhooksC
Manage repository webhooks. Actions: "create" (add a new webhook), "update" (modify an existing webhook), "delete" (remove a webhook).
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Webhook callback URL (required for create). | |
| name | No | Webhook name (required for create). | |
| action | Yes | Operation to perform. | |
| active | No | Whether the webhook is active (default: true). | |
| events | No | List of event types to subscribe to (e.g. 'repo:refs_changed', 'pr:opened'). | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| webhookId | No | Webhook ID (required for update and delete). | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no safety cues (all false), so description must fill the gap. It lists actions but doesn't disclose side effects (e.g., deleting a webhook is permanent, updating overwrites). No mention of idempotency or destructive behavior. The behavioral burden is not met.
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 sentence that efficiently communicates the purpose and actions. It is front-loaded with 'Manage repository webhooks' and then enumerates actions. However, more structure (e.g., bullet points or separate sentences) could improve readability.
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 8 parameters and no output schema, the description is insufficient. It doesn't explain the behavior of each action, required fields per action, or output expectations. The schema covers parameters but the description fails to tie them together into a coherent workflow.
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 coverage is 100%, so the schema already describes all parameters. The description adds no additional parameter meaning beyond listing actions. Baseline 3 is appropriate; no extra value is provided.
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 manages repository webhooks and lists three actions (create, update, delete). It distinguishes from sibling tools like list_webhooks which only lists. However, the verb 'manage' is generic and could be more specific (e.g., 'Create, update, or delete webhooks on a repository').
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 list_webhooks or manage_repository_hooks. No prerequisites or required context (e.g., repository must exist) are mentioned. The description provides minimal usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_pull_requestADestructive
Merge an approved pull request. Fetches the current version automatically for optimistic locking.
| Name | Required | Description | Default |
|---|---|---|---|
| prId | Yes | Pull request ID. | |
| message | No | Custom merge commit message. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| strategy | No | Merge strategy ID. no-ff = merge commit, ff = fast-forward, ff-only = fast-forward only, squash = squash, rebase-no-ff = rebase + merge commit, rebase-ff-only = rebase + fast-forward. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, and the description adds value by explaining the automatic optimistic locking behavior, providing behavioral context beyond the annotations.
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?
Two efficient sentences with no waste. The first sentence states the purpose, and the second adds critical detail about automatic version fetching.
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?
The description is concise but lacks information about return values, prerequisites (e.g., approval status), and potential failure scenarios, leaving some gaps for a mutation tool with no 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?
With 100% schema coverage, the baseline is 3. The description adds minimal extra meaning beyond schema descriptions, only hinting at optimistic locking for the merge operation.
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 action ('Merge an approved pull request') and the resource ('pull request'), effectively distinguishing it from sibling tools like create_pull_request or decline_pull_request.
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 implies usage after approval but does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchARead-onlyIdempotent
Search for code or files across Bitbucket repositories. Supports filtering by project, repository, and search type. Supports custom field selection via the fields param ('*all' for full raw response, 'file,hitCount' for a custom subset).
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Search type: "code" for content search, "file" for filename search. | |
| limit | No | Maximum number of results to return (default: 25, max: 100). | |
| query | Yes | Search query string. | |
| start | No | Start index for pagination (default: 0). | |
| fields | No | Comma-separated fields to return (dot notation for nested paths). Omit for a curated default; use '*all' for the full raw API response. | |
| project | No | Project key to scope the search. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| repository | No | Repository slug to scope the search. Requires project to be set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint. Description adds value by explaining the 'fields' parameter behavior (custom subsets, '*all' for full response) and search types. No contradictions.
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?
Three sentences, each adding value: purpose, filters, and fields. No fluff, front-loaded with the main action.
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 7 parameters and 100% schema coverage, the description covers the essential points. Missing aspects like pagination behavior (already in schema via 'start' parameter) and response structure, but overall adequate.
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 coverage is 100%, so baseline is 3. Description adds a brief example for the 'fields' param but does not provide significant additional meaning beyond the schema.
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?
Description clearly states the verb 'Search', resource 'code or files', and scope 'across Bitbucket repositories'. Distinguishes from sibling tools like search_emoticons and search_users.
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?
Description mentions filtering by project, repository, and search type, which provides usage context. However, it does not explicitly state when to use this tool vs alternatives, but given its purpose, it is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_emoticonsARead-onlyIdempotent
Search available emoticons for comment reactions. Returns matching shortcut names to use with manage_comment react/unreact.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search term (e.g. thumb, fire, heart). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare safe/idempotent. Description adds that it returns 'matching shortcut names' and its purpose for reactions, providing useful context beyond annotations.
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?
Two sentences, no wasted words, front-loaded purpose and output. Efficient 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?
For a simple search tool with one parameter and no output schema, description fully covers purpose, output, and usage context. No gaps.
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 coverage is 100% for single parameter 'query' with example. Description does not add significant meaning beyond schema; baseline score applies.
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?
Clear verb 'Search' and resource 'emoticons for comment reactions', distinguishes from siblings by focusing on emoticon search for reactions. Explicitly states output (shortcut names) and connection to manage_comment.
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?
States it's for comment reactions and returns shortcut names for manage_comment react/unreact, implying when to use. Lacks explicit when-not or alternatives, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_usersARead-onlyIdempotent
Search Bitbucket users by filter query. Returns matching users.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 25, max: 100). | |
| start | No | Start index for pagination (default: 0). | |
| fields | No | Comma-separated fields to return (dot notation for nested paths). Omit for a curated default; use '*all' for the full raw API response. | |
| filter | Yes | Filter query substring to match against user names and display names. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the agent knows it is a safe read operation. The description adds minimal behavioral context beyond 'returns matching users', which is already implied by the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no redundant information. However, it could be slightly expanded to include more context without losing efficiency.
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 search tool with 4 well-documented parameters and no output schema, the description plus schema provide sufficient context for an agent to invoke the tool 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 coverage is 100%, with each parameter having a description. The description only reinforces that 'filter' is used for the query, adding no new semantics beyond the schema. Baseline 3 applies.
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 uses a specific verb 'Search' and resource 'Bitbucket users' with a clear method 'by filter query'. It distinguishes from sibling tools like 'search' (general) and 'search_emoticons' by targeting users exclusively.
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. There is no mention of prerequisites, exclusions, or comparison with sibling search tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_pull_requestAIdempotent
Update a pull request (title, description, target branch, or reviewers). Only changed fields are applied; reviewers are preserved if not provided.
| Name | Required | Description | Default |
|---|---|---|---|
| prId | Yes | Pull request ID. | |
| title | No | New title. | |
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| reviewers | No | Replace reviewer list with these usernames. | |
| repository | Yes | Repository slug. | |
| description | No | New description. | |
| targetBranch | No | New target branch. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds behavioral detail beyond annotations: only changed fields applied, reviewers preserved if omitted. Annotations already indicate idempotent and non-destructive, so description complements well.
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?
One efficient sentence covering what the tool does and key behaviors, no 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?
Tool is simple update. Schema covers all params. Missing return value info and error handling, but reasonable for this type of 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 covers 100% of parameters with descriptions. Description adds minor nuance about reviewer preservation but doesn't explain other param behaviors beyond schema.
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?
Clear verb 'Update' with specific resources: title, description, target branch, or reviewers. Distinguishes from sibling create and merge 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?
Description implies use when modifying an existing PR but no explicit when-to-use vs alternatives like create_pull_request or merge_pull_request.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_attachmentB
Upload a file attachment to a repository. Returns a markdown reference to embed in PR comments or descriptions.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Project key. Defaults to BITBUCKET_DEFAULT_PROJECT. | |
| filePath | Yes | Absolute path to the file on the local filesystem. | |
| repository | Yes | Repository slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds little beyond the annotations. It states it uploads and returns a markdown reference, but does not disclose behavioral details like file size limits, overwrite behavior, permissions required, or rate limits. Annotations already indicate it is not read-only or idempotent.
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 two sentences with no unnecessary words. It front-loads the primary action and immediately states the return value. Every sentence serves a 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?
The description covers the basic purpose and return value, but with no output schema it could be more complete. It omits details like error handling, prerequisites, or whether the attachment is visible in the UI. Adequate but has gaps.
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 coverage is 100% with clear parameter descriptions. The description adds context about the return value (markdown reference) but does not elaborate on parameter constraints or relationships. Baseline 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 'Upload a file attachment to a repository' which is a specific verb-resource pairing. It also distinguishes from sibling tools like edit_file or create_pull_request by focusing on file attachments and their use (embedding in PR comments).
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 does not mention prerequisites, when not to use it, or suggest other tools for different scenarios (e.g., editing files directly).
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.
59 tool updates
v0.1.0- First observed
browse_repository - First observed
compare_refs - First observed
create_pull_request - First observed
create_repository - First observed
decline_pull_request - First observed
delete_repository - First observed
edit_file - First observed
fork_repository - First observed
get_build_status - First observed
get_code_insights - First observed
get_commit - First observed
get_commit_pull_requests - First observed
get_diff - First observed
get_file_blame - First observed
get_file_content - First observed
get_pull_request - First observed
get_pull_request_activity - First observed
get_pull_request_commits - First observed
get_server_info - First observed
get_tag - First observed
get_user_profile - First observed
list_branch_restrictions - First observed
list_branches - First observed
list_commit_comments - First observed
list_commits - First observed
list_dashboard_pull_requests - First observed
list_default_reviewer_conditions - First observed
list_forks - First observed
list_gpg_keys - First observed
list_labels - First observed
list_merge_checks - First observed
list_projects - First observed
list_pull_requests - First observed
list_repositories - First observed
list_repository_hooks - First observed
list_reviewer_groups - First observed
list_secret_scanning_rules - First observed
list_ssh_keys - First observed
list_tags - First observed
list_webhooks - First observed
manage_branches - First observed
manage_comment - First observed
manage_commit_comments - First observed
manage_deployments - First observed
manage_gpg_keys - First observed
manage_labels - First observed
manage_merge_checks - First observed
manage_repository_hooks - First observed
manage_review - First observed
manage_reviewer_groups - First observed
manage_ssh_keys - First observed
manage_tags - First observed
manage_webhooks - First observed
merge_pull_request - First observed
search - First observed
search_emoticons - First observed
search_users - First observed
update_pull_request - First observed
upload_attachment
TDQS
Most tools have distinct purposes, but with 59 tools, some overlap may occur (e.g., multiple 'manage' tools for different resources). However, naming and descriptions help differentiate.
All tools follow a consistent verb_noun pattern (e.g., list_branches, create_pull_request, manage_webhooks) with no mixing of conventions.
59 tools is excessive for a typical server. While the scope covers many Bitbucket features, many tools are narrow (e.g., manage_gpg_keys, list_ssh_keys) and could be consolidated, leading to a heavy surface.
The tool set covers a wide range of Bitbucket Server operations including browsing, commits, PRs, branches, tags, hooks, keys, and more. Minor gaps exist (e.g., no tool for creating projects directly), but overall coverage is strong.
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
Connect to Atlassian Jira, Confluence, and Compass to search, create, and manage your work.
Access the GitHub API, enabling file operations, repository management, search functionality, and…
Code intelligence for LLMs. Analyze, search, and retrieve code from any public git repository.
Plan Salesforce deploys, open pull requests and trigger pipelines from your AI client.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables management of Bitbucket Cloud pull requests through natural language, including creating, reviewing, approving, and commenting on PRs with automatic default reviewer support.791MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with Bitbucket Cloud and self-hosted instances for pull request reviews, code search, repository operations, and managing PR comments and approvals.19GPL 3.0
- AlicenseBqualityDmaintenanceEnables LLMs to interact with Bitbucket repositories to manage pull requests, branches, and commits through the Model Context Protocol. It supports repository operations such as searching code, accessing file contents, and comparing branches using natural language.165,033MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI systems to interact with Atlassian Bitbucket Server/Data Center for accessing projects, repositories, branches, files, and managing pull requests.MIT
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/Upendrasengar/bitbucket-server-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server