MCP — tools
Every tool the @bichito/mcp server exposes. Inputs, outputs, required scope, error cases.
The bichito MCP server exposes 18 tools split into three groups: install assist (no auth), read (one of the read:* scopes) and mutate (one of the write:* scopes). This page lists them all.
When you don't need every tool, mint a token without the corresponding scope — fewer tools means a smaller surface for the AI to reason over and less risk if the token leaks.
Tokens carry a hive binding chosen at mint time (see Scopes → Scope across hives). Account-wide tokens can pass any team_id to a tool that takes one; hive-scoped tokens MUST match their bound team — passing a different one returns 404.
Install assist
These three tools don't need an MCP token; they work with BICHITO_API_KEY alone. Use them when you want the AI to drop the widget into a project.
get_install_snippet
Returns the install snippet for a given framework, with your API key already filled in.
- Inputs:
framework— one ofhtml,react,next,vue,astro,wp. - Returns:
{ target_file, code }. The AI then openstarget_fileand pastescode. - Required scope: none (uses the project key in
BICHITO_API_KEY).
detect_framework
Reads package.json (or index.html for static sites) at the repo root and guesses which framework the project uses.
- Inputs:
repo_root— absolute path to the project root. - Returns: one of the framework strings above, or
unknownif nothing matches. - Required scope: none — runs locally.
verify_api_key
Pings the bichito API to confirm the configured BICHITO_API_KEY works, before the AI pastes it anywhere.
- Inputs: none.
- Returns:
{ ok: true, project_id, project_name }on success; an error otherwise. - Required scope: none.
Read
list_honeycombs
Lists every honeycomb (project) the token's user owns.
- Required scope:
read:honeycombs. - Returns: array of
{ id, team_id, name, description, created_at }.
list_bugs
Lists bichitos with optional filters.
- Inputs (all optional):
status,severity,search,honeycomb_id,limit(default 50, max 200),offset. - Returns: array of bug summaries.
- Required scope:
read:bugs.
search runs through the same Postgres FTS as the dashboard — see Inbox → Search for the matching rules.
get_bug
Returns one bichito's full detail (everything the dashboard sidebar shows).
- Inputs:
bug_id. - Returns: the full bug payload including comments and labels.
- Required scope:
read:bugs.
get_stats
Cross-team summary: open count + breakdowns by severity and status.
- Inputs: none.
- Returns:
{ teams: [...], open_count, by_severity, by_status }. - Required scope:
read:teams.
list_labels
Lists the labels available in a hive.
- Inputs:
team_id. - Returns: array of
{ id, name, color, created_at }. - Required scope:
read:labels.
Triage
resolve_bug
Marks a bichito as resolved. Idempotent — calling on an already-resolved bichito is a no-op.
- Inputs:
bug_id. - Required scope:
write:bugs.
mark_spam
Marks a bichito as spam (drops it out of the triage queue).
- Inputs:
bug_id. - Required scope:
write:bugs.
assign_me
Assigns the bichito to the user who owns the MCP token.
- Inputs:
bug_id. - Required scope:
write:bugs.
comment_on_bug
Adds a comment on a bichito.
- Inputs:
bug_id,body(1–10,000 chars). - Required scope:
write:bugs.
update_bug
Sets status and/or severity. Mutually optional — at least one must be provided.
- Inputs:
bug_id, optionallystatus(open/in_progress/resolved/closed/wont_fix), optionallyseverity(low/medium/high/critical). - Required scope:
write:bugs.
Idempotent: a field already at the requested value is skipped, and the SSE fan-out only fires for fields that actually changed.
Labels
create_label
Creates a new label in a hive.
- Inputs:
team_id,name,color(hex#RRGGBB). - Required scope:
write:labels.
update_label
Renames or recolors a label. At least one of name / color must be set.
- Inputs:
label_id, optionallyname, optionallycolor. - Required scope:
write:labels.
delete_label
Deletes a label. Cascades to every bichito it was attached to (the label is removed from each).
- Inputs:
label_id. - Required scope:
write:labels.
attach_label
Attaches a label to a bichito. Pass either label_id or label_name (the AI usually has the name in hand).
- Inputs:
bug_id, optionallylabel_id, optionallylabel_name. - Required scope:
write:bugs. - Idempotent: attaching an already-attached label is a no-op.
detach_label
Removes a label from a bichito.
- Inputs: same as
attach_label. - Required scope:
write:bugs. - Idempotent.
Errors
Every tool returns an error response in the same shape:
{
"error": "...human message..."
}
Common cases:
401 Invalid MCP token— yourBICHITO_MCP_TOKENis wrong or revoked.403 scope required: write:bugs— your token doesn't carry the scope this tool needs.404 Not found— the resource (bichito, label, honeycomb) belongs to another user, or doesn't exist. We mask 403s as 404s for resources you don't own to avoid leaking IDs.429 Too Many Requests— same per-IP limits as the dashboard. Back off and retry.
The MCP package surfaces these errors to the AI as plain text so it can self-correct (e.g. "The label 'regression' doesn't exist — let me create it first.").