Developers
Widget, ingest API, and MCP tools.
Everything an integration needs: the widget snippet, the ingest contract, and the three MCP tools your agent uses to close the loop.
1 · Embed the widget
<script src="https://fixcue.app/widget.js" defer
data-token="fc_pub_..." <!-- project public write token -->
data-origin="https://fixcue.app"> <!-- where to POST -->
</script>Or from npm: initFixcue({ token, apiBase }) via @fixcue/widget. The widget renders in a Shadow DOM, ships ~10KB gzip, never auto-opens, and picks en/zh-CN from <html lang>.
2 · Ingest API
POST https://fixcue.app/api/v1/ingest
Authorization: Bearer fc_pub_...
{ "message": "Pay button does nothing", "page_url": "https://app/checkout",
"selector": "#pay-btn", "component_stack": "Checkout > PayBtn",
"console": [{"level":"error","message":"...","ts":0}],
"network": [{"method":"POST","url":"...","status":500,"duration_ms":120}],
"screenshot_base64": "... or null" }| Code | Body | Meaning |
|---|---|---|
| 201 | { id, status: "new" } | Stored; triage runs async (<8s) |
| 400 | invalid_body | Schema violation (message 1–2000 chars, etc.) |
| 401 | invalid_token | Unknown or malformed public token |
| 402 | free_quota_exceeded | Free plan's 50 items/month spent |
| 403 | origin_not_allowed | Origin/Referer not in allowed_origins |
| 429 | rate_limited, retry_after | >30 requests / 10 min / IP per project |
Console keeps error/warn only (≤30 entries, ≤500 chars, 60s window). Network keeps failed or status ≥400 only (≤15). Sensitive query params are redacted before storage.
3 · MCP server (agent side)
# env
FIXCUE_TOKEN=fc_agt_... # agent token from project setup (shown once)
FIXCUE_API_BASE=https://fixcue.app
npx -y @fixcue/mcp # stdio server| Tool | Input | Returns |
|---|---|---|
list_open | { status?, classification?, limit? } | Open items: id, status, class, message, page_url, created_at |
get_bundle | { public_id } | Markdown repro bundle — context, console, network, signed screenshot link |
update_status | { public_id, to, note?, pr_url? } | Validates the transition; resolved requires a note or pr_url |
Agents may move an item fixable → in_progress → needs_review → resolved or wont_fix. Items classified needs_decision refuse agent updates until a human reclassifies them in the dashboard.