Skip to main content
Glama
TheTeamRAH

scm-broker-mcp

by TheTeamRAH

scm-broker-mcp

A provider-neutral MCP server for pull-request workflows on GitHub and Bitbucket Cloud. It uses the official Python MCP SDK and supports Streamable HTTP plus stdio.

Getting started

uv sync --dev
export GITHUB_TOKEN='…'                         # only if using GitHub
export BITBUCKET_EMAIL='you@example.com'         # only if using Bitbucket
export BITBUCKET_API_TOKEN='…'
uv run scm-broker-mcp-http                         # http://127.0.0.1:8000/mcp
# or: uv run scm-broker-mcp-stdio

The fourteen tools accept provider (github or bitbucket), repo (owner/name or workspace/slug), and operation-specific fields. Results have stable id, state, url, pagination, and optional raw fields. Credentials are never tool arguments or logs. Configure authentication at a reverse proxy before exposing the HTTP endpoint beyond localhost.

Related MCP server: Bitbucket MCP Server

Tools

list_repositories, list_pull_requests, get_pull_request, get_pull_request_diff, list_pull_request_commits, create_pull_request, update_pull_request, update_pull_request_reviewers, close_pull_request, merge_pull_request, add_pull_request_comment, list_pull_request_comments, list_pull_request_reviews, and submit_pull_request_review.

Bitbucket Cloud does not provide the same reviewer-update and review-submission semantics as GitHub; unsupported capabilities return structured unsupported_operation errors. Provider permissions and branch rules still apply.

Container deployment

Build from source without secrets:

FROM python:3.12-slim
COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv
WORKDIR /app
COPY . .
RUN uv sync --no-dev && useradd --uid 10001 --system broker
USER 10001
ENTRYPOINT ["uv", "run", "--no-dev", "scm-broker-mcp-http"]

Inject credentials at runtime, never into the image, source tree, files, URLs, or command line. Run as a dedicated non-root UID with a read-only root filesystem and dropped capabilities. Keep untrusted agents away from the server container's filesystem, process namespace, and secret-bearing environment. This assumes the deployment platform enforces container separation; environment credentials do not protect against a privileged agent sharing the container or host. Bind to localhost by default and use an authenticated reverse proxy for remote access.

Recent Features

Date

Purpose

Spec

Author

2026-09-13-17-39

Scoped pull-request MCP server

Scoped pull-request MCP server

whose-footprints-are-these

Repo Structure

src/scm_broker_mcp/  # server, service, schemas, provider adapters
tests/                # mocked contract and protocol tests
docs/features/        # approved feature specifications

Development

uv run pytest
uv build
uv lock --check
git diff --check

Contributing

This is an AI-first repository. Read AGENTS.md, use a reviewed feature specification, work on a focused branch, and follow test-driven development. Do not commit credentials or generated environments.

Available Tools

14 tools
add_pull_request_commentB

Add a comment to a pull request.

Args: provider: Provider key. repo: Repository identity. pull_request_id: Provider pull-request identifier. body: Comment text. raw: Include the provider payload.

Returns: Normalized write-result mapping.

Examples: Input: {"repo": "o/r", "pull_request_id": "7", "body": "Looks good"}. Output: {"id": "comment-1", "state": "", ...}.

ParametersJSON Schema
NameRequiredDescriptionDefault
rawNo
bodyYes
repoYes
providerYes
pull_request_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

No annotations are provided, so the description is the only source of behavioral context. It discloses that the tool writes a comment, returns a 'Normalized write-result mapping', and that raw includes the provider payload. However, it does not cover permissions, reversibility, side effects, or 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.

Conciseness4/5

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

The description is compact and well-structured with labeled Args, Returns, and Examples sections. The example input/output is useful and adds concrete context. The only minor redundancy is that the first line restates the tool name.

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

Completeness3/5

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

For a straightforward write tool with an output schema, the description provides enough to make an initial call: all parameters are listed, an example is given, and the return shape is summarized. However, missing provider-key vocabulary and repo/pull_request_id format details leave room for incorrect invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so the Args block must compensate, but it mostly restates parameter names: 'provider: Provider key' and 'repo: Repository identity' are vague, while only 'body: Comment text' and 'raw: Include the provider payload' add real meaning. Accepted provider keys and repo/pull_request_id formats are not specified.

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

Purpose4/5

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

The opening sentence clearly states the action and resource: 'Add a comment to a pull request.' This makes the tool's purpose obvious and distinguishes it from sibling list/merge/review operations, though it does not explicitly contrast it with submit_pull_request_review.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus alternatives like list_pull_request_comments or submit_pull_request_review, and no exclusions or prerequisites are mentioned. The example implies use when posting a comment, but that is inferred rather than stated.

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

close_pull_requestB

Close or decline a pull request.

Args: provider: Provider key. repo: Repository identity. pull_request_id: Provider pull-request identifier. raw: Include the provider payload.

Returns: Normalized write-result mapping with the resulting state.

Examples: Input: {"repo": "o/r", "pull_request_id": "7"}. Output: {"id": "7", "state": "closed", ...}.

ParametersJSON Schema
NameRequiredDescriptionDefault
rawNo
repoYes
providerYes
pull_request_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It states 'Normalized write-result mapping' and shows an example output, but it omits key behavioral details: side effects, required permissions, reversibility, or what distinguishes 'close' from 'decline.' The write nature is implied but not elaborated, and there's no mention of error conditions.

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

Conciseness4/5

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

The description is compact and well-structured: a one-line summary, then Args, Returns, and Examples. It front-loads the action and avoids fluff. The example is helpful for understanding the output. Slight redundancy exists in the Returns and Example sections, but overall it's efficient.

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

Completeness3/5

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

The description provides an example output and mentions a normalized write-result mapping, which partially covers the return behavior. However, it lacks essential context: the difference between close and decline, prerequisites (e.g., PR must be open), or any error handling. Given the output schema exists (though not shown), some return details are covered, but the operational nuances are missing.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. The Args section gives a short label for each parameter: 'provider: Provider key,' 'repo: Repository identity,' 'pull_request_id: Provider pull-request identifier,' and 'raw: Include the provider payload.' These are minimal and somewhat vague (e.g., what is a 'provider key'?), but they do add meaning beyond the bare schema names. The example demonstrates usage but omits the provider parameter.

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

Purpose5/5

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

The description opens with 'Close or decline a pull request,' which is a specific verb-resource pair that clearly distinguishes it from siblings like merge_pull_request or update_pull_request. The addition of 'or decline' captures a nuance that makes the tool's role explicit, and the example input/output reinforces the intent.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. It doesn't explain when to close versus decline, nor does it mention conditions like whether the PR must be open or what happens if it's already closed. No explicit exclusions or cross-references to sibling tools are given.

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

create_pull_requestB

Create a pull request from one branch into another.

Args: provider: Provider key. repo: Repository identity. title: Pull-request title. source_branch: Source branch name. target_branch: Destination branch name. description: Optional body text. raw: Include the provider payload.

Returns: Normalized write-result mapping with identifier, state, and URL fields.

Examples: Input: {"repo": "o/r", "title": "Fix", "source_branch": "bug", "target_branch": "main"}. Output: {"id": "8", "state": "open", "url": "https://...", ...}.

ParametersJSON Schema
NameRequiredDescriptionDefault
rawNo
repoYes
titleYes
providerYes
descriptionNo
source_branchYes
target_branchYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description must bear the full burden of behavioral disclosure. It mentions it is a write operation ('Create') and describes the return format, but lacks context on what happens on errors, whether the PR is immediately visible, or any side effects like triggering CI. This is a significant gap for a mutation tool.

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

Conciseness4/5

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

The description is concise and well-structured: it starts with a clear one-liner purpose, then lists parameters, returns, and an example. It front-loads the essential info and avoids unnecessary prose. The example is compact and illustrative.

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

Completeness3/5

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

Despite having an output schema, the description provides some return context ('Normalized write-result mapping with identifier, state, and URL fields') and an example. However, it doesn't explain how the required provider and repo parameters are resolved (e.g., aliases, defaults), or any validation rules. For a tool with 7 parameters and no enum hints, more contextual guidance would improve completeness.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate. It lists each parameter with a brief role (e.g., 'Source branch name'), but doesn't add additional meaning like allowed values for provider, repo format, or constraints like 'provider must be one of...' The description makes the parameters understandable but leaves room for deeper semantics.

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

Purpose5/5

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

The description states a specific verb ('Create'), resource ('pull request from one branch into another'), and the key parameters (source_branch, target_branch). It clearly distinguishes this from sibling tools like 'update_pull_request' or 'merge_pull_request' by specifying it creates a new PR.

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

Usage Guidelines3/5

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

The description explains the tool's function but does not provide explicit guidance on when to use it versus alternatives. It doesn't mention prerequisites like branch existence or permissions, and doesn't contrast with 'update_pull_request' or 'close_pull_request'.

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

get_pull_requestA

Get one pull request.

Args: provider: Provider key. repo: Repository identity. pull_request_id: Provider pull-request identifier. raw: Include the provider payload.

Returns: Normalized pull-request mapping with id, title, state, and url.

Examples: Input: {"provider": "github", "repo": "o/r", "pull_request_id": "7"}. Output: {"id": "7", "title": "Fix", "state": "open", ...}.

ParametersJSON Schema
NameRequiredDescriptionDefault
rawNo
repoYes
providerYes
pull_request_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are present, so the description carries the disclosure burden. It does this well for a read operation: the verb 'get' implies no mutation, it returns a normalized mapping with named fields, and it explains that raw includes the provider payload. It does not discuss not-found or auth failure behavior, but those are not critical for this simple getter.

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

Conciseness5/5

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

The description is compact, front-loaded with the core action, and organized into Args, Returns, and Examples sections. Every sentence adds information; there is no filler or duplication.

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

Completeness5/5

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

For a simple getter with four flat parameters and an output schema, the description is complete: it defines each argument, states the normalized return shape, explains the raw flag, and gives an input/output example. Nothing critical is missing for an agent to call the tool correctly.

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

Parameters4/5

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

Input-schema descriptions are absent (0% coverage), so the description must supply meaning. It provides short glosses for all four parameters and reinforces them with a concrete GitHub example. It stops short of enumerating valid provider values or repo formats, so it is helpful but not exhaustive.

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

Purpose5/5

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

The description opens with 'Get one pull request,' a specific verb and resource, and the word 'one' distinguishes it from list-style siblings like list_pull_requests. The Args/Returns sections make the tool's role unmistakable.

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

Usage Guidelines3/5

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

Usage is only implied by 'Get one pull request' and the pull_request_id parameter: the agent can infer this is for fetching a single PR by ID. There is no explicit when-to-use versus list_pull_requests, get_pull_request_diff, or update_pull_request, so the guidance is adequate but not explicit.

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

get_pull_request_diffB

Get a pull request unified diff.

Args: provider: Provider key. repo: Repository identity. pull_request_id: Provider pull-request identifier.

Returns: Mapping shaped as {"diff": str, "raw": None}.

Examples: Input: {"provider": "github", "repo": "o/r", "pull_request_id": "7"}. Output: {"diff": "diff --git ...", "raw": None}.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
providerYes
pull_request_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral disclosure burden. It implies a read-only operation via the verb 'Get' and shows the output shape, but it does not explicitly state that it has no destructive side effects, nor does it cover auth requirements, errors, or diff truncation behavior.

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

Conciseness5/5

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

The description is front-loaded with the core purpose and then cleanly organized into `Args`, `Returns`, and `Examples` sections. The example input/output pairs are directly useful and no sentence is wasted.

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

Completeness3/5

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

For a fairly simple read tool with three required string parameters, the description covers the basic call path and gives an illustrative example. It is not fully complete because it leaves provider key values ambiguous, does not explain the `raw` field, and says nothing about what happens when a PR has no diff or is hidden. The existing output schema reduces the need to describe returns, but the provider ambiguity remains a real gap.

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

Parameters3/5

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

The schema has 0% description coverage, so the description must add semantic value. It provides arg names plus example values (`provider: 'github'`, `repo: 'o/r'`, `pull_request_id: '7'`), which clarifies expected format better than the schema. However, the prose descriptions like 'Provider key' and 'Repository identity' are vague and do not enumerate valid provider values or the full repo format.

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

Purpose4/5

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

The description opens with a specific verb and resource: 'Get a pull request unified diff.' This clearly identifies what the tool does and distinguishes it from `list_pull_requests` or `get_pull_request` through the 'unified diff' object. It does not explicitly name any sibling alternative, so it stops short of a full 5.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool instead of siblings such as `get_pull_request` or `list_pull_request_commits`, nor any mention of prerequisites or exclusions. Usage must be inferred entirely from the tool name and description.

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

list_pull_request_commentsA

List comments attached to a pull request.

Args: provider: Provider key. repo: Repository identity. pull_request_id: Provider pull-request identifier. page: One-based page number. page_size: Number of results, from 1 through 100. raw: Include provider payloads.

Returns: Page mapping containing normalized comment items.

Examples: Input: {"repo": "o/r", "pull_request_id": "7", "page": 1}. Output: {"items": [{"id": "comment-1", ...}], ...}.

ParametersJSON Schema
NameRequiredDescriptionDefault
rawNo
pageNo
repoYes
providerYes
page_sizeNo
pull_request_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations present, the description carries the behavioral burden. It explains that results are a 'Page mapping containing normalized comment items,' that pagination is one-based and limited, and that raw provider payloads can be included. This is meaningful behavioral detail for a read-only list operation, though sort order and error behavior are not covered.

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

Conciseness5/5

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

The description is compact, uses a clear Args/Returns/Examples structure, and includes a concrete input/output pair that demonstrates the expected shape. No sentence is redundant or filler.

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

Completeness4/5

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

For a read-only paginated list operation, the description covers all required parameters and the return shape. It is missing only explicit usage-selection guidance and minor details like page_size defaults and possible provider-specific constraints, but schema defaults cover the numeric defaults.

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

Parameters5/5

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

Schema descriptions are absent (0% coverage), but the Args section documents all six parameters with useful semantics, including the one-based page, the 1-100 page_size bound, and the effect of raw. This fully compensates for the bare JSON schema.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'List comments attached to a pull request.' This clearly identifies the object (comments) and scope (pull request), and distinguishes it from sibling tools like list_pull_request_commits and list_pull_request_reviews by the artifact type.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool rather than a sibling such as list_pull_request_reviews or list_pull_request_commits, and no exclusions or prerequisites are stated. The example shows an invocation but not the selection criteria, so usage is left entirely to the agent's inference.

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

list_pull_request_commitsB

List commits associated with a pull request.

Args: provider: Provider key; repo and pull_request_id identify the PR. page: One-based page number. page_size: Number of results, from 1 through 100. raw: Include provider payloads.

Returns: Page mapping containing normalized commit items.

Examples: Input: {"provider": "github", "repo": "o/r", "pull_request_id": "7"}. Output: {"items": [{"id": "abc", ...}], "page": 1, ...}.

ParametersJSON Schema
NameRequiredDescriptionDefault
rawNo
pageNo
repoYes
providerYes
page_sizeNo
pull_request_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Since no annotations are provided, the description must carry the burden of disclosing behavior. It mentions pagination (page, page_size) and the 'raw' flag to include provider payloads, which gives some behavioral context. However, it does not disclose whether the tool is read-only or safe, error handling, or rate limits. For a read-only listing tool, the impact is lower, but still the description could add safety or side-effect note.

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

Conciseness4/5

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

The description is concise and well-organized with sections for Args, Returns, and Examples. The main intent is front-loaded in the first line. The additional details are relevant and not redundant. It could be slightly tighter by trimming redundant mentions, but overall it is efficient and structured.

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

Completeness4/5

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

Given that there is an output schema, the description does not need to explain return values in detail, and it does provide a brief example. The complexity is moderate (list with pagination), and the description covers pagination and raw payload inclusion, which are the non-obvious parts. However, it lacks usage guidance and some parameter semantics, but given the output schema and clarity of purpose, it is largely complete. Minor gaps prevent a higher score.

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

Parameters2/5

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

Schema description coverage is 0%, meaning the schema does not explain any parameters. The description does provide some meaning for a few: it explains that 'provider', 'repo', and 'pull_request_id' identify the PR, and it gives ranges for page_size (1 through 100) and examples for raw. However, it does not describe the expected format or semantics for 'page', 'page_size', or 'raw' in detail. Since coverage is 0%, the description must compensate but only partially does.

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

Purpose5/5

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

The description clearly identifies the action ('List commits') and the resource ('associated with a pull request'). It also provides the key identifying parameters (provider, repo, pull_request_id), which distinguishes it from sibling tools like list_pull_requests and get_pull_request_diff. The purpose is unambiguous and specific.

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

Usage Guidelines2/5

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

The description provides basic instructions on what each parameter does and includes an example, which is helpful. However, it does not explicitly state when to use this tool versus alternatives, nor does it mention any prerequisites or context (e.g., 'Use this to get the commit history of a PR, whereas get_pull_request_diff shows changes'). The example implicitly suggests usage, but there is no direct guidance for selection or exclusion.

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

list_pull_request_reviewsA

List reviews attached to a pull request.

Args: provider: Provider key. repo: Repository identity. pull_request_id: Provider pull-request identifier. page: One-based page number. page_size: Number of results, from 1 through 100. raw: Include provider payloads.

Returns: Page mapping containing normalized review items.

Examples: Input: {"repo": "o/r", "pull_request_id": "7", "page": 1}. Output: {"items": [{"id": "review-1", ...}], ...}.

ParametersJSON Schema
NameRequiredDescriptionDefault
rawNo
pageNo
repoYes
providerYes
page_sizeNo
pull_request_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does well by explaining pagination semantics, the page_size range, the raw flag's effect, and the normalized page-mapping return shape. It does not explicitly state that the operation is read-only or discuss auth/rate limits, but 'List' and the return description make the non-mutating nature sufficiently clear.

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

Conciseness5/5

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

The description is well-organized and efficient: a one-line summary, an Args list with one line per parameter, a Returns note, and a concrete example. Every sentence or line adds useful information, and the most important information is front-loaded.

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

Completeness4/5

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

For a straightforward list operation with an output schema and six parameters, the description is complete enough: it documents all required and optional parameters, clarifies raw behavior and pagination, and provides an example. It could be more complete by naming alternatives or noting any provider-specific caveats, but nothing essential for calling the tool correctly is missing.

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

Parameters5/5

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

Because schema description coverage is 0%, the description must compensate, and it does. Every parameter receives a meaningful explanation beyond the schema's titles and types: page is 'One-based,' page_size is bounded 'from 1 through 100,' and raw is defined as 'Include provider payloads.' The example also gives concrete context for the repo and pull_request_id format.

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

Purpose4/5

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

The description opens with a clear, specific verb and resource: 'List reviews attached to a pull request.' This makes the tool's function immediately understandable and distinguishes it from the sibling tools by focusing on reviews rather than comments or diffs. However, it does not explicitly contrast itself with list_pull_request_comments or other alternatives, so it lacks the strongest sibling differentiation.

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

Usage Guidelines3/5

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

The intended use is implied by the resource: an agent needing to list reviews on a pull request should use this tool. There is no explicit guidance about when to prefer this tool over list_pull_request_comments or other review-related operations, nor any stated exclusions or prerequisites. This is adequate but relies on the agent inferring the use case from the purpose statement.

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

list_pull_requestsA

List pull requests in a repository.

Args: provider: Provider key. repo: Repository in owner/name or workspace/slug form. state: Provider pull-request state filter. page: One-based page number. page_size: Number of results, from 1 through 100. raw: Include provider payloads.

Returns: Page mapping with normalized pull-request items.

Examples: Input: {"provider": "github", "repo": "o/r", "state": "open"}. Output: {"items": [{"id": "7", "state": "open", ...}], ...}.

ParametersJSON Schema
NameRequiredDescriptionDefault
rawNo
pageNo
repoYes
stateNoopen
providerYes
page_sizeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden of explaining behavior. It discloses that the result is a page mapping with normalized pull-request items, and that enabling raw includes provider payloads. This goes beyond the schema and gives an agent a useful model of the response shape and raw-mode side behavior.

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

Conciseness5/5

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

The description is compact, front-loaded with the core action, and organized into Args, Returns, and Examples sections. Every sentence adds practical information, and the example clarifies both input and the normalized output shape without redundancy.

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

Completeness4/5

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

For a read-only list operation with six parameters, the description covers the invocation essentials: parameters, pagination, raw payload behavior, and a concrete output example. It does not address provider-specific auth requirements or error conditions, but these are not essential for an agent to select and call this tool correctly.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must add meaning to all six parameters. It usefully defines the repo format as owner/name or workspace/slug, page as one-based, page_size as 1 through 100, and raw as including provider payloads. It stops short of enumerating provider key values or state filter options, which remain ambiguous.

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

Purpose5/5

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

The description opens with a clear verb and resource: "List pull requests in a repository." It is immediately distinguishable from sibling tools like get_pull_request, list_pull_request_commits, and list_pull_request_comments because it targets the pull-request collection itself rather than a single PR or a related sub-resource. The example input and output reinforce this purpose.

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

Usage Guidelines3/5

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

The description and example make it obvious that this tool is for enumerating pull requests in a repository, but it does not explicitly say when to prefer it over alternatives such as get_pull_request for a single PR or list_pull_request_reviews for reviews. Usage is implied rather than explicitly scoped with when/when-not guidance.

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

list_repositoriesA

List repositories visible to the authenticated provider account.

Args: provider: "github" or "bitbucket". workspace: Optional Bitbucket workspace or GitHub repository scope. page: One-based page number. page_size: Number of results, from 1 through 100. raw: Include provider payloads.

Returns: Page mapping with items, page, page_size, and has_more.

Examples: Input: {"provider": "github", "page": 1, "page_size": 30}. Output: {"items": [{"id": "1", ...}], "page": 1, "page_size": 30, "has_more": False}.

ParametersJSON Schema
NameRequiredDescriptionDefault
rawNo
pageNo
providerYes
page_sizeNo
workspaceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It does establish read-only behavior ('List repositories visible...') and documents the response shape, but it does not mention authentication requirements, rate limits, or edge semantics such as the exact meaning of has_more or raw=true.

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

Conciseness5/5

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

The description is front-loaded with a one-sentence summary followed by compact Args, Returns, and Examples sections. Every section adds useful semantic information, and the example input/output pair clarifies expected behavior without filler.

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

Completeness4/5

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

For a paginated list tool, the description covers provider values, workspace semantics, pagination bounds, raw behavior, and the response contract. It lacks explicit error-case or rate-limit notes, but these are less critical for a read-only list operation with an output schema already present.

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

Parameters5/5

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

Schema description coverage is 0%, so the description fully compensates by explaining all five parameters: provider allowed values, workspace scope, one-based page, page_size range 1-100, and raw behavior. This adds substantial meaning beyond the bare schema types and defaults.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'List repositories visible to the authenticated provider account.' It clearly establishes the tool's scope and is easily distinguished from the sibling pull-request tools, which operate on 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.

Usage Guidelines3/5

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

The usage context is implied by the resource name and sibling names, but the description never explicitly states when to choose this tool over list_pull_requests or other alternatives. There is no 'use when...' or exclusion guidance, so an agent must infer applicability.

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

merge_pull_requestA

Merge a pull request using an explicit provider-supported method.

Args: provider: Provider key. repo: Repository identity. pull_request_id: Provider pull-request identifier. merge_method: One of merge, squash, or rebase. raw: Include the provider payload.

Returns: Normalized write-result mapping with resulting state and URL.

Examples: Input: {"repo": "o/r", "pull_request_id": "7", "merge_method": "squash"}. Output: {"id": "7", "state": "merged", ...}.

ParametersJSON Schema
NameRequiredDescriptionDefault
rawNo
repoYes
providerYes
merge_methodNomerge
pull_request_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral disclosure burden. It does disclose that this is a write operation returning a normalized write-result with state and URL, and the example shows a 'merged' state. However, it does not mention side effects such as permanent branch changes, required permissions, or failure conditions when a merge is not possible.

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

Conciseness5/5

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

The description is well-structured with Args, Returns, and Examples sections. Every sentence adds value, the main action is front-loaded, and there is no repetition of schema defaults or redundant filler.

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

Completeness3/5

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

The description covers all parameters, shows an example, and describes the return mapping, which is enough for basic invocation. However, as a mutation tool with no annotations, it omits side-effect and precondition details such as whether the operation can be reverted, what happens on merge conflict, or whether specific provider permissions are required.

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

Parameters5/5

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

Schema description coverage is 0%, and the description compensates fully by defining every parameter: provider, repo, pull_request_id, merge_method with allowed values, and raw. The example input/output adds concrete context that the raw schema does not provide.

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

Purpose5/5

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

The description opens with a specific verb and object, 'Merge a pull request', making the core action unmistakable. It also distinguishes this from siblings like close_pull_request and update_pull_request by focusing on merging and producing a merged state.

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

Usage Guidelines3/5

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

The intended use is implied by the name and verb, and the 'merge_method' description clarifies which merge strategies are available. However, there is no explicit statement about when to prefer this over close_pull_request or update_pull_request, nor any mention of conditions such as 'PR must be approved before merging'.

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

submit_pull_request_reviewA

Submit an approve, request-changes, or comment review.

Args: provider: Provider key. repo: Repository identity. pull_request_id: Provider pull-request identifier. event: approve, request_changes, or comment. body: Optional review body. raw: Include the provider payload.

Returns: Normalized write-result mapping, or a structured error mapping.

Examples: Input: {"repo": "o/r", "pull_request_id": "7", "event": "approve"}. Output: {"id": "7", "state": "approved", ...} or an error shape.

ParametersJSON Schema
NameRequiredDescriptionDefault
rawNo
bodyNo
repoYes
eventYes
providerYes
pull_request_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the return format ('Normalized write-result mapping, or a structured error mapping') but does not mention that this is a write operation affecting the PR, nor any required permissions, side effects, or idempotency. It adds value over an empty description but leaves key behavioral aspects undisclosed.

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

Conciseness5/5

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

The description is well-structured with an Args section, a Returns section, and a concrete example. The purpose is front-loaded in the first sentence, and the formatting (code blocks, bullet points) makes it easy to scan. Every sentence contributes value, with no fluff.

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

Completeness4/5

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

The description covers all six parameters, describes the return shape, and provides an input/output example. Since an output schema exists, detailed return fields are not needed in the description. It does not mention potential side effects or prerequisites, but given the tool's moderate complexity and the presence of an output schema, it is reasonably complete.

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

Parameters4/5

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

Schema coverage is 0%, meaning the schema provides no parameter descriptions. The description compensates by listing every parameter with a brief explanation, notably clarifying the 'event' values ('approve', 'request_changes', 'comment'), that 'body' is optional, and what 'raw' does. This adds meaning beyond the schema's bare titles, though it lacks types and constraints.

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

Purpose5/5

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

The description starts with 'Submit an approve, request-changes, or comment review,' a specific verb (submit) and resource (pull request review) that clearly distinguishes this from sibling tools like add_pull_request_comment or merge_pull_request. The purpose is immediately unambiguous.

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

Usage Guidelines3/5

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

The description explains what the tool does but provides no explicit guidance on when to choose it over alternatives. Sibling tools such as add_pull_request_comment or list_pull_request_reviews serve distinct purposes, but the description does not mention them or give conditions for use. The context is implied by the action, but explicit direction is missing.

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

update_pull_requestA

Update a pull-request title or description.

Args: provider: Provider key. repo: Repository identity. pull_request_id: Provider pull-request identifier. title: Optional replacement title. description: Optional replacement body. raw: Include the provider payload.

Returns: Normalized write-result mapping.

Examples: Input: {"repo": "o/r", "pull_request_id": "7", "title": "Updated"}. Output: {"id": "7", "title": "Updated", "state": "open", ...}.

ParametersJSON Schema
NameRequiredDescriptionDefault
rawNo
repoYes
titleNo
providerYes
descriptionNo
pull_request_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral disclosure burden. It does communicate that this is a write operation and that the return value is a normalized write-result mapping, plus the optional raw payload behavior. It does not mention permissions, no-op behavior when both title and description are omitted, or side effects, leaving some gaps.

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

Conciseness5/5

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

The description is compact and well-structured: a one-sentence purpose, an Args section, a Returns section, and a concrete input/output example. Every element earns its place without redundancy.

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

Completeness4/5

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

For a six-parameter mutation tool with no annotations and zero schema description coverage, the description covers the core invocation needs: all parameters are explained, the return shape is stated, and an example is provided. It lacks deeper caveats like field-format requirements, but it is sufficiently complete for normal use.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It lists all six parameters with meaningful one-line definitions, including 'Optional replacement title', 'Optional replacement body', and 'Include the provider payload'. The definitions are somewhat terse but provide value beyond the bare schema titles.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Update a pull-request title or description.' This clearly distinguishes it from siblings like update_pull_request_reviewers, create_pull_request, or close_pull_request.

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

Usage Guidelines4/5

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

The intended use is clear from the stated purpose and parameter list, so an agent can infer when to choose it over related tools. It does not explicitly name alternatives or exclusion cases, but the context is unambiguous enough for most selection scenarios.

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

update_pull_request_reviewersB

Request reviewers when supported by the provider.

Args: provider: Provider key. repo: Repository identity. pull_request_id: Provider pull-request identifier. reviewers: Reviewer usernames or account identifiers.

Returns: Normalized provider write-result mapping.

Examples: Input: {"repo": "o/r", "pull_request_id": "7", "reviewers": ["alice"]}. Output: {"id": "7", "state": "", "raw": None, ...}.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
providerYes
reviewersYes
pull_request_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It does reveal that this is a write operation, notes provider-dependent support, and describes the return as a "Normalized provider write-result mapping" with an example. However, it does not disclose whether reviewers are replaced or appended, what happens on unsupported providers, or any failure behavior.

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

Conciseness4/5

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

The description is well-structured with a one-sentence purpose, an Args list, a Returns line, and a concrete example. It is compact and front-loaded, with no filler or repetition of the tool name.

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

Completeness3/5

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

The presence of an output schema covers return-value expectations, and the example provides a useful concrete call. Still, for a mutation operation with no annotations, the description leaves out important context such as reviewer-set replacement semantics, provider support details, and validation rules, so an agent may not fully understand side effects before invoking it.

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

Parameters3/5

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

Schema description coverage is 0%, so the Args section is the only parameter documentation. It gives one-line meanings for all four parameters, adding terms like "key", "identity", and "usernames or account identifiers", which is helpful but still vague about expected formats and provider-specific values. It compensates minimally for the absent schema descriptions.

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

Purpose4/5

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

The description opens with a specific verb and resource: "Request reviewers" for a pull request, which clearly identifies the operation. It goes beyond a tautology, but it does not explicitly differentiate itself from closely related siblings such as submit_pull_request_review or update_pull_request.

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

Usage Guidelines2/5

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

The phrase "when supported by the provider" hints at a key condition, but the description gives no guidance about when to choose this tool over siblings, what prerequisites are needed, or what circumstances make the operation unsupported. There is no explicit when-to-use or when-not-to-use guidance.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 14 tool updatesv0.1.0
    • First observedadd_pull_request_comment
    • First observedclose_pull_request
    • First observedcreate_pull_request
    • First observedget_pull_request
    • First observedget_pull_request_diff
    • First observedlist_pull_request_comments
    • First observedlist_pull_request_commits
    • First observedlist_pull_request_reviews
    • First observedlist_pull_requests
    • First observedlist_repositories
    • First observedmerge_pull_request
    • First observedsubmit_pull_request_review
    • First observedupdate_pull_request
    • First observedupdate_pull_request_reviewers

TDQS

A3.8/5.0

Scored across 14 tools

Disambiguation5/5

Each tool targets a distinct resource-action pair: repository listing versus pull request listing, and PR-specific tools are cleanly separated by diff, commits, comments, reviews, close, merge, and reviewer assignment. Even similar operations like update_pull_request_reviewers and submit_pull_request_review are unambiguous from their names and arguments.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern using list_, get_, create_, update_, close_, merge_, add_, and submit_. The plural/singular variations are grammatical and predictable, making the API easy to navigate.

Tool Count5/5

14 tools is a well-scoped size for an SCM broker covering repository discovery and full pull request workflows. Every tool serves a meaningful purpose without redundancy or filler.

Completeness4/5

The pull request lifecycle is thoroughly covered: reading, creating, updating, closing, merging, commenting, and reviewing. The repository side is thin (only list_repositories, no get/create), and comments/reviews lack update/delete operations, but these are minor gaps agents can work around.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers