Skip to content

Tool reference ​

The Ybug MCP server has twelve tools. Your assistant picks them on its own, so you don't need to call them by name. This page is for when you want to know exactly what it can do, or why it did something.

ToolWhat it doesPlan
list_projectsList your projectsBASIC
get_projectGet a project's statuses, priorities and typesBASIC
list_tagsList the team's tagsBASIC
list_project_membersList who feedback can be assigned toBASIC
list_feedbackFind feedback with filtersBASIC
get_feedbackRead one report in fullBASIC
get_feedback_console_logsRead a report's console logsBASIC
get_feedback_network_requestsRead a report's network requestsBASIC
list_commentsRead a report's commentsBASIC
update_feedbackChange status, priority, type, assignee and tagsSTARTUP
add_commentAdd an internal commentSTARTUP
create_tagCreate a tagSTARTUP

On BASIC, the assistant only sees the read tools. If it tries a triage tool anyway, it gets an error that points to the plans.

IDs and names ​

Projects and reports use their public code as their id, for example hkz92hg6sf. A report's id is the same code you see at the end of its link in the dashboard, so you can paste a report link into the chat.

Wherever a tool takes a status, priority, type or tag, you can pass either its name (matched case-insensitively) or its id from get_project or list_tags. Names are easier to read in a conversation. Ids don't break when someone renames a status.

People are identified by a user id, for example 3f2b9c1e-8d4a-4f6b-9c2e-7a1d5e8f0b3c. It's the id in list_project_members results and in a report's assignee. The assignee filter and update_feedback also take a person's name. When two members share a name, assigning needs the id. Email addresses are never shown.

Read tools ​

list_projects ​

Lists the active projects in the connected team that you can access, sorted by name. Returns each project's id and name.

ArgumentTypeDescription
querystringOnly projects whose name contains this text. Up to 100 characters
pageintegerPage number, starting at 1
page_sizeinteger1–100, default 25

get_project ​

Returns one project with the values its feedback can use:

  • statuses in workflow order, each with an id, a name and a category: backlog, open, in_progress, resolved or closed. The category tells the assistant where a custom-named status sits in your workflow.
  • priorities and types, each with an id and a name
ArgumentTypeDescription
project_idstringRequired. The project id from list_projects

list_tags ​

Lists the team's tags. Tags are shared across all projects in a team, so this is the whole list, including tags not used on any report yet.

ArgumentTypeDescription
querystringOnly tags whose name contains this text. Up to 100 characters
pageintegerPage number, starting at 1
page_sizeinteger1–100, default 25

list_project_members ​

Lists the members of one project that its feedback can be assigned to, sorted by name. Each member has an id, a name and a project role (owner, admin, editor, viewer or guest). Deactivated users and suspended team members aren't listed, because they can't open the project.

ArgumentTypeDescription
project_idstringRequired. The project id
querystringOnly members whose name contains this text. Ignores case and accents. Up to 100 characters
pageintegerPage number, starting at 1
page_sizeinteger1–100, default 25

list_feedback ​

Lists feedback in one project, with filters. Each item has the id, number, title, status, priority, type, assignee, tags, page URL and timestamps. Long descriptions and URLs are shortened; get_feedback returns them in full.

Browser, device and screenshot details aren't in the list. To answer a question like "which reports came from Safari", the assistant opens each report with get_feedback, so narrow the list with filters first.

ArgumentTypeDescription
project_idstringRequired. The project id
statusesarrayStatus names or ids
prioritiesarrayPriority names or ids. null matches reports with no priority
typesarrayType names or ids. null matches reports with no type
tagsarrayTag names or ids. Matches reports with at least one of them
assigneesarrayUser ids, assignee names as shown in results, "me", or null for unassigned
created_afterstringCreated at or after this time, with a timezone, e.g. 2026-09-01T00:00:00Z
created_beforestringCreated at or before this time, with a timezone
querystringText in the title or description. Ignores case and accents. Up to 200 characters
order_bystringcreated_at (default) or updated_at
orderstringasc (oldest first, default) or desc (newest first)
pageintegerPage number, starting at 1
page_sizeinteger1–100, default 25

Each filter array takes 1–50 values. Values inside one filter are combined with OR. Different filters are combined with AND. So statuses: ["Open"], assignees: ["me", null] finds open reports that are assigned to you or to nobody.

A response looks like this (shortened):

json
{
  "page": 1,
  "page_size": 25,
  "total_items": 42,
  "total_pages": 2,
  "items": [
    {
      "id": "hkz92hg6sf",
      "number": 412,
      "project_id": "k3m8vq2x1p",
      "title": "Coupon code rejected at checkout",
      "description": "I typed SPRING10 and it says the code is invalid…",
      "status": "Open",
      "priority": "High",
      "type": "Bug",
      "assignee": {
        "id": "3f2b9c1e-8d4a-4f6b-9c2e-7a1d5e8f0b3c",
        "name": "Jana Nováková"
      },
      "tags": ["checkout"],
      "source_url": "https://acme.example/checkout",
      "created_at": "2026-09-15T09:12:44+00:00",
      "updated_at": "2026-09-15T09:12:44+00:00"
    }
  ]
}

assignee is null when nobody is assigned.

total_pages greater than page means there's more to fetch. The assistant asks for page: 2 next.

get_feedback ​

Returns one report in full:

  • title, full description, status, priority, type, tags and assignee
  • the full page URL and where the report came from (widget, extension, etc.)
  • a link to the report in Ybug
  • browser and version, operating system and version, device type, screen and viewport size
  • a screenshot link and a video link, when the report has them
  • a console summary: whether a console log was captured, how many errors, warnings and other entries it has, and how many network requests it captured and how many failed (the request total is empty for reports sent before totals were recorded)

Screenshot and video links expire after about an hour. The console counts are a quick index. For the entries themselves, the assistant calls the two tools below.

ArgumentTypeDescription
idstringRequired. The report id from list_feedback
include_mediabooleanInclude screenshot and video links. Default true

get_feedback_console_logs ​

Lists the browser console entries captured with a report, newest first. Each entry has its level, message, source file and line, how often it repeated, a timestamp and, by default, its stack trace.

ArgumentTypeDescription
idstringRequired. The report id
levelsstring[]Only these levels: error, warn, info, log, debug
include_stacksbooleanInclude stack traces. Default true
orderstringdesc (newest first, default) or asc
pageintegerPage number, starting at 1
page_sizeinteger1–100, default 25

get_feedback_network_requests ​

Lists the network requests captured with a report, newest first: fetch and XHR calls, and resources that failed to load. Each request has its method, full URL, status, duration, size, a few diagnostic response headers (like content-type and x-request-id) and whether it failed. Request and response bodies are never captured.

Network recording is optional (STARTUP or higher, enabled in the project's widget settings), so an empty list can mean nothing was recorded rather than that nothing failed.

ArgumentTypeDescription
idstringRequired. The report id
errors_onlybooleanOnly failed requests: network errors and 4xx/5xx responses. Default false
statusesstring[]HTTP statuses, exact ("404") or by class ("5xx")
methodsstring[]HTTP methods, for example ["POST"]
url_containsstringOnly URLs containing this text, case-insensitive
orderstringdesc (newest first, default) or asc
pageintegerPage number, starting at 1
page_sizeinteger1–100, default 25

list_comments ​

Lists a report's comments, both internal and public, oldest first. Each comment has its text, whether it's internal, the author's name and timestamps. Author email addresses are never included.

ArgumentTypeDescription
idstringRequired. The report id
orderstringasc (oldest first, default) or desc
pageintegerPage number, starting at 1
page_sizeinteger1–100, default 25

Triage tools STARTUP ​

update_feedback ​

Changes one report's triage fields. Pass only the fields you want to change. Returns the updated report, without media links.

ArgumentTypeDescription
idstringRequired. The report id
statusstring or integerStatus name or id. A report always keeps a status
prioritystring, integer or nullPriority name or id. null clears it
typestring, integer or nullType name or id. null clears it
assigneestring or nullA member id or name from list_project_members, "me", or null to unassign
add_tagsarrayExisting tag names or ids to add, up to 25
remove_tagsarrayTag names or ids to remove, up to 25

add_tags only uses tags that already exist. To add a new tag, the assistant creates it with create_tag first.

Assigning works like in the dashboard. The new assignee and the previous one get the usual assignment emails, but you never get one about your own change. You can only assign people listed by list_project_members, and "me" only works in projects you're a member of.

Moving a report into a status in the Resolved or Closed category can send your feedback auto-reply to the reporter.

add_comment ​

Adds an internal comment to one report. Comments added through MCP are never emailed to the reporter and can't be made public.

ArgumentTypeDescription
idstringRequired. The report id
bodystringRequired. Comment text, up to 500 characters. HTML is removed

create_tag ​

Creates a tag in the connected team. If a tag with the same name already exists (ignoring case and accents), it returns that tag instead of making a duplicate.

ArgumentTypeDescription
namestringRequired. Tag name, up to 30 characters. HTML is removed

A team can have up to 500 tags, and a report up to 25.

Errors ​

When something goes wrong, the tool returns a short message the assistant can read and act on. The common ones:

MessageWhat it means
Project not found or not accessible.Wrong id, an archived project, a project in another team, or one you can't access. For security, these all look the same
Feedback not found or not accessible.The same for a report id
Write actions via MCP require the Startup plan or higherThe team is on BASIC. See plans
This tool requires the "feedback:write" scope.The assistant was connected without change permission. Disconnect and connect again
Unknown status "…" (or priority, type)The name isn't one of the project's values. The assistant should check get_project
Unknown tag "…"A list_feedback tag filter got a tag that isn't in the team. The assistant should check list_tags
Unknown assignee "…"In a filter: no report in the project is assigned to that name or id. In update_feedback: the value isn't a member id or name from list_project_members, me or null
Several members are named "…": …update_feedback got a name that more than one member has. The assistant should use one of the listed ids
You are not a member of this project, so you cannot be assigned to its feedback.update_feedback got assignee: "me" from someone who can see the project through their team role but isn't one of its members
Tag '…' does not existadd_tags or remove_tags got a tag that isn't in the team. To add a new one, the assistant creates it with create_tag first
At least one change must be requested.update_feedback was called with only an id
Feedback must not contain more than 25 tagsThe report already has the maximum number of tags
Team has reached the maximum number of tagsThe team has 500 tags. Remove unused tags in the dashboard
Creating tags requires permission to edit feedback in at least one project.Your role doesn't let you edit reports in any project, so you can't create tags either
Rate limit exceeded: …Too many calls in a short time for your team. The message says how long to wait

For connection problems, see Troubleshooting.