FFeedbacks DocsOpen app →

MCP server

Feedbacks exposes a Model Context Protocol server so an AI coding agent (Claude Code, Cursor, …) can read and act on your feedback — list projects, read feedback with the captured screenshot, reply, change status, and assign — without leaving the editor.

1. Create a token

In the dashboard, open Settings → Developer and create an access token. It's workspace-scoped, carries your role, and is shown only once.

2. Connect your agent

The server speaks Streamable HTTP at /api/mcp and authenticates with your token as a bearer credential.

For Claude Code:

claude mcp add --transport http feedbacks https://<your-app-domain>/api/mcp \
  --header "Authorization: Bearer <your-token>"

Or add it to your client config directly:

{
  "mcpServers": {
    "feedbacks": {
      "type": "http",
      "url": "https://<your-app-domain>/api/mcp",
      "headers": { "Authorization": "Bearer <your-token>" }
    }
  }
}

Locally the URL is http://localhost:3001/api/mcp.

Tools

ToolWhat it does
list_projectsProjects in the workspace, with open-feedback counts.
list_feedbackFeedback for a project; filter by status, priority, assignee.
get_feedbackOne item in full — fields, timeline, and the screenshot as an image.
reply_to_feedbackPost a reply, as your user.
set_feedback_statusMove an item (To Review → … → Done / Rejected).
assign_feedbackAssign to a workspace member, or unassign.

How access works

Every tool call is scoped to the token's workspace and gated by the same role→permission rules as the dashboard:

  • A project id from another workspace returns not found — cross-workspace access is impossible.
  • A viewer-role token can read but is forbidden from replying, changing status, or assigning.

Mutations fire the same side effects as the dashboard — replying notifies the team, resolving sends the resolution email, assigning notifies the assignee.

A typical loop

Ask your agent "what feedback is open on the marketing site?" → it calls list_projectslist_feedbackget_feedback (and sees the screenshot of the issue) → fixes the code → reply_to_feedbackset_feedback_status to Done. The client sees it resolved in their portal.