Skip to main content
Glama

GitVerse MCP Server

MCP-сервер (Model Context Protocol) для работы с GitVerse — российским сервисом хостинга репозиториев. Сервер даёт AI-ассистентам (Cursor, Claude Desktop, ZCode и любым MCP-клиентам) доступ к вашим репозиториям, pull request'ам и CI: можно листать и создавать PR, проводить code review — оставлять инлайн-комментарии к диффу, ставить вердикты approve / request changes / decline, назначать исполнителей и лейблы, запускать и разбирать CI-раны вплоть до логов джоб.

Набор из 25 инструментов повторяет семантику популярного bitbucket-mcp: привычные имена (getPullRequests, approvePullRequest, addPullRequestComment…), но поверх REST API GitVerse.

License: MIT Node MCP npm version GitHub Repository

Обзор

Сервер реализует стандарт Model Context Protocol и предоставляет инструменты для:

  • Репозитории — список своих или репозиториев организации, карточка репозитория

  • Pull request'ы — список с фильтром по состоянию, создание (включая черновики), правка заголовка/описания/состояния/базовой ветки, коммиты и изменённые файлы PR, таймлайн активности

  • Code review — инлайн-комментарии к конкретным строкам диффа, комментарии обсуждения (создание/правка/удаление), вердикты: одобрить, запросить изменения, заклонить, снять своё одобрение

  • Назначения — assignees и labels на PR (PR в GitVerse является issue)

  • CI — ран-ы GitVerse Actions (аналог Bitbucket Pipelines): список с фильтрами, карточка рана, запуск workflow, джобы и их логи

Все операции выполняются через официальный публичный REST API GitVerse: заголовки Authorization: Bearer и вендорный Accept: application/vnd.gitverse.object+json; version=1 выставляются автоматически, ответы 429 автоматически повторяются с учётом Retry-After.

Инструменты на одном экране

Группа

Инструменты

Репозитории

listRepositories · getRepository

Pull request'ы

getPullRequests · createPullRequest · createDraftPullRequest · getPullRequest · updatePullRequest · getPullRequestActivity · getPullRequestCommits · getPullRequestDiff

Вердикты ревью

approvePullRequest · unapprovePullRequest · requestChanges · removeChangeRequest · declinePullRequest

Комментарии

getPullRequestComments · addPullRequestComment · updatePullRequestComment · deletePullRequestComment

CI (Actions)

listPipelineRuns · getPipelineRun · runPipeline · getPipelineSteps · getPipelineStep · getPipelineStepLogs

Related MCP server: GitLab API MCP Server

Установка

Через NPX (рекомендуется)

Запуск без глобальной установки:

GITVERSE_TOKEN="ваш-токен" npx -y @grigoriy-grisha/gitverse-mcp@latest

Ручная установка

Либо установите глобально или в проект:

# Глобально
npm install -g @grigoriy-grisha/gitverse-mcp

# Или в проект
npm install @grigoriy-grisha/gitverse-mcp

Затем запускайте:

# Глобальная установка
GITVERSE_TOKEN="ваш-токен" gitverse-mcp

# Установка в проект
GITVERSE_TOKEN="ваш-токен" npx @grigoriy-grisha/gitverse-mcp

Требуется Node.js 20 или выше.

Настройка

Переменные окружения

Переменная

Описание

Обязательна

GITVERSE_TOKEN

Персональный токен GitVerse (см. ниже)

Да

GITVERSE_BASE_URL

База API. По умолчанию https://api.gitverse.ru

Нет

GITVERSE_API_VERSION

Версия вендорного media type. По умолчанию 1

Нет

Создание токена GitVerse

  1. Войдите в ваш аккаунт на gitverse.ru

  2. Откройте Настройки → Управление токенами

  3. Создайте новый токен с правами:

    • Репозитории: чтение, запись

    • Issues / Pull requests: чтение, запись

    • CI/CD (Actions): чтение, запись — нужно для тулов *Pipeline*

  4. Скопируйте сгенерированный токен и используйте его как GITVERSE_TOKEN

Подробности — в документации по токенам.

Интеграция с клиентами

ZCode

Добавьте в конфигурацию MCP (~/.zcode/mcp.json или настройка проекта):

{
  "mcpServers": {
    "gitverse": {
      "command": "npx",
      "args": ["-y", "@grigoriy-grisha/gitverse-mcp@latest"],
      "env": {
        "GITVERSE_TOKEN": "ваш-токен"
      }
    }
  }
}

Claude Desktop

В файле claude_desktop_config.json:

{
  "mcpServers": {
    "gitverse": {
      "command": "npx",
      "args": ["-y", "@grigoriy-grisha/gitverse-mcp@latest"],
      "env": {
        "GITVERSE_TOKEN": "ваш-токен"
      }
    }
  }
}

Cursor

  1. Откройте Settings → Extensions → Model Context Protocol

  2. Добавьте конфигурацию:

"gitverse": {
  "command": "npx",
  "env": {
    "GITVERSE_TOKEN": "ваш-токен"
  },
  "args": ["-y", "@grigoriy-grisha/gitverse-mcp@latest"]
}

Локальная сборка для разработки

Если правите сервер локально и хотите проверить изменения:

"gitverse-local": {
  "command": "node",
  "env": {
    "GITVERSE_TOKEN": "ваш-токен"
  },
  "args": ["/путь/к/gitverse-mcp/dist/index.js"]
}

Устранение неполадок

Ошибки 401 Unauthorized

  1. Проверьте токен: убедитесь, что используете персональный токен из «Управление токенами», а не пароль аккаунта

  2. Проверьте права токена: для базовых операций нужно «Репозитории: чтение»; для вердиктов и комментариев — запись

  3. Проверьте токен вручную через curl:

curl -H "Authorization: Bearer ваш-токен" \
     -H "Accept: application/vnd.gitverse.object+json; version=1" \
     "https://api.gitverse.ru/user"

Ошибки 429 Too Many Requests

API GitVerse ограничивает 2000 запросов в час на пользователя. Сервер автоматически повторяет такие запросы с учётом заголовка Retry-After (до 3 попыток). Если лимиты всё равно исчерпываются — снизьте частоту вызовов в сценарии ассистента.

Ошибки 400 VALIDATION_ERROR

Проверьте, что токен передаётся вместе с вендорным заголовком Accept: application/vnd.gitverse.object+json; version=1 — без него шлюз GitVerse отвечает 400. При работе через этот MCP-сервер заголовок ставится автоматически, ошибка возникает только при ручных curl-проверках.

Доступные инструменты

Сервер предоставляет 25 инструментов для работы с репозиториями, PR и CI. Полный список по группам:

Если не указано иное, листинги (listRepositories, getPullRequests, getPullRequestCommits, listPipelineRuns) принимают опциональные параметры пагинации:

  • page (optional): номер страницы, начиная с 1. По умолчанию возвращается первая страница.

  • per_page (optional): количество элементов на странице.

Репозитории

listRepositories

Возвращает список репозиториев.

Параметры:

  • org (optional): имя организации — если указано, возвращаются репозитории организации; иначе — репозитории текущего пользователя

  • page (optional), per_page (optional): пагинация

getRepository

Возвращает карточку репозитория.

Параметры:

  • owner: владелец репозитория (пользователь или организация)

  • repo: имя репозитория

Pull request'ы

getPullRequests

Возвращает pull request'ы репозитория.

Параметры:

  • owner: владелец

  • repo: имя репозитория

  • state (optional): состояние PR — open или closed

  • page (optional), per_page (optional): пагинация

createPullRequest

Создаёт pull request из ветки head в ветку base.

Параметры:

  • owner: владелец

  • repo: имя репозитория

  • title: заголовок PR

  • head: исходная ветка

  • base: целевая ветка

  • body (optional): описание PR (markdown)

  • draft (optional): создать как черновик

  • assignees (optional): список username для назначения

  • labels (optional): список лейблов

Примечание: запрос ревьюеров (reviewers) в API GitVerse отсутствует — используйте assignees.

createDraftPullRequest

Создаёт pull request в статусе черновика.

Параметры:

  • owner, repo, title, head, base — как у createPullRequest

  • body (optional): описание PR

Примечание: эквивалентно createPullRequest с draft: true.

getPullRequest

Возвращает карточку конкретного pull request'а.

Параметры:

  • owner: владелец

  • repo: имя репозитория

  • pull_number: номер PR

updatePullRequest

Обновляет pull request: заголовок, описание, состояние, целевую ветку; дополнительно может заменить assignees и labels (через issue-эндпоинт — PR в GitVerse является issue).

Параметры:

  • owner: владелец

  • repo: имя репозитория

  • pull_number: номер PR

  • title (optional): новый заголовок

  • body (optional): новое описание

  • state (optional): новое состояние — open или closed

  • base (optional): новая целевая ветка

  • assignees (optional): заменить исполнителей

  • labels (optional): заменить лейблы

getPullRequestActivity

Возвращает таймлайн активности pull request'а.

Параметры:

  • owner, repo, pull_number

getPullRequestCommits

Возвращает коммиты pull request'а.

Параметры:

  • owner, repo, pull_number

  • page (optional), per_page (optional): пагинация

getPullRequestDiff

Возвращает изменённые файлы pull request'а с построчными патчами.

Параметры:

  • owner, repo, pull_number

Вердикты ревью

approvePullRequest

Одобряет pull request — создаёт ревью с вердиктом APPROVED.

Параметры:

  • owner, repo, pull_number

  • body (optional): комментарий к одобрению

unapprovePullRequest

Снимает ваше одобрение: находит ваше последнее APPROVED-ревью и удаляет его.

Параметры:

  • owner, repo, pull_number

requestChanges

Запрашивает изменения — создаёт ревью с вердиктом REQUEST_CHANGES.

Параметры:

  • owner, repo, pull_number

  • body (optional): что нужно изменить

removeChangeRequest

Снимает ваш change request — перекрывает его новым ревью с вердиктом APPROVED (отдельного эндпоинта в API GitVerse нет).

Параметры:

  • owner, repo, pull_number

  • body (optional): комментарий

declinePullRequest

Заклоняет (закрывает) pull request.

Параметры:

  • owner, repo, pull_number

  • message (optional): причина отклонения — публикуется комментарием в обсуждение перед закрытием

Комментарии

getPullRequestComments

Возвращает комментарии обсуждения pull request'а.

Параметры:

  • owner, repo, pull_number

  • since (optional): только комментарии, созданные после ISO-времени

  • before (optional): только комментарии, созданные до ISO-времени

addPullRequestComment

Создаёт комментарий к pull request — общий или инлайн.

Параметры:

  • owner: владелец

  • repo: имя репозитория

  • pull_number: номер PR

  • content: текст комментария (markdown)

  • inline (optional): инлайн-комментарий к конкретной строке диффа:

{
  "path": "src/file.ts",
  "to": 15
}
  • reply_to (optional): id комментария, на который отвечаем (только для общих комментариев)

Формат инлайн-комментария:

  • path: путь к файлу в диффе

  • to: номер строки в новой версии (добавленные и изменённые строки)

SHA коммита определяется автоматически — отдельно передавать его не нужно.

Примеры:

// Общий комментарий
addPullRequestComment(owner, repo, 14, "Отличная работа!");

// Инлайн-комментарий к строке 25 файла src/service.ts
addPullRequestComment(owner, repo, 14, "Добавь обработку ошибок", {
  inline: { path: "src/service.ts", to: 25 }
});

updatePullRequestComment

Редактирует комментарий обсуждения.

Параметры:

  • owner, repo, pull_number

  • comment_id: id комментария

  • content: новый текст

deletePullRequestComment

Удаляет комментарий обсуждения.

Параметры:

  • owner, repo, pull_number

  • comment_id: id комментария

CI (GitVerse Actions)

CI-раны GitVerse Actions — аналог Bitbucket Pipelines.

listPipelineRuns

Возвращает CI-раны репозитория.

Параметры:

  • owner, repo

  • status (optional): фильтр по статусу — queued, in_progress, success, failure, cancelled, unknown

  • branch (optional): фильтр по ветке

  • event (optional): фильтр по событию-триггеру

  • page (optional), per_page (optional): пагинация

getPipelineRun

Возвращает карточку CI-рана.

Параметры:

  • owner, repo

  • run_id: id рана

runPipeline

Запускает workflow на ветке или теге.

Параметры:

  • owner, repo

  • workflow: имя файла workflow (например ci.yml) или id

  • ref_type: что передаётся в ref_namebranch или tag

  • ref_name: имя ветки или тега

  • inputs (optional): входные параметры workflow (строковые значения)

getPipelineSteps

Возвращает джобы (шаги) CI-рана.

Параметры:

  • owner, repo

  • run_id: id рана

getPipelineStep

Возвращает карточку джобы.

Параметры:

  • owner, repo

  • job_id: id джобы

getPipelineStepLogs

Возвращает логи джобы.

Параметры:

  • owner, repo

  • job_id: id джобы

Ограничения

Часть возможностей Bitbucket в публичном API GitVerse отсутствует, поэтому соответствующих тулов нет:

  • merge PR — эндпоинта слияния в API нет (только проверка «смержен ли» и обновление ветки из base)

  • reviewers при создании PR — есть только assignees

  • переключение draft после создания (publishDraftPullRequest / convertTodraft)

  • задачи (tasks) на PR

  • resolve / reopen тредов комментариев

  • остановка CI-рана (cancel отсутствует)

  • commit statuses — вместо них используйте listPipelineRuns с фильтром по ветке

Разработка

Требования

  • Node.js 20 или выше

  • npm

Настройка

# Клонировать репозиторий
git clone <repo-url>
cd gitverse-mcp

# Установить зависимости
npm install

# Собрать проект
npm run build

# Запустить тесты
npm test

# Запустить локально
GITVERSE_TOKEN="ваш-токен" npm start

Структура

src/composite.ts   25 тулов: имена и семантика Bitbucket MCP, вызовы API GitVerse
src/client.ts      HTTP-клиент: Bearer + vendor Accept, 429/Retry-After, ошибки
src/server.ts      MCP-сервер: регистрация тулов, аннотации readOnlyHint
src/index.ts       stdio-транспорт, env-конфигурация
test/              vitest: клиент, тулы, e2e по InMemoryTransport

Лицензия

Проект распространяется по лицензии MIT — подробности в файле LICENSE.

Ссылки

Available Tools

25 tools
addPullRequestCommentA
Destructive

Comment on a pull request. Without inline — a general discussion comment. With inline {path, to} — an inline review comment on line to of the diff (commit SHA is resolved automatically). Replying: pass reply_to with a comment id.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name
ownerYesRepository owner
inlineNoMake it an inline diff comment
contentYesComment content (markdown)
reply_toNoComment id to reply to (general comments only)
pull_numberYesPull request number

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, indicating a write operation. The description adds one useful behavioral nuance: 'commit SHA is resolved automatically' for inline comments. It does not describe side effects like notifications, permissions required, or error conditions. Given the annotations cover the safety profile, the description's extra behavior detail is limited but not contradictory.

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 efficiently structured. It opens with the core purpose, then explains modes and reply behavior without redundancy. Every sentence earns its place, no fluff or unnecessary details. It is front-loaded with the primary action and immediately clarifies the key branching logic.

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 mutation tool with 6 parameters, a nested object, and clear annotations, the description covers the essential usage scenarios: general, inline, and reply. It does not explicitly mention permissions or error handling, but these are not mandated. The schema provides full parameter descriptions, and the description clarifies the behavioral differences. It is complete enough for an agent to call correctly without additional inference.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters are already documented in the schema. The description adds contextual meaning around the 'inline' object ('an inline review comment on line to of the diff') and clarifies that 'reply_to' is for general comments only, which is also in the schema. The auto-resolution of commit SHA is a small addition. Overall, the description does not significantly exceed what the schema already provides, so a baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Comment on a pull request') and distinguishes between general and inline comments. It also covers the reply scenario. It differentiates itself from siblings like updatePullRequestComment or deletePullRequestComment by focusing solely on creation. The verb and resource are specific, and the inline vs general distinction is explicit.

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

Usage Guidelines4/5

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

The description provides explicit guidance on when to use inline vs general comments and how to reply using 'reply_to'. It explains the condition 'Without inline' and 'With inline {path, to}', which determines behavior. It does not explicitly state when NOT to use the tool (e.g., for updates versus creations), but the sibling names make that implicit. Still, the guidance for the two modes and replying is clear and actionable.

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

approvePullRequestC
Destructive

Approve a pull request by submitting an APPROVED review.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoApproval comment
repoYesRepository name
ownerYesRepository owner
pull_numberYesPull request number

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the description adds minimal behavioral detail beyond the mechanism. It doesn't disclose potential side effects, reversibility, or permission requirements—critical for a write operation.

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

Conciseness5/5

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

A single sentence with no filler, front-loaded with the action and mechanism. Perfectly concise for what it conveys.

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

Completeness2/5

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

For a mutation tool with destructiveHint=true and no output schema, the description is too sparse. It doesn't mention any side effects, required permissions, or what happens if the PR is already approved. An agent has to infer too much from the name and schema.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters are documented in the schema. The description adds no semantic value for parameters (e.g., it doesn't explain that body is an optional comment), so a baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action (approve) and the target (a pull request) plus the mechanism (submitting an APPROVED review). It distinguishes this from unapprovePullRequest and declinePullRequest by specifying the review type, though it doesn't explicitly name alternatives.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs. alternatives like requestChanges or declinePullRequest. It doesn't mention prerequisites (e.g., PR must be open) or when approval is appropriate.

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

createDraftPullRequestA
Destructive

Create a draft pull request (equivalent to createPullRequest with draft=true).

ParametersJSON Schema
NameRequiredDescriptionDefault
baseYesTarget branch name
bodyNoPR description (markdown)
headYesSource branch name
repoYesRepository name
ownerYesRepository owner
titleYesPR title

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the agent knows this is a mutating, potentially destructive operation. The description adds the key behavioral nuance that this is the draft variant of createPullRequest, which is useful context. However, it does not disclose side effects, permissions, or return behavior beyond what annotations and schema imply, so a score of 3 is appropriate.

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

Conciseness5/5

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

The description is a single sentence that directly states the purpose and the equivalence, with no redundant or irrelevant information. It is front-loaded with the core action and immediately clarifies the relationship to the sibling tool, earning a top score for conciseness.

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

Completeness4/5

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

For a simple creation tool with all parameters documented in the schema and annotations covering the mutation/destructive nature, the description is sufficiently complete for an agent to call it correctly. It does not describe the return value, but since there is no output schema and the operation is straightforward, this is a minor gap. The equivalence note adds helpful context, so a score of 4 is justified.

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

Parameters3/5

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

Schema description coverage is 100%, meaning every parameter is already documented in the schema. The description adds no additional parameter-specific meaning beyond the schema. According to the calibration, with high coverage, the baseline is 3, and the description does not compensate further, so this is a fair score.

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 explicitly states the action (create) and the specific resource (draft pull request), and distinguishes it from the sibling createPullRequest by noting it is equivalent to createPullRequest with draft=true. This clearly differentiates the tool from its sibling, leaving no ambiguity about what it does.

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

Usage Guidelines4/5

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

The description conveys the usage context by stating it is equivalent to createPullRequest with draft=true, which implies an agent should use this tool when they want a draft PR rather than a regular one. It does not explicitly say 'use this when...' or mention when not to use it, but the equivalence clause provides sufficient guidance for selecting this tool over the sibling.

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

createPullRequestA
Destructive

Create a pull request from head to base. GitVerse has no reviewer requests — use assignees instead. Pass draft=true to create a draft.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseYesTarget branch name
bodyNoPR description (markdown)
headYesSource branch name
repoYesRepository name
draftNoCreate as draft
ownerYesRepository owner
titleYesPR title
labelsNoLabel names
assigneesNoUsernames to assign

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true. The description adds the GitVerse-specific behavior about reviewers/assignees and the draft parameter, but it does not disclose side effects, permission requirements, or reversibility 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.

Conciseness5/5

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

Three concise sentences with no fluff: action, platform quirk, and draft usage. Each sentence serves a distinct purpose and the description is front-loaded with the core action.

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 9-parameter mutation tool with no output schema, the description covers the critical platform-specific usage (assignees vs reviewers) and draft behavior. It does not explain return values or errors, but that is acceptable given no output schema and the schema's completeness.

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?

With 100% schema description coverage, the baseline is 3. The description adds meaning by clarifying 'from head to base' direction and reinforcing draft and assignees usage, providing context beyond the schema.

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

Purpose5/5

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

The description clearly states the tool's action and resources: 'Create a pull request from head to base.' It also distinguishes draft creation via 'Pass draft=true', which differentiates it from the sibling createDraftPullRequest without ambiguity.

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?

It gives explicit platform-specific guidance: 'GitVerse has no reviewer requests — use assignees instead' and instructs how to create a draft. However, it does not explicitly name alternatives like createDraftPullRequest or state when not to use this tool.

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

declinePullRequestA
Destructive

Decline (close) a pull request. An optional message is posted to the discussion before closing.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name
ownerYesRepository owner
messageNoReason for declining
pull_numberYesPull request number

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds useful behavioral context: an optional message is posted to the discussion before closing. This communicates the order of operations beyond what the annotations alone provide, and it does not contradict 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.

Conciseness5/5

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

The description is two short sentences with no filler. The primary action is front-loaded, and the additional behavioral detail is delivered in a compact second sentence.

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 mutation with complete parameter schema and destructive annotations, the description provides enough behavioral information. It does not state the return value or explicitly say when the operation is allowed, but these are minor gaps for this tool.

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

Parameters4/5

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

The schema has 100% description coverage for all four parameters, so the baseline is 3. The description adds extra meaning by clarifying that the message parameter is optional and that it is posted to the discussion before the close, which goes beyond the schema's brief 'Reason for declining'.

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 action ('Decline (close)') and a clear resource ('a pull request'). The verb 'decline' distinguishes this from sibling tools like approvePullRequest, unapprovePullRequest, and requestChanges, so an agent can tell it apart without opening the schema.

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 declinePullRequest versus related alternatives such as requestChanges, unapprovePullRequest, or updatePullRequest. The description only defines the action itself and leaves the decision context entirely to inference.

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

deletePullRequestCommentB
Destructive

Delete a discussion comment on a pull request.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name
ownerYesRepository owner
comment_idYesComment id
pull_numberYesPull request number

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false. The description adds no additional behavioral context (e.g., permanence, permission requirements, effect on replies). It simply restates the operation, so it does not exceed 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.

Conciseness5/5

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

One short, direct sentence with no filler. The essential action is front-loaded and clear.

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

Completeness3/5

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

The tool is a simple delete operation; the schema covers input, annotations cover safety, and the description states the action. However, it lacks any information about return values, error conditions, or preconditions beyond what is structurally stated. For a destructive tool, a note about irreversibility would improve completeness, but it is not strictly necessary given the annotation. Overall, adequate but not rich.

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

Parameters3/5

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

The input schema has 100% description coverage for all four required parameters (owner, repo, pull_number, comment_id). The description doesn't mention parameters but the schema fully documents them, so the description adds no extra meaning; baseline 3 applies.

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

Purpose4/5

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

The description uses the specific verb 'Delete' and specifies the resource 'discussion comment on a pull request.' It is clear what the tool does and is distinct from siblings like addPullRequestComment and updatePullRequestComment, though it does not explicitly name them.

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 only states the action; it provides no guidance on when to use this tool versus alternatives (e.g., update or add), no prerequisites, and no mention of conditions like ownership or permissions. An agent must infer usage solely from the name and sibling list.

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

getPipelineRunC
Read-onlyIdempotent

Get details of a CI run.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name
ownerYesRepository owner
run_idYesCI run id

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description merely restates the read-only nature without adding behavioral context. The description does not disclose anything beyond the annotations, such as whether output is paginated, what fields are included, or if authorization is needed.

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

Conciseness4/5

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

The description is a single, focused sentence with no fluff or repetition. It is concise and front-loaded, though it may be too sparse to convey full context. Still, it is appropriately sized for a simple retrieval tool.

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

Completeness3/5

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

The tool is simple, with three required parameters fully described in the schema and annotations covering its safe, read-only behavior. However, the description does not clarify what 'details' are included in the response, and there is no output schema to compensate. This leaves minor ambiguity but is adequate for the tool's apparent simplicity.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already documented by the schema. The description adds minimal semantic value beyond identifying the resource as a CI run, which the parameter names already imply. This meets the baseline but does not enhance parameter understanding.

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

Purpose4/5

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

The description states a clear verb ('Get') and resource ('details of a CI run'), which accurately distinguishes the tool's purpose from siblings like listPipelineRuns or getPipelineSteps. However, it does not explicitly differentiate itself from sibling tools or specify which details are returned, so it falls just short of a 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as listPipelineRuns or getPipelineSteps. There is no mention of prerequisites, typical use cases, or exclusions, leaving the agent to infer context solely from the tool name and parameter schema.

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

getPipelineStepC
Read-onlyIdempotent

Get details of a CI job (step).

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name
ownerYesRepository owner
job_idYesCI job id

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which the description's 'Get' aligns with. However, the description adds no behavioral context beyond the tool name—no mention of auth requirements, rate limits, or what happens when the job is not found. It neither enriches nor contradicts 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.

Conciseness4/5

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

The description is a single, concise sentence with no filler or redundant wording. It front-loads the verb and object. While very terse, it earns its place and remains easy to parse.

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

Completeness3/5

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

For a simple GET operation with three well-documented parameters and annotations covering the safety profile, this is nearly sufficient. However, there is no output schema, and the description does not clarify what details are returned, how to obtain a job_id, or how this tool relates to sibling tools, leaving minor gaps for an agent selecting 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?

The input schema describes all three parameters (owner, repo, job_id) with 100% coverage, so the description is not required to add parameter details. It provides no extra semantic meaning beyond the schema, such as how job_id relates to a pipeline run or step, so the baseline score of 3 applies.

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

Purpose4/5

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 ('details of a CI job (step)'), making the core action clear. However, it does not distinguish this tool from siblings like getPipelineSteps or getPipelineStepLogs, and the parenthetical '(step)' leaves some ambiguity about the exact entity.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as getPipelineSteps or getPipelineStepLogs. It does not state that it retrieves a single step's details, nor does it mention any prerequisite (e.g., needing a job_id from a pipeline run).

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

getPipelineStepLogsB
Read-onlyIdempotent

Get logs of a CI job (step).

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name
ownerYesRepository owner
job_idYesCI job id

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered structurally. The description adds no behavioral context beyond 'Get logs,' such as response format, potential size, or pagination. It is consistent with the annotations but does not go 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.

Conciseness5/5

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

The description is a single short sentence that states the core action immediately. There is no filler, repetition, or unnecessarily complex structure.

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

Completeness4/5

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

For a simple read-only tool with three fully documented required parameters, this description is largely sufficient for an agent to invoke it correctly. It does not describe the return format or mention log size or pagination, but given the annotations and schema coverage, these are not critical gaps.

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

Parameters3/5

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

Schema description coverage is 100%, with owner, repo, and job_id each documented in the schema. The description adds no significant parameter-level meaning beyond what the schema already provides. The parenthetical '(step)' hints at how job_id relates to a step, but this is minor and somewhat ambiguous.

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

Purpose4/5

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

The description uses a specific verb and resource: 'Get logs of a CI job (step).' This makes the tool's function clear and distinguishes it from siblings like getPipelineStep, which likely returns step metadata rather than logs. The parenthetical '(step)' introduces slight ambiguity around whether the target is a job or step, but the overall intent is clear.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as getPipelineStep, getPipelineRun, or listPipelineRuns. There are no explicit exclusions, prerequisites, or instructions on how to obtain a valid job_id, leaving the agent to infer usage from the name alone.

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

getPipelineStepsB
Read-onlyIdempotent

List jobs (steps) of a CI run.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name
ownerYesRepository owner
run_idYesCI run id

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no extra behavioral context (e.g., ordering, pagination, or error handling) beyond what annotations provide, so it meets the minimum baseline 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.

Conciseness4/5

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

The description is a single, waste-free sentence that front-loads the core action. It is appropriately concise, though it could arguably be slightly more informative without losing brevity.

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?

With no output schema, the description does not explain the return format (e.g., what fields each step contains) or any filtering/ordering options. For a simple list tool with strong annotations, it is adequate but leaves the agent without expectations for the response structure.

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

Parameters3/5

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

Schema description coverage is 100%: each parameter (owner, repo, run_id) has a short description. The tool description does not add any additional parameter meaning or format details, so it remains at the baseline for full schema coverage.

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

Purpose4/5

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

The description clearly states the action ('List jobs (steps)') and the resource ('of a CI run'), so an agent knows it retrieves multiple steps for a given run. However, it does not explicitly distinguish itself from the sibling getPipelineStep (which likely fetches a single step), so it lacks sibling differentiation.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like getPipelineStep or getPipelineStepLogs. The agent is left to infer usage solely from the name and one-line description.

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

getPullRequestB
Read-onlyIdempotent

Get details of a specific pull request.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name
ownerYesRepository owner
pull_numberYesPull request number

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no further behavioral context such as return format, scope of details, or side effects, but it does not contradict the annotations either.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words. It is appropriately concise for a simple getter, though it is slightly too terse to maximize value by clarifying what 'details' includes.

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

Completeness2/5

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

There is no output schema, so the description should clarify what 'details' are returned, but it remains vague. With many sibling tools that return specific subsets (diff, commits, comments, activity), the description does not sufficiently explain the scope of this tool's response or when it is the right choice.

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

Parameters3/5

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

Schema coverage is 100%, and all three parameters (owner, repo, pull_number) have descriptions in the schema. The tool description adds no additional parameter semantics, so the schema carries the full load, which meets the baseline.

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

Purpose4/5

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

The description clearly identifies the action ('Get') and resource ('a specific pull request'), and the word 'specific' distinguishes it from listing pull requests. However, it does not explicitly differentiate from sibling tools like getPullRequestActivity, getPullRequestDiff, or getPullRequestCommits, so it is clear but lacks explicit sibling differentiation.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as getPullRequests, getPullRequestActivity, or getPullRequestDiff. The description only states what the tool does, not when it should be selected, and provides no exclusions or alternative routing.

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

getPullRequestActivityA
Read-onlyIdempotent

Get the activity/timeline of a pull request.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name
ownerYesRepository owner
pull_numberYesPull request number

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds little behavioral detail beyond what the annotations provide, and does not mention pagination, ordering, or the types of events included in the timeline.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or redundant explanation. It states the verb and resource immediately and earns its place without unnecessary detail.

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

Completeness3/5

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

For a simple read-only tool with fully documented parameters and strong annotations, the description is minimally adequate. However, with no output schema, the description does not clarify what 'activity/timeline' includes, which could confuse an agent deciding between this and more specific sibling tools like getPullRequestComments or getPullRequestCommits.

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

Parameters3/5

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

Schema description coverage is 100%, with all three parameters (owner, repo, pull_number) documented in the input schema. The description adds no additional parameter-level meaning, matching the baseline for full schema coverage.

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

Purpose4/5

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

The description uses a clear verb ('Get') and resource ('activity/timeline of a pull request'), making the tool's core function evident. It is distinguishable from sibling tools like getPullRequest (PR details) or getPullRequestComments (specific comments), though the meaning of 'activity/timeline' is somewhat broad.

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?

There is no explicit guidance about when to use this tool versus siblings such as getPullRequestComments, getPullRequestCommits, or getPullRequestDiff. The usage is only implied by the phrase 'activity/timeline', so an agent must infer that this provides a broader view than those more specific tools.

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

getPullRequestCommentsB
Read-onlyIdempotent

List discussion comments on a pull request. Supports since/before filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name
ownerYesRepository owner
sinceNoOnly comments created after this ISO timestamp
beforeNoOnly comments created before this ISO timestamp
pull_numberYesPull request number

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the since/before filtering behavior, which is useful context beyond the schema. It doesn't disclose pagination, ordering, or whether inline vs review comments are included, but the annotations carry the main behavioral burden.

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?

Two short sentences with no filler. The core action and resource are front-loaded, and the filter capability is mentioned second. It earns its place without redundancy.

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

Completeness3/5

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

For a read-only list tool with full schema coverage and safety annotations, the description is mostly adequate. However, it doesn't mention whether the result includes only review comments or also inline comments, nor does it describe pagination or ordering. Given the sibling set includes getPullRequestActivity and getPullRequestDiff, a bit more context on what 'discussion comments' excludes would help.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all five parameters. The description adds the notion of 'discussion comments' and 'since/before filters', which slightly clarifies the semantics, but it doesn't add detail 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.

Purpose4/5

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

The description states a specific verb ('List') and resource ('discussion comments on a pull request'), which clearly distinguishes it from sibling tools like addPullRequestComment or getPullRequestDiff. It doesn't explicitly name a sibling alternative, but the resource is specific enough that an agent can tell it apart from the other pull request tools.

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

Usage Guidelines3/5

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

The description implies usage context: it is for listing discussion comments on a PR, and the since/before filters suggest time-bounded queries. However, it does not explicitly state when to use this tool versus alternatives like getPullRequestActivity or getPullRequestDiff, nor does it mention any exclusions or prerequisites.

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

getPullRequestCommitsA
Read-onlyIdempotent

List the commits of a pull request. Supports page/per_page.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo1-based page number
repoYesRepository name
ownerYesRepository owner
per_pageNoItems per page
pull_numberYesPull request number

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds pagination support ('Supports page/per_page') as an extra behavioral trait, but does not disclose details like ordering or response format. No contradiction 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.

Conciseness5/5

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

The description is a single, front-loaded sentence that wastes no words. It states the action and the sole behavioral note (pagination) efficiently.

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 read-only list endpoint, the description covers the action, the target resource, and the pagination options. Combined with complete parameter descriptions and safety annotations, nothing essential is missing for an agent to invoke this tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so each of the five parameters already has a description. The tool description adds only that page/per_page are supported, which is minimal value beyond the schema's existing parameter descriptions.

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

Purpose5/5

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

The description states a specific verb ('List') and resource ('commits of a pull request'), which clearly identifies the tool's action and distinguishes it from sibling tools like getPullRequest, getPullRequestActivity, or getPullRequestDiff. The added pagination note helps clarify the scope.

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

Usage Guidelines3/5

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

The description implies the tool is used when needing the commit list for a pull request, but it does not explicitly state when-not to use it or name alternatives such as getPullRequestDiff or getPullRequestActivity. Usage is left to inference rather than stated.

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

getPullRequestDiffA
Read-onlyIdempotent

Get the changed files of a pull request, including per-file patches.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name
ownerYesRepository owner
pull_numberYesPull request number

TDQS

A4/5.0
Behavior3/5

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

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds that the tool returns per-file patches, but does not disclose additional behavioral details such as diff format, size limits, or pagination. This is acceptable but not exceptional.

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?

One short sentence that front-loads the resource and then specifies the return content. No filler or redundant wording.

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

Completeness4/5

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

For a simple read-only tool with fully documented parameters and strong annotations, the description covers the essential call intent and output scope. A brief note on the diff format or response shape would make it fully complete, but nothing critical is 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?

The input schema already documents all three parameters (owner, repo, pull_number) with 100% coverage, so the baseline applies. The description adds no parameter-specific guidance beyond what the schema provides.

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?

Clearly identifies the operation as retrieving changed files for a specific pull request, specifying the resource and the exact output scope (changed files with per-file patches). This distinguishes it from sibling tools like getPullRequest, getPullRequestCommits, and getPullRequestActivity.

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

Usage Guidelines4/5

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

The description makes the intended use clear: when an agent needs the diff or changed files of a pull request. It does not explicitly name sibling alternatives or exclusions, but the context is unambiguous enough to avoid confusion with related PR tools.

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

getPullRequestsC
Read-onlyIdempotent

List pull requests of a repository. state filters by open/closed. Supports page/per_page.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo1-based page number
repoYesRepository name
ownerYesRepository owner
stateNoFilter by PR state
per_pageNoItems per page

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. Beyond that, the description only restates state filtering and pagination, which are already in the schema. It adds no behavioral context such as default state behavior when the parameter is omitted, whether results are ordered, or whether closed includes merged PRs.

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 appropriately short and front-loaded, with the core purpose in the opening clause. However, the final two clauses ('state filters by open/closed', 'Supports page/per_page') largely duplicate what the input schema already documents, slightly reducing the value they earn.

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

Completeness3/5

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

For a simple list endpoint, the description covers purpose, state filter, and pagination, which is adequate for basic invocation. But with no output schema, it omits useful context like default state behavior when omitted, response shape, and whether pagination is required to retrieve all results in a large repository.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description mentions state filtering and page/per_page, but these add no meaning beyond the schema's own parameter descriptions ('Filter by PR state', 'Items per page', '1-based page number'). The description neither compensates for gaps nor adds insight.

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 states a specific verb ('List'), resource ('pull requests'), and scope ('of a repository'), which clearly conveys the operation. The plural 'pull requests' implicitly distinguishes this from the sibling getPullRequest, but the description does not explicitly differentiate itself from any sibling, so an agent must infer the distinction from the tool name.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives. There is no mention of using getPullRequest for a single PR, getPullRequestActivity for activity, or any condition for selecting state filters. The state and pagination mentions are parameter hints, not usage guidance.

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

getRepositoryA
Read-onlyIdempotent

Get details of a specific repository.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name
ownerYesRepository owner

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the description does not need to repeat safety. However, the description adds no extra behavioral context such as authentication requirements, rate limits, or the structure of the returned details. It is consistent with annotations but does not go 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.

Conciseness5/5

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

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

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

Completeness4/5

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

For a simple read-only operation with two parameters fully documented in the schema and no output schema, the description is largely complete. It could mention that it returns the repository object or that it requires both owner and repo, but those are already in the schema. The missing usage guidance relative to siblings is a minor gap, so a 4 is appropriate.

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

Parameters3/5

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

Schema description coverage is 100%, with clear descriptions for 'owner' and 'repo'. The description adds no additional meaning about the parameters, so it does not exceed the baseline of 3. The agent can rely on the schema for parameter 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 clearly states the verb 'Get' and the resource 'details of a specific repository,' which is specific and distinguishes it from siblings like listRepositories (listing all) and getPullRequests (different resource). It is not a tautology and immediately conveys the operation.

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

Usage Guidelines3/5

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

The description implies usage for fetching a single repository's details, but it does not explicitly mention when to use it versus alternatives like listRepositories. The context of 'specific repository' implies it, but there is no direct guidance on alternative selection, so it relies on 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.

listPipelineRunsA
Read-onlyIdempotent

List CI runs (GitVerse Actions, Bitbucket Pipelines analog). Filters: status, branch, event. Supports page/per_page.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo1-based page number
repoYesRepository name
eventNoFilter by trigger event
ownerYesRepository owner
branchNoFilter by branch
statusNoFilter by run status
per_pageNoItems per page

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds behavioral context about supported filters (status, branch, event) and pagination (page/per_page), which is valuable but not extensive; it does not describe the response shape or any rate limits, which is a minor gap given the absence of an output schema.

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

Conciseness5/5

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

The description is two compact sentences. The first states the core purpose and analog; the second lists filters and pagination. There is zero filler, and the key purpose is front-loaded, making it easy for an agent to quickly grasp the tool's function.

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 list operation with 7 parameters but no output schema, the description provides enough context: the resource, filters, and pagination. It does not specify return format, but the tool name and analog ('CI runs') imply a list, and sibling getPipelineRun covers single-run details. The main missing piece is explicit mention of default values or ordering, which is not critical for basic invocation.

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

Parameters3/5

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

Schema description coverage is 100% for all 7 parameters, so the schema already documents each parameter's meaning. The description reiterates the filters and pagination, matching the schema, but adds no new semantic detail (e.g., default page size, format of status enum). It meets the baseline for full schema coverage without compensation.

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

Purpose5/5

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

The description clearly states a specific verb ('List') and resource ('CI runs') with an analog ('GitVerse Actions, Bitbucket Pipelines analog'), making its purpose unambiguous. It differentiates from sibling tools like getPipelineRun (single run) and runPipeline (trigger) by focusing on listing all runs, and mentions filters and pagination, reinforcing its distinct role.

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

Usage Guidelines4/5

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

The description implies when to use this tool: when you need to list CI runs, with optional filters (status, branch, event) and pagination. It does not explicitly exclude alternatives like getPipelineRun for a single run, but the context is clear. It lacks a direct 'when not to use' but provides sufficient context for an agent to infer.

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

listRepositoriesA
Read-onlyIdempotent

List repositories. Without arguments lists the authenticated user's repositories; pass org to list organization repositories. Supports page/per_page.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgNoOrganization name to list its repositories instead of own
pageNo1-based page number
per_pageNoItems per page

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds that the default target is the authenticated user's repositories and that org switches the scope, but it doesn't disclose result shape, ordering, or pagination behavior beyond schema fields.

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?

Three short, front-loaded sentences clearly convey the operation, the two scopes, and pagination support. 'Supports page/per_page' is slightly redundant with the schema, but it does not add clutter.

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

Completeness4/5

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

For a simple read-only list operation with optional org, page, and per_page parameters, the description covers default behavior and org switching. With no output schema, the return format is not described, but the expected list of repositories is strongly implied by the tool name and sibling context.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description reinforces the org parameter's role and the no-argument default, but this adds little beyond the schema's 'instead of own' phrasing for org and the explicit descriptions for page and per_page.

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

Purpose4/5

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

The description uses the specific verb 'List' and resource 'repositories', and clarifies two list scopes: 'authenticated user's repositories' vs 'organization repositories'. It doesn't explicitly name an alternative such as getRepository, but the plural resource makes the intent unmistakable.

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?

It states clear selection logic: without arguments list the authenticated user's repositories; with org list organization repositories. It doesn't mention when not to use this tool or name alternatives, but for a straightforward list operation this is sufficient context.

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

removeChangeRequestA
Destructive

Remove your change request by superseding it with an APPROVED review (GitVerse has no dedicated un-request endpoint).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoOptional comment
repoYesRepository name
ownerYesRepository owner
pull_numberYesPull request number

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate destructive mutation, but description adds that it applies only to 'your' change request, that the mechanism is superseding with an APPROVED review, and that GitVerse lacks a dedicated endpoint. This is useful behavioral context beyond the annotations, without contradicting them.

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

Conciseness5/5

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

A single, front-loaded sentence that conveys the action, method, and platform rationale with zero filler. Every part earns its place.

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 mutation tool with full schema coverage and annotations, the description provides enough to invoke correctly: what it does, how it works, and platform context. The precondition that an existing change request must exist is implicit but not stated, a minor 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?

Schema description coverage is 100%, with all four parameters (body, repo, owner, pull_number) already described in the schema. The description adds no parameter-level meaning, so the baseline score of 3 applies.

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

Purpose5/5

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

States a specific verb ('remove'), resource ('change request'), and the mechanism ('superseding it with an APPROVED review'). Also notes GitVerse has no dedicated un-request endpoint, which clearly distinguishes it from any direct removal tool and from siblings like requestChanges or approvePullRequest.

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?

Explains why this tool exists (no dedicated un-request endpoint) and implies the agent should use it when wanting to remove a change request. However, it does not explicitly name alternative tools or conditions when not to use them, so guidance is clear but lacks explicit exclusions.

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

requestChangesA
Destructive

Request changes on a pull request by submitting a REQUEST_CHANGES review.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoWhat should be changed
repoYesRepository name
ownerYesRepository owner
pull_numberYesPull request number

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the mutation is known. The description adds 'by submitting a REQUEST_CHANGES review,' which clarifies the exact API action, but it does not disclose side effects such as whether existing reviews are overridden or if the PR status changes. Given annotations cover the safety profile, the description adds only marginal context.

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

Conciseness5/5

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

The description is a single precise sentence with no unnecessary words. It front-loads the verb and target, making it efficient and easy to scan.

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

Completeness3/5

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

The tool is relatively simple, but the description omits practical details such as that body is optional and how this action interacts with other review states (e.g., whether it supersedes an approval). With annotation coverage and a high-schema description, it hits the minimum viable level but does not fully clarify the behavior in the context of sibling review tools.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters (owner, repo, pull_number, body) are documented. The description does not add any supplementary meaning for parameters beyond what the schema already provides, so the baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the verb 'Request changes' on a 'pull request' and specifies the mechanism 'by submitting a REQUEST_CHANGES review.' This distinguishes it from siblings like approvePullRequest and declinePullRequest, which have different intents and review types.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus its siblings. It does not mention that this is for blocking merge or that approvePullRequest is for approval, nor does it indicate when to avoid it (e.g., instead of removeChangeRequest). Agents must infer context from the tool name and siblings.

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

runPipelineB
Destructive

Trigger a CI run of a workflow on a branch or tag.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name
ownerYesRepository owner
inputsNoWorkflow inputs (string values)
ref_nameYesBranch or tag name
ref_typeYesWhat ref_name refers to
workflowYesWorkflow file name or id

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=false, destructiveHint=true, and openWorldHint=true. The description adds the branch/tag scoping but does not clarify side effects, return behavior, or asynchronous nature. It provides only minimal context beyond the annotations, earning a middle score.

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

Conciseness5/5

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

A single, concise sentence that front-loads the action and scope. Every word contributes to the core purpose with no filler or redundancy.

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

Completeness2/5

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

The description is too thin for a side-effectful action with 5 required parameters and no output schema. It does not mention expected return value, error conditions, or whether the trigger is synchronous, leaving significant gaps for an agent.

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

Parameters3/5

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

Schema description coverage is 100%, with all parameters including inputs, ref_name, and ref_type having descriptions. The tool description adds no extra parameter detail, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb 'Trigger' and identifies the resource 'CI run of a workflow' plus the scope 'on a branch or tag'. This clearly distinguishes it from sibling tools like listPipelineRuns or getPipelineRun, which are read operations.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There is no mention of when not to use it, prerequisites, or comparison with other pipeline-related tools. An agent must infer usage from the name and sibling list.

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

unapprovePullRequestA
Destructive

Remove your approval: finds your latest APPROVED review on the pull request and deletes it.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name
ownerYesRepository owner
pull_numberYesPull request number

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate a destructive, non-idempotent write. The description adds valuable context: it finds and deletes the latest APPROVED review by the caller, implying it only affects the caller's own approval. This goes beyond annotation hints and clarifies the specific side effect, though it doesn't mention behavior when no approval exists.

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

Conciseness5/5

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

The description is a single, clear sentence that front-loads the action ('Remove your approval') and explains the mechanism. No superfluous words or repetition.

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

Completeness4/5

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

For a simple tool with three self-descriptive parameters and no output schema, the description is functionally complete. It covers the key behavioral nuance (only your own approval) but omits edge-case behavior (e.g., if the user has no approved review). This minor gap keeps it from a 5.

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

Parameters3/5

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

Schema description coverage is 100% with straightforward parameters (owner, repo, pull_number). The description does not add extra parameter semantics, but given the high schema coverage, a baseline of 3 is appropriate; the parameters are self-explanatory and require no further elaboration.

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 specifies the verb 'Remove your approval' and the target resource (pull request approval). It distinguishes itself from siblings like approvePullRequest, declinePullRequest, and removeChangeRequest by explicitly focusing on removing one's own approval.

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 conveys its purpose (removing your approval) but does not explicitly state when to use this tool versus alternatives such as removeChangeRequest or declinePullRequest. No exclusions or conditions are given, so an agent must infer the appropriate context from the name and description.

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

updatePullRequestA
Destructive

Update a pull request: title, body, state (open|closed), base branch. assignees and labels are applied through the issue endpoint because a PR is an issue in GitVerse.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseNoNew target branch
bodyNoNew PR description
repoYesRepository name
ownerYesRepository owner
stateNoNew PR state
titleNoNew PR title
labelsNoReplace labels
assigneesNoReplace assignees
pull_numberYesPull request number

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true, so the description doesn't need to restate that. It adds the behavioral detail that assignees and labels are applied through the issue endpoint, which is useful context. However, it does not disclose other behavioral traits like whether the operation is atomic, what happens to existing values for unspecified fields, or any permission requirements.

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

Conciseness5/5

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

The description is a single sentence that front-loads the main purpose and key fields, then adds a critical implementation note. There is no redundancy or fluff; every part earns its place.

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

Completeness3/5

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

For a mutation tool with no output schema, the description covers the primary fields and the special handling of assignees/labels. However, it does not mention the return value or any side effects (e.g., what happens if the base branch change causes conflicts). Given the tool's complexity (9 params) and lack of output schema, a bit more detail on expected outcomes would improve completeness.

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

Parameters4/5

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

Schema coverage is 100%, so every parameter already has a description. The description adds meaningful context by explaining that assignees and labels are routed through the issue endpoint, which clarifies how those parameters are handled beyond the schema's simple field descriptions. This exceeds the baseline of 3.

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

Purpose5/5

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

The description clearly states the tool updates a pull request and enumerates the mutable fields (title, body, state, base branch). It also adds the nuance that assignees and labels are handled through the issue endpoint, which is a specific detail that differentiates this tool from generic update operations and clarifies its scope.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives like getPullRequest or createPullRequest. It does not mention any exclusions or scenarios where this tool should not be used. The only usage note is about the issue endpoint for assignees/labels, which is more of an implementation detail than a usage guideline.

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

updatePullRequestCommentB
Destructive

Edit a discussion comment on a pull request.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name
ownerYesRepository owner
contentYesNew comment content
comment_idYesComment id
pull_numberYesPull request number

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this is a mutating operation. The description adds no behavioral context beyond 'Edit' – it doesn't mention whether the edit is a full replacement, whether it's reversible, or any side effects. With annotations covering the safety profile, a 3 is appropriate; the description adds minimal value 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.

Conciseness4/5

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

The description is a single concise sentence with no waste. It's front-loaded with the verb and resource. It could arguably be slightly more informative, but for its length 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?

For a simple edit tool with 100% schema coverage and annotations covering the safety profile, the description is mostly adequate. However, it doesn't clarify whether 'content' replaces the entire comment or if there are any constraints (e.g., markdown support, length limits). The lack of an output schema means the agent doesn't know what the response will contain, but that's not the description's job per the rubric. A 3 is fair – adequate but with minor gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 5 parameters. The description adds no additional parameter semantics beyond what the schema provides. Baseline 3 is correct when schema does the heavy lifting.

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

Purpose4/5

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

The description 'Edit a discussion comment on a pull request' clearly states the verb (edit) and resource (discussion comment on a pull request). It distinguishes itself from sibling tools like addPullRequestComment and deletePullRequestComment, though it doesn't explicitly name them. The verb 'Edit' is specific enough to differentiate from create/delete siblings.

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

Usage Guidelines3/5

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

The description implies usage context: use this when you need to modify an existing comment on a pull request. It doesn't explicitly state when not to use it or name alternatives like addPullRequestComment or deletePullRequestComment. The context is clear but exclusions are absent, so it's a 3.

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. 25 tool updatesv1.0.1
    • First observedaddPullRequestComment
    • First observedapprovePullRequest
    • First observedcreateDraftPullRequest
    • First observedcreatePullRequest
    • First observeddeclinePullRequest
    • First observeddeletePullRequestComment
    • First observedgetPipelineRun
    • First observedgetPipelineStep
    • First observedgetPipelineStepLogs
    • First observedgetPipelineSteps
    • First observedgetPullRequest
    • First observedgetPullRequestActivity
    • First observedgetPullRequestComments
    • First observedgetPullRequestCommits
    • First observedgetPullRequestDiff
    • First observedgetPullRequests
    • First observedgetRepository
    • First observedlistPipelineRuns
    • First observedlistRepositories
    • First observedremoveChangeRequest
    • First observedrequestChanges
    • First observedrunPipeline
    • First observedunapprovePullRequest
    • First observedupdatePullRequest
    • First observedupdatePullRequestComment

TDQS

B3.4/5.0

Scored across 25 tools

Disambiguation4/5

The PR-related tools are numerous but each has a distinct purpose (create, get, list, update, approve, decline, request changes, comments, diff, commits, activity). However, createDraftPullRequest overlaps with createPullRequest (which has a draft parameter), and unapprovePullRequest vs removeChangeRequest could be confused, though descriptions clarify. Overall, an agent can typically select the right tool.

Naming Consistency5/5

All tool names follow a consistent camelCase verb_noun pattern (listRepositories, getRepository, createPullRequest, getPullRequestDiff, etc.). No mixed conventions or vague verbs like 'process' or 'run' without context.

Tool Count3/5

At 25 tools, this is at the upper edge of acceptable. The large number is driven by PR sub-operations (comments, approvals, changes) and pipeline steps/logs, but the redundant createDraftPullRequest and the tight PR focus make it feel slightly heavy for the scope. Still, each tool addresses a specific need.

Completeness2/5

Major gaps exist: there is no merge_pull_request tool, no branch/tag management, and no repository-level lifecycle operations beyond list/get. The PR workflow covers review and comments but lacks merging, which is a core operation. Pipeline tools are comprehensive but the overall domain feels incomplete for a full Git hosting server.

Related MCP Connectors

Related MCP Servers