No API-key paste, no env-var hunt. Claude Code, Cursor, or any MCP-capable agent connects to your RoboTrace project via the OAuth Device Authorization Grant flow — the same pattern gh auth login and aws sso login use.
Paste any of these into Claude Code (with the robotrace plugin installed). The skill auto-invokes from the trigger phrase — no need to type the skill name.
Use the RoboTrace skill to integrate observability into this projectSet up RoboTrace for this ROS 2 robotShow me the last 5 failed missions on warehouse-amr-001Which robots haven't reported in the last hour?Mission a3b1c2 failed — pull the trace tree and tell me what went wrongProvision a new device called ur5-cell-3, MoveIt 2 manipulatorAuthenticate me with RoboTraceLog out of RoboTrace and clear local credentialsterminal dashboard browser
───────── ─────────────────
$ claude
> /robotrace-integrate
Claude: Open
https://robotrace.cloud/device
and enter code: ABCD-1234
(waiting...) → /device
enter code: ABCD-1234
[ Continue ]
↓
Authorize: Claude Code (MCP)
- read fleet
- write fleet
[ Authorize ]
↓
Claude: ✓ Authenticated ✓ Return to terminal
(token saved to
~/.config/robotrace/
credentials.json,
valid for 90 days)One-time install of the MCP server; every Claude Code session after that uses it automatically.
github.com/ParagDD/robotrace-platform.bash# In any Claude Code session:
> /plugin marketplace add ParagDD/robotrace-platform
> /plugin install robotrace@robotrace-cloud
> /reload-plugins
# That's it. The plugin bundles:
# - 4 skills (quickstart, integrate, setup-ros2, best-practices)
# - 12 MCP tools (authenticate, list_missions, query_telemetry, ...)
#
# Now ask Claude anything:
> Use the RoboTrace skill to integrate observability into this projectrobotrace-mcp Python package directly. The agent spawns it as a subprocess and talks to your RoboTrace project via the REST API.bash# 1. Install the MCP server
pip install robotrace-mcp
# 2. Wire it into Claude Code (~/.claude/settings.json)
# or Cursor (~/.cursor/mcp.json) or any other MCP-capable agent
{
"mcpServers": {
"robotrace": {
"command": "robotrace-mcp"
}
}
}
# 3. In any session, just ask
> /robotrace-integrate
# or
> Use the RoboTrace skill to authenticate me/device in your browser. Sign in if needed, click Authorize, return to your terminal. The agent picks up the token automatically within ~5 seconds.~/.config/robotrace/credentials.json with 0600 permissions. All MCP tools — list_missions, get_mission, query_telemetry, provision_device, and the rest — use it transparently. Valid for 90 days./settings/connected-apps. Existing tokens get rejected on the next API call.bash# Browser:
https://robotrace.cloud/settings/connected-apps
# -> Find the entry -> [ Revoke ]
# Or locally (deletes the token from disk, but doesn't
# revoke it server-side — for full revocation use the
# dashboard):
python -c "from robotrace_mcp import credentials; credentials.revoke()"read:fleet and/or write:fleet scopes shown to you before you authorize./settings/connected-apps. Instant revoke. No refresh-token escalation paths.webbrowser.open(). The CLI also prints the verification URL — copy/paste it into any browser on any device.timeout if no decision was made./settings/connected-apps) or expired (90 days). Re-authenticate by running any MCP tool — it'll trigger a fresh device flow.This OAuth flow is specifically for no-browser clients — CLIs, AI agents, MCP servers. For the robotrace-sdk Python package that runs on your robots, continue to use long-lived API keys provisioned at /settings/api-keys: robots need stable credentials that survive reboot, not an interactive login flow.
The same backend api_keys table stores both kinds of tokens, distinguished by a Device: prefix on the display name. So your /settings/api-keys and /settings/connected-apps pages stay separate and uncluttered.