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_API_KEY"

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_API_KEY"
      }
    }
  }
}

Get an API key

Sign in, then create a key at /settings/tokens. The key runs as you: it can only see and change what your account can. Give it a name (e.g. claude-code · macbook). It’s shown once. Uncheck “Allow changes” for a read-only key. Revoke it any time.

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.