For AI clients · MCP

Triage from Claude.

feedback-hub speaks the Model Context Protocol, so any MCP-aware client (Claude Code, Claude Desktop, Cursor) can read your inbox, look at the actual screenshots a user took, and move items through the pipeline — without leaving your editor.

list_feedback

Query the inbox by project, status, type, or substring.

get_feedback

Full row with the attached screenshot inlined as a base64 image — the model can see the bug.

list_comments

Read the whole thread on an item: private notes, team comments, the reporter conversation.

update_status

Move items along: new → triaged → in_progress → resolved → verified → wontfix.

add_comment

Post a private triage note, or a team comment your project members can read.

edit_comment

Rewrite a comment you wrote. Body only — the tier and author stay frozen.

delete_comment

Remove a comment you wrote. A member's comment or a reporter's reply is off-limits.

delete_feedback

Delete an item and its whole thread. Permanent — for spam and duplicates.

Nothing here can email your users.Both comment tiers stay internal — replying to a reporter is a deliberate click in the inbox, not something a model can reach for. Edits and deletes are author-scoped the same way the database is: your own comments, never someone else’s words.

Connect a client

Endpoint: https://feedback-hub.orosa.io/api/mcp. Auth: Bearer token in the Authorization header.

Claude Code

terminalbash
# Add the server to Claude Code:
claude mcp add --transport http feedback-hub \
  https://feedback-hub.orosa.io/api/mcp \
  --header "Authorization: Bearer YOUR_TOKEN_HERE"

Claude Desktop / Cursor

Add this to your MCP settings JSON:

mcp.jsonjson
{
  "mcpServers": {
    "feedback-hub": {
      "url": "https://feedback-hub.orosa.io/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN_HERE"
      }
    }
  }
}

Get your token

Sign in to the inbox, then generate a token at /settings/tokens. Each token is scoped to your projects only — give it a name (e.g. claude-code · macbook) and it’s shown once. You can have multiple, and revoke any of them later.

What the loop feels like

Paste a feedback-hub URL or just ask Claude what’s new. The model reaches for the right tool on its own.

transcripttext
You: What new bugs came in today on Resibow?
Claude: → calls list_feedback({ project: "Resibow", status: "new" })
        Three new items: a receipt scanner hang, …

You: Look at the second one in detail.
Claude: → calls get_feedback({ id: "909ee…" })
        [sees the inlined screenshot]
        The error is from a tooltip overflowing the page; the
        screenshot shows it bleeding past the right edge at line 412
        of the dashboard component.

You: Mark it triaged and leave a note on what you found.
Claude: → calls update_status({ id: "909ee…", status: "triaged" })
        → calls add_comment({ id: "909ee…",
            body: "Tooltip overflows its container at ≥1280px …" })
        Done — the note is private to you.

The Model Context Protocol is an open standard from Anthropic. See the spec and server examples for client/integration details.