Skip to main content
Glama
JovianIce

git-bug-broker

by JovianIce

git-bug-broker

An MCP server that lets several agents file, label and close issues in one git-bug store (a distributed issue tracker that keeps issues in git refs) while its web UI stays open.

An issue filed, reproduced, fixed and closed by an agent and its subagents, seen in git-bug's web UI

git-bug keeps issues inside the repository as git objects, so agents can track work next to the code with no hosted tracker, API token or network. Through this server an agent can open an issue for a bug it finds, comment on it as it investigates, label it, read what other agents have written, and close it with a note naming the commit that fixed it. Issues are versioned like commits and sync through any git remote with git bug push and git bug pull, so the record carries over between sessions and between agents.

git-bug webui holds the search index for as long as it runs, and every CLI command waits on it without saying so. The broker talks to the web UI's GraphQL endpoint instead, takes a file lock for each write, and refuses any write that breaks the project's conventions: claim-style titles, one area/ and one kind/ label, required body sections. A rejected write lists every problem at once. Unlike a wrapper around the CLI, it keeps working while git-bug webui is open, and concurrent writes don't collide. The client is also a small Python library, so a script can write to the store while the UI is open too.

Works with git-bug 0.11. Tested on Windows; the Linux and macOS paths are written but untested.

Install

pip install git-bug-broker

or from a checkout of the repository, pip install -e .. Needs Python 3.10+ and git-bug on PATH.

Related MCP server: SameTree

Run

git-bug-broker-start <repo>            # start the web UI (reuses one already running)
git-bug-broker-start <repo> --status
git-bug-broker-start <repo> --stop

It prints the web UI's URL. An issue is at <url>/_/issues/<id>, where <id> is the short id the tools return. The issue list starts filtered to status:open; clear the search box to see closed issues too. --stop only stops the process it started.

Use from Python

from git_bug_broker.client import Client

c = Client(repo="/path/to/repo")
c.file_entry(
    "The retry loop never backs off after a 429",
    "**What** retry() sleeps a fixed 1 s.\n**Done when** the delay doubles per attempt.",
    ["area/api", "kind/defect"],
)

Connect an MCP client

.mcp.json for Claude Code:

{
  "mcpServers": {
    "git-bug": {
      "command": "git-bug-broker",
      "env": {
        "GITBUG_BROKER_REPO": "/path/to/repo",
        "GITBUG_BROKER_RULES": "/path/to/repo/.git-bug-rules.json"
      }
    }
  }
}

Any stdio MCP client takes the same command and env.

GITBUG_BROKER_RULES is optional. Without it the defaults in src/git_bug_broker/rules/default.json apply and any area name is accepted. examples/rules.example.json shows a project file with a fixed area list.

GITBUG_BROKER_URL points the client at a web UI the broker did not start, for example one on another port.

Tools: file_entry, comment, edit_body, edit_comment, relabel, set_status, set_title, get, query. A rejected write lists every problem at once.

Read-only mode

Off by default. Start the server with --read-only, or set GITBUG_BROKER_READ_ONLY=1, and it registers only get and query. The write tools are not registered, so any other call fails as an unknown tool.

Run it beside the read-write server for clients that should only read. Both use the same web UI:

{
  "mcpServers": {
    "git-bug": {
      "command": "git-bug-broker",
      "env": {
        "GITBUG_BROKER_REPO": "/path/to/repo",
        "GITBUG_BROKER_RULES": "/path/to/repo/.git-bug-rules.json"
      }
    },
    "git-bug-read": {
      "command": "git-bug-broker",
      "args": ["--read-only"],
      "env": {
        "GITBUG_BROKER_REPO": "/path/to/repo"
      }
    }
  }
}

A read-only server needs no rules file.

The server takes no other arguments. An unknown argument, or a GITBUG_BROKER_READ_ONLY value other than 1/true/yes/on or 0/false/no/off, stops it at startup.

This is separate from git-bug webui --read-only. The web UI stays writable to anything that can reach its GraphQL endpoint.

Rules

What gets checked is in CONVENTIONS.md. Briefly:

  • a title is a claim about the code, at most 80 characters, with no leading number

  • exactly one area/ and one kind/ label, with a slash, never a colon

  • defects and chores have What and Done when sections

  • file_entry, edit_body, relabel and set_title are checked; comment, edit_comment and set_status are not

Why the lock

git-bug 0.11 applies an operation and commits it in two unguarded steps. When two writes hit the same issue at once both land, but one caller is told can't commit an entity with no pending operation, and a retry duplicates the write. The broker holds <repo>/.git/git-bug-broker/write.lock for each write. Reads don't lock.

Measured on git-bug 0.11 on Windows: with the lock, 24 parallel writes from 4 server processes, 12 of them to one shared issue, finished in 3.7 s with no errors. Without it, 28 of 30 concurrent writes to one issue reported failure although all 30 had landed.

Limitations

  • The web UI has to be running. If it isn't, every tool says so and nothing is queued.

  • Filing an issue is two mutations, create then label. A crash in between leaves an unlabelled issue; the error gives its id.

  • The web UI binds to 127.0.0.1 with no authentication.

  • Edits made in the web UI aren't checked against the rules.

  • Free-text search returns at most 10 results. title:, label: and status: filters return everything.

Development

pip install -e .[dev]
pytest

tools/view.py renders the store as a static HTML page and a JSON Lines snapshot. It reads through the CLI, so run it while the web UI is stopped; anything reading its output needs neither.

License

MIT

Available Tools

9 tools
commentC

Add a comment to an entry, by id or unique id prefix.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
messageYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a write but discloses nothing about required permissions, whether the target entry must already exist, whether the comment is mutable afterward, or what is returned.

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?

A single front-loaded sentence with the action first and the identifier hint second; nothing is wasted, though it is arguably under-specified for its length.

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 two-parameter mutation with no annotations and no output schema, the description is minimally viable: the target and identifier form are covered, but mutation behavior, existence requirements, and return semantics are absent.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate. It adds real meaning for 'id' by noting a unique id prefix is acceptable, but 'message' is left entirely to self-evidence and no format/length constraints are given.

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?

States a specific verb and resource ('Add a comment') plus the target ('an entry'), and the word 'Add' contrasts implicitly with the sibling edit_comment. It does not explicitly name that sibling, so it stops short of full differentiation.

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

Usage Guidelines2/5

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

The description says how to target the entry (id or unique id prefix) but never says when to use this tool versus edit_comment or the other mutation siblings. No prerequisites or exclusions are given.

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

edit_bodyC

Replace an entry's body (its first comment). Checked against the entry's kind.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
bodyYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It discloses that the operation replaces content and is checked against the entry's kind, but omits permission requirements, reversibility, what happens to the previous body, and error behavior for a mutation tool.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no filler. It is appropriately sized for a two-parameter tool, though the trailing validation clause is slightly cryptic.

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

Completeness2/5

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

For a mutation tool with no annotations, no output schema, and 0% parameter coverage, the description is too thin. It does not explain return values, error cases, permission needs, or the exact meaning of 'checked against the entry's kind'.

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

Parameters3/5

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

Schema description coverage is 0% for both parameters. The description clarifies that 'body' is the entry's first comment and 'id' identifies the entry, adding some meaning beyond the bare schema names. However, it provides no format, length, or content-type details for either parameter.

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 ('Replace') and resource ('entry's body (its first comment)'), making the core operation clear. It does not explicitly name the sibling 'edit_comment' as the alternative, so sibling differentiation is only implied rather than explicit.

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 when-to-use guidance, prerequisites, or alternatives are provided. The phrase 'Checked against the entry's kind' hints at a validation condition but does not tell the agent when to choose this tool over 'edit_comment' or other siblings.

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

edit_commentB

Replace the text of one comment, by the comment id that get() returns.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYes
comment_idYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Replace' implies the existing text is overwritten and lost, but the description never confirms irreversibility, permissions required, or error behavior for a bad id. Only the data source for the id is explained.

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?

A single front-loaded sentence with no padding: the operation comes first, then the identifier sourcing. Only the slightly clunky phrasing 'by the comment id that get() returns' keeps it from being a model of 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?

For a 2-parameter mutation with no annotations and no output schema, the description covers the core action and id provenance but omits overwrite semantics, failure modes, and any hint of the response. Adequate but with clear 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 0%, so the description must compensate. It does clarify where comment_id comes from (the get() return value) and implies message is the replacement text, but it adds no format, length, or encoding details for either parameter.

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?

States a specific verb and resource: 'Replace the text of one comment.' The scope word 'one' signals a single-record edit, which distinguishes it from sibling-level operations like 'comment' or 'edit_body'. It does not explicitly name an alternative, but the operation is unambiguous.

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

Usage Guidelines3/5

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

The clause 'by the comment id that get() returns' tells the agent how to source the required comment_id, which is genuine usage context. However, it never says when to use this tool versus siblings like comment or edit_body, nor any precondition or exclusion.

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

file_entryA

File a new entry. labels must include exactly one area/ and one kind/ (defect, chore, decision, investigation, idea); add filed-by/ when an agent files it.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
titleYes
labelsYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. It discloses a non-obvious creation constraint (exactly one area/<name> and one kind/<name>, with the kind vocabulary enumerated), which is real added value, but says nothing about side effects, whether filing notifies anyone, or whether re-filing duplicates.

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 sentences, the creation action is front-loaded, and the label rules follow immediately with no hedging or filler. Dense and well-ordered, though the parenthetical vocabulary list makes the second sentence long.

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

Completeness3/5

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

For a mutation tool with no annotations, no output schema, and 0% schema coverage, the label contract is covered well but the description never states what happens on success (e.g., a returned entry identifier) or whether any fields are validated beyond labels. Adequate but not fully complete.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does for the hardest parameter: labels gets its required structure, the allowed kind values, and the optional filed-by/<agent> convention. title and body are left to their self-evident names, which is a minor gap only.

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?

States a specific verb ('File') and resource ('a new entry'), which is enough to distinguish it from the edit/set/get/query siblings that operate on existing entries. It does not explicitly name an alternative or say what an 'entry' is, so an agent must infer the surrounding model from the sibling names.

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 imperative 'File a new entry' implies this is the creation path versus the sibling mutation tools, but there is no explicit when-to-use/when-not-to-use statement or prerequisite (e.g., permissions, required area taxonomy). Usage is implied rather than guided.

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

getB

Read one entry: title, status, labels, body and comments with their ids.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.1/5.0
Behavior3/5

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

No annotations exist, so the description carries the full behavioral burden. It does disclose the return payload (title, status, labels, body, and comments with their ids), effectively substituting for the missing output schema, but says nothing about authentication requirements, error behavior for a missing id, or whether comments are truncated or paginated.

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?

One tightly scoped sentence with the verb and return fields front-loaded and no filler. It is terse to the point of under-informing, but not wasteful.

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?

With no annotations, no output schema, and no parameter documentation, the description would need to do more. It partially compensates by listing the returned fields, but omits the id format, the entity domain, auth needs, and failure behavior, leaving real gaps for a tool whose name is entirely generic.

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

Parameters2/5

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

The single 'id' parameter has 0% schema description coverage, and the description never explains it. Critically, it does not say whether the id is a repository-scoped issue number or a global identifier, and since 'file_entry' and 'comment' are siblings, the type of entity being addressed is 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?

States a specific verb+resource ("Read one entry") and enumerates the fields returned, which lets an agent distinguish it from the listing-style sibling 'query'. However, the generic name "get" and the vague noun "entry" leave the domain (issue? file? comment?) to be inferred from sibling names rather than stated.

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

Usage Guidelines3/5

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

Usage is only implied by the phrase "one entry", which suggests singular retrieval as opposed to the sibling 'query'. No explicit when-to-use, when-not-to-use, or named alternative is given, so the agent must infer that 'query' is the multi-item counterpart.

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

queryA

List entries matching a git-bug query, for example 'status:open label:area/api' or 'label:kind/defect sort:edit'. Returns ids, titles, status and labels, not bodies.

ParametersJSON Schema
NameRequiredDescriptionDefault
firstNo
queryNostatus:open

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it usefully discloses the return shape ('Returns ids, titles, status and labels, not bodies'). However, it is silent on pagination behavior tied to 'first', result ordering, and any limits or auth requirements, leaving meaningful behavioral gaps for a no-annotation tool.

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

Conciseness5/5

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

Two tight sentences with the core purpose front-loaded, immediately followed by usage examples and the return contract. No filler or redundancy.

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

Completeness4/5

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

No output schema exists, and the description compensates by stating exactly which fields are returned and that bodies are excluded. The main remaining gap is the undocumented 'first' pagination parameter.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate. It does a good job on 'query' by showing example syntax ('status:open label:area/api', 'sort:edit'), but says nothing about 'first', which is undocumented in both schema and description.

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

Purpose4/5

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

States a specific verb and resource ('List entries matching a git-bug query') and reinforces the concept with two concrete example queries. It is clearly a search/list operation, which implicitly separates it from single-entry siblings like 'get', but it never names or contrasts those siblings explicitly.

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 two example queries imply how to use the tool, but there is no explicit statement of when to pick it over 'get' (single entry) or the mutation siblings. No prerequisites, exclusions, or routing guidance are given.

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

relabelA

Add and remove labels in one operation. The resulting set must satisfy the standard, so swap an area with add=['area/new'], remove=['area/old'] in one call.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
addNo
removeNo

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It discloses that add and remove happen in one operation and that the resulting set must satisfy a constraint, but it omits permission requirements, failure behavior, idempotency, and return semantics.

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 tightly written sentences with the core operation front-loaded and an example that immediately illustrates usage. There is no wasted text.

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 tool is a mutation with no annotations, no output schema, and 0% parameter description coverage. The description explains the central add/remove behavior but leaves id semantics, return values, and error behavior unaddressed.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It clarifies add and remove with an example label format and the swap pattern, but does not explain the required id parameter or fully define label validity.

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 specific operation: adding and removing labels in one call. It identifies the resource (labels) and the combined add/remove behavior, but does not differentiate itself explicitly from any sibling tool or name the target entity.

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 provides a concrete usage scenario for swapping labels atomically with add and remove in one call. However, it does not state when not to use it or name any alternative tool or approach.

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

set_statusB

Open or close an entry ('open' or 'closed'), optionally with a comment in the same operation. A closing comment should name the commit and the test that pins the fix.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
statusYes
commentNo

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose that this is a state mutation and that the comment is optional and handled atomically in the same operation, plus a useful authoring convention for closing comments. It omits permissions, reversibility, and what happens to an existing comment on status change.

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 tight sentences with the core verb/state information front-loaded and no filler. The second sentence adds a convention rather than restating the first, though it is arguably style guidance rather than invocation-critical 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?

No output schema or annotations exist, so the description must stand alone. It covers status and comment adequately but says nothing about the required id, the mutation's effects, or the return result, leaving the definition only minimally viable for a 3-parameter mutation tool.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It usefully enumerates the two valid 'status' values and explains 'comment' semantics and its optional nature, but the required 'id' parameter is completely unaddressed, leaving a real gap.

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?

States a specific action pair (open/close) on a specific resource (an entry) and enumerates the accepted status values inline. However, it never distinguishes itself from siblings like 'comment' or 'edit_body', which overlap with the optional-comment behavior it advertises.

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

Usage Guidelines3/5

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

Usage is implied by 'Open or close an entry' and the note that a comment can be supplied in the same operation — a subtle hint that this can replace a separate comment call. There is no explicit when-not guidance and no named alternative among the many siblings (comment, edit_comment, edit_body).

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

set_titleC

Retitle an entry. The new title is checked against the standard.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
titleYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it discloses very little. It hints that the title is 'checked against the standard' but never says what that standard is, what happens when validation fails, whether the change is reversible, or what is returned. For a mutation tool with zero annotation coverage this is thin.

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 wasted words, and the core action is front-loaded. However, the second sentence is cryptic enough that its brevity reads as under-specification rather than efficiency.

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?

A mutation tool with no annotations, no output schema, and 0% schema description coverage needs the description to do substantially more work. Validation rules, failure behavior, and permission requirements are all missing, so an agent cannot call this confidently.

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

Parameters2/5

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

Schema description coverage is 0%, so both parameters (id, title) are undocumented. The description implies a title argument exists and is validated, but adds no format, length, or failure semantics for either parameter, leaving the schema's bare 'Id'/'Title' as the only guidance.

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 names a specific verb ("Retitle") and resource ("an entry"), so the operation is immediately clear. It does not differentiate from the similarly-named sibling 'relabel', leaving ambiguity about whether retitling and relabeling are distinct operations.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives, no exclusions, and no prerequisites such as required permissions or entry state. With 'relabel' among the siblings, the absence of routing guidance is a real gap.

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. 9 tool updatesv0.2.0
    • First observedcomment
    • First observededit_body
    • First observededit_comment
    • First observedfile_entry
    • First observedget
    • First observedquery
    • First observedrelabel
    • First observedset_status
    • First observedset_title

TDQS

B3.3/5.0

Scored across 9 tools

Disambiguation4/5

Each tool maps to a fairly distinct action: create (file_entry), read (get), list (query), and targeted mutations (set_status, set_title, relabel, edit_body, edit_comment, comment). The main friction is edit_body vs edit_comment, which overlap since the body is described as 'its first comment'—an agent could hesitate over which to use.

Naming Consistency3/5

Several tools follow a clean verb_noun pattern (edit_comment, set_status, set_title, edit_body, file_entry), but others are bare single words (get, query, relabel, comment). It's readable but the convention is mixed rather than predictable.

Tool Count5/5

Nine tools is well-scoped for an issue-tracker surface, covering the core lifecycle without bloat or redundancy. Each tool clearly earns its place.

Completeness4/5

Creation, reading, listing, commenting, and most update operations (status, title, labels, body, comments) are covered. The notable gap is deletion—no tool to remove an entry or a comment—though this may be intentional for an append-oriented bug tracker.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables multiple AI agents to coordinate work on the same codebase by providing real-time file locking, commit approval, and agent awareness through a lightweight WebSocket-based MCP server.
    9
    21 npm
    11
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables multiple AI coding agents to collaborate on the same Git repository without conflicts through isolated worktrees, file locking, automated test verification, and a serialized merge queue.
    3 npm
    7
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables multiple AI coding agents to safely collaborate in the same git working tree by managing file ownership, merging writes, and preventing snapshot races.
    6 npm
    2
    MIT