Full account control
The account server lists your visible sessions and routes tools with an explicit session_id, so parallel calls cannot drift into the wrong binary. Permissions are re-checked on every call.
| URL | Auth | Access |
|---|---|---|
| /mcp/account | OAuth or account bearer token | All visible sessions, using your role on each |
| /mcp/v/<token> | None - the share token is the capability | One shared session, always read-only |
app.reverser.space/v/<token>. Mint one from the Share dialog in the app. It is always read-only.list_sessions, then pass the returned id to analysis, notes, mutation, and debugger tools.Claude Code
Sign in once, add the account endpoint, and use it across projects and sessions:
Authenticate - obtain an account bearer token
curl -X POST https://api.reverser.space/api/auth/login \
-d '{"username":"you","password":"..."}'
# {"token":"...","user":{...}}
Connect - one server for the whole account
claude mcp add reverser --transport http \
https://api.reverser.space/mcp/account \
--header "Authorization: Bearer <token>"
Scope it with -s user for all your projects or -s project to share it through .mcp.json. The default is local to the current directory.
Cursor, Windsurf, and other clients
Any MCP client that speaks HTTP takes the same account URL:
{
"mcpServers": {
"reverser": {
"url": "https://api.reverser.space/mcp/account",
"headers": { "Authorization": "Bearer <token>" }
}
}
}
url at /mcp/v/<token> and drop the headers block entirely. No account, no bearer.Confirm and clean up
Verify - server plus connection status; then ask it to call list_sessions
claude mcp list
Use it - talk to the client, it picks the tools
Triage this binary, decompile the top-ranked function, and
explain what it does.
Rename FUN_00104020 to parse_header.
Remove
claude mcp remove reverser
Writes such as write_notes and renames need editor role on the target session. Account MCP lists the common surface once, then rejects any call above your current grant before it touches the session. For notes, read first and pass the returned revision when writing; if somebody saved meanwhile, the server returns a safe conflict so your agent can merge instead of overwriting their work.
When it does not connect
| Symptom | Cause |
|---|---|
| 404 on connect | Invalid or revoked token, or the URL is not a /mcp/ endpoint |
| 401 on /mcp/account | Missing or expired bearer token - log in again for a fresh one, or reconnect with OAuth |
| Write returns role_required | Your account is only a viewer on that target session |
| First call is slow | The session was idle and is reopening from its saved Ghidra project - it settles after a few seconds |
Bring your own agent, or invite ours. Either way it joins the session like a teammate - attributed, permission-capped, on your key.