Public leaderboard

Public assessment

Berckan/bugherd-mcp (bugherd-mcp)

bugherd-mcp · v0.2.0 · scanned

What changed in the harness

Selection accuracy 94→92, token cost up 13%, unconfirmed writes 0%→0%.

Category breakdown

Where the score comes from.

Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.

01Safety

0.0 / 30

0.0 out of 30
02Legibility

19.6 / 30

19.6 out of 30
03Economics

18.0 / 20

18.0 out of 20
04Discoverability

10.3 / 20

10.3 out of 20

Highest-impact fix

Estimated gain +30 points

Add explicit identity and permission preflight tools

Expose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.

Description evidence

Defects and rewrites.

23 defects found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.

Tool Defect types Suggested rewrite
bugherd_get_user_tasks
name_restates_behavior params_unexplained
Retrieve the tasks assigned to a specific BugHerd user, identified by user_id (find IDs via bugherd_list_users). Optionally narrow results by status or priority and page through them with page. Returns the matching tasks with their IDs, descriptions, statuses, and priorities.
bugherd_get_user_projects
name_restates_behavior params_unexplained
Retrieve the BugHerd projects that a specific user (user_id) can access, useful for determining where a member or guest works before reading their tasks. Returns each accessible project's name, ID, and URL.
bugherd_list_active_projects
name_restates_behavior
List only the currently active BugHerd projects accessible to the authenticated user, excluding archived or closed boards. Returns each active project's name, ID, and URL, e.g., to decide which project to work in.
bugherd_get_project
name_restates_behavior
Retrieve full details for a single BugHerd project identified by project_id, such as its name, development URL, and active/public flags. Useful to confirm a project's configuration before updating it or operating on its tasks.
bugherd_create_project
no_return_description
Create a new BugHerd project with the required name and development URL (devurl), optionally setting is_active or is_public. Returns the newly created project together with its project_id for use in subsequent task, column, and member operations.
bugherd_update_project
no_return_description
Update settings of an existing BugHerd project (project_id), such as its name, development URL, or active/public status. Returns the updated project reflecting the new settings.
bugherd_delete_project
no_return_description
DESTRUCTIVE: permanently delete a BugHerd project (project_id) along with all of its tasks. This cannot be undone; returns confirmation of which project was deleted.
bugherd_add_member
no_return_description
Add an existing team member (user_id) to a BugHerd project so they can view and work on its tasks. Returns confirmation that the membership was added.
bugherd_add_guest
no_return_description
Add a guest/client to a BugHerd project, providing either their user_id or email; supply one of the two. Returns confirmation of the guest being added to the project.
bugherd_list_archived_tasks
name_restates_behavior
List the tasks that have been archived (removed from the active taskboard) for a project, paginated with page. Returns the archived tasks with their IDs, descriptions, and statuses, e.g., to audit or restore old work.
bugherd_create_task
params_unexplained no_return_description
Create a new task/bug in a BugHerd project from a description, optionally setting priority, status/column, tag_names, an assignee (assigned_to_id), a requester_email (the client/customer who reported the bug, used for notifications), and an external_id for your own reference. Returns the created task and its task_id.
bugherd_move_tasks
no_return_description
Move one or more tasks (task_ids) out of a source project (project_id) into a destination project (destination_project_id). Returns the outcome of the move so you can confirm which tasks were relocated.
bugherd_update_task
no_return_description
Update attributes of an existing task (task_id) in a project, e.g., its status (use a column name from bugherd_list_columns to mark it done or move it through workflow), priority, description, or assignee (assigned_to_id; pass null to unassign). Returns the updated task.
bugherd_get_column
name_restates_behavior params_unexplained
Retrieve details for a single Kanban column (status) of a project (project_id), identified by column_id, such as its name and position. Useful to look up a column name before using it as a task status.
bugherd_create_column
no_return_description
Create a new column (status) with the given name at a position in a project's Kanban board. Returns the created column and its column_id so you can reference it when setting task statuses.
bugherd_update_column
no_return_description
Rename or reposition an existing Kanban column (column_id) in a project's board. Returns the updated column with its current name and position.
bugherd_create_comment
params_unexplained no_return_description
Post a comment with the given text on a task (task_id) in a project, optionally attributing it to a user via user_id or email. Returns the created comment.
bugherd_list_attachments
params_unexplained
List every attachment attached to a task (task_id) in a project, returning each attachment's ID, filename, and URL so you can later fetch or delete specific ones.
bugherd_get_attachment
name_restates_behavior params_unexplained
Retrieve details for a single attachment (attachment_id) on a task (task_id) in a project, such as its filename, URL, and metadata, e.g., to locate or download the file attached to a bug.
bugherd_create_attachment
params_unexplained no_return_description
Attach a file to a task (task_id) by giving its url and the file_name to display for it. Returns the created attachment and its attachment_id.
bugherd_delete_attachment
params_unexplained no_return_description
DESTRUCTIVE: permanently delete an attachment (attachment_id) from a task (task_id) in a project. This cannot be undone; returns confirmation of the deletion.
bugherd_create_webhook
no_return_description
Create a webhook that POSTs an event notification to target_url whenever a chosen event (project_create, task_create, task_update, comment, or task_destroy) occurs, optionally scoped to a project_id. Returns the created webhook so you can confirm its configuration.
bugherd_delete_webhook
no_return_description
DESTRUCTIVE: permanently delete a webhook (webhook_id) so it no longer receives event notifications. Returns confirmation of the deletion.

Selection evidence

Confusable tool pairs.

9 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.

Tool A Tool B Confidence Why they collide
bugherd_get_task bugherd_get_task_global medium A task like get the details of task 12345 is ambiguous about ID namespace: bugherd_get_task requires a project_id plus task_id, while bugherd_get_task_global fetches purely by global ID, so an agent holding only a task ID can pick the wrong one and fail.
bugherd_get_task bugherd_get_task_by_local_id medium Users quote the visible #123 local IDs in BugHerd, so get task #123 in project 5 may send the local number into bugherd_get_task's task_id field instead of bugherd_get_task_by_local_id's local_task_id.
bugherd_get_task_global bugherd_get_task_by_local_id medium A flat get task 123 leaves whether 123 is a global or project-scoped local ID unresolved, since one tool only takes a global ID and the other requires project_id plus local_task_id.
bugherd_get_user_tasks bugherd_get_task low When a request mentions both a user and a task, e.g. get the task John is working on, the agent may route on the task noun to bugherd_get_task rather than the user-based listing, or confuse which ID (user vs task) it holds.
bugherd_list_projects bugherd_list_active_projects low A plain list projects or show my current projects request carries no active/inactive signal, so the general listing and the active-filtered tool are both surface matches yet return different sets.
bugherd_list_tasks bugherd_list_archived_tasks low Neither description states whether bugherd_list_tasks includes archived tasks, so list all tasks in project 5 can be routed to the generic listing or the archived-only tool depending on inference.
bugherd_list_tasks bugherd_list_feedback_tasks medium bugherd_list_tasks is itself described as listing tasks (bugs/feedback), so show me the feedback for project 3 plausibly matches both the generic list and the unprocessed/new feedback-specific tool, yielding different results.
bugherd_list_tasks bugherd_list_taskboard_tasks low show the taskboard or list the tasks in the doing column for project 5 can be routed to the generic status-filtered listing as easily as to the taskboard-specific tool, and the returned sets differ since feedback and archived are excluded.
bugherd_add_member bugherd_add_guest medium add user 5 to project 3 without specifying team member vs guest/client is genuinely ambiguous; bugherd_add_member takes only user_id while bugherd_add_guest also accepts an email, so the role must be inferred from context.

Compare the field

One score is useful.
The evidence makes it actionable.

Back to the leaderboard