API reference
MCP server
The endpoint
The server lives on the API origin, not the dashboard: https://fixback-api.dev.wemuda.com/mcp, or https://fixback-api.dev.wemuda.com/mcp/readonly where only the read tools exist. A
self-hosted or preview stack uses its own API origin — Settings → MCP in your dashboard
shows the exact URL and command for the deployment you are signed in to.
Claude Code
claude mcp add --transport http --scope user fixback https://fixback-api.dev.wemuda.com/mcp--scope user registers the server for your account, so it is there in every
project and you sign in once; drop it to add Fixback to the current directory alone. Then run /mcp in Claude Code and pick Authenticate: your browser opens
Fixback, you approve the connection, and the agent acts as you — only in workspaces you belong
to. Nothing to copy, no key to store.
Cursor, Claude.ai, and other clients
Any client that speaks MCP over HTTP works. Point it at the URL above; it will discover the sign-in flow by itself. Clients that take a JSON config want this:
{ "mcpServers": { "fixback": { "type": "http", "url": "https://fixback-api.dev.wemuda.com/mcp" } }}CI and headless use: an API key
Where no browser can open — CI, a script, a server-side agent — create a personal key in Settings → MCP and send it as a bearer token. A key acts as you, carries only the scopes you tick, and can be given an expiry and revoked at any time.
claude mcp add --transport http --scope user fixback https://fixback-api.dev.wemuda.com/mcp \ --header "Authorization: Bearer fbu_your_key"The tools
Most questions are one call: “what's open on Clockwork?” is list_issues with the project's name, and “look at CLK-12” is get_issue. Issue ids accept keys like CLK-12 as well as UUIDs.
| Tool | Needs | What it does |
|---|---|---|
list_projects | read | Your projects across every workspace, with open-issue counts. Rarely needed — the other tools take a project's name. |
list_issues | read | Issues newest-first, in one project (by name, key, or id) or across every workspace. Filters by state, kind, and words in the title; pages with a cursor. |
get_issue | read | One issue as a complete briefing: the Brief, the reporter's words, the page and environment, the code-area pointer and the trace timeline. |
get_trace_window | read | The raw console, network and navigation entries behind an issue, when the briefing's trace is not enough. |
update_issue | issues:write | Resolve, dismiss, close or reopen an issue, set its kind, mute it. |
merge_issues | issues:write | Merge a duplicate into the issue it duplicates, within one project. |
detach_issue | issues:write | Undo a merge. |
dismiss_duplicate | issues:write | Mark two issues as not duplicates, so the pair is never suggested again. |
update_brief | issues:write | Replace an issue's Brief with your own Markdown. |
regenerate_brief | issues:write | Discard the Brief and have analysis write a new one; it arrives asynchronously. |
Approving tools once
Claude Code asks before it calls a tool it has not used before. Choose don't ask again there, or settle it up front in ~/.claude/settings.json — this matches the access you picked above:
{ "permissions": { "allow": [ "mcp__fixback" ] }}"mcp__fixback" is the whole server, so writes never prompt either; pick Read only above to pre-approve the four read tools alone. This is your client's setting, not Fixback's — other clients have their own (Claude.ai approves
a connector once, for example).
When something goes wrong
| What you see | What it means |
|---|---|
405 Not Allowed from nginx | The URL points at the dashboard or marketing origin. Use the API origin above. |
401, or the client asks you to sign in again | The key was revoked or expired, the account was removed, or the access token aged out — re-authenticate, or create a new key. |
403 insufficient_scope | A write tool with a read-only credential. Create a key with Allow changes to issues, or reconnect asking for write access. |
| “Issue key … is ambiguous” | Two of your workspaces share a project key. The error lists the matching issues — call again with the UUID it names. |
| “No project …” | The error lists the projects you can reach; use one of those names or keys. |