RevEng.AI MCP server

The platform exposes its capabilities as Model Context Protocol tools so any compliant client (Claude Desktop, Cursor, VS Code, Cline, custom agents) can call them with a single configuration entry.

Endpoint

https://api.reveng.ai/mcp/

Authentication

Use your existing RevEng.AI API key (or a signed JWT from the auth service) as a Bearer token.

Client configuration

Pick your client below. All of them speak the same protocol — the only differences are the file location and the wrapping JSON key.

Claude Code

Command: add the server in one step from any terminal.

claude mcp add-json reveng-platform \
  '{"type":"http","url":"https://api.reveng.ai/mcp/","headers":{"Authorization":"Bearer YOUR_TOKEN"}}'

Verify with claude mcp list. The entry is written to ~/.claude.json under mcpServers and is picked up immediately — no restart needed.

Claude Desktop

Config file: macOS — ~/Library/Application Support/Claude/claude_desktop_config.json
Windows — %APPDATA%\Claude\claude_desktop_config.json
Linux — ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "reveng-platform": {
      "type": "http",
      "url": "https://api.reveng.ai/mcp/",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN"
      }
    }
  }
}

Quit Claude Desktop fully (Cmd+Q / File → Quit, not just close the window) and reopen it. The server appears in the tools menu when configured correctly.

Cursor

Config file: Project — .cursor/mcp.json in the repo root
Global — ~/.cursor/mcp.json

{
  "mcpServers": {
    "reveng-platform": {
      "type": "http",
      "url": "https://api.reveng.ai/mcp/",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN"
      }
    }
  }
}

Open Cursor Settings → MCP and toggle the server on. Cursor reloads the connection without a full restart.

VS Code (native MCP)

Config file: Workspace — .vscode/mcp.json
User — Command Palette → MCP: Open User Configuration

{
  "servers": {
    "reveng-platform": {
      "type": "http",
      "url": "https://api.reveng.ai/mcp/",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN"
      }
    }
  }
}

Note the top-level key is servers, not mcpServers. Run MCP: List Servers from the Command Palette to confirm the server is connected.

Cline (VS Code / Cursor extension)

Config file: click the MCP icon in the Cline sidebar → Edit MCP Settings, or edit directly:
macOS — ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json

{
  "mcpServers": {
    "reveng-platform": {
      "type": "streamableHttp",
      "url": "https://api.reveng.ai/mcp/",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN"
      }
    }
  }
}

Cline uses "streamableHttp" rather than "http" for the transport type. Reload the VS Code window after editing.

Other clients

Any client conforming to the MCP specification can connect. The configuration follows the same shape — an HTTP transport pointing at https://api.reveng.ai/mcp/ with an Authorization: Bearer <token> header. Check your client's docs for the exact JSON schema and config-file location.

Available tools

Generated from the live server's /tools.json. Destructive tools mutate platform state and trigger approval prompts in MCP-compliant hosts.

ToolDescription
ai_decompile_function Gets the AI-powered decompilation for a function. Returns the result immediately if one already exists, reports the current status if a task is in progress, or kicks off an async decompilation task if none exists. Requires write access to start a new task. If no function_id is provided, defaults to the function from the conversation context.
decompile_and_wait Starts an AI decompilation for a function and waits for completion, returning the final source. Discards any existing result. Charges credits. If the workflow doesn't finish within timeout_seconds (max 600), the tool returns the current progress — call get_ai_decompilation_status to keep polling. destructive
edit_function_types Edits function type data with surgical precision. Supports renaming/retyping arguments, stack variables, and struct members, as well as updating the function header (name and/or return type). Each edit preserves all other fields. Uses optimistic concurrency control to prevent lost updates. IMPORTANT: You must always confirm the edit with the user before calling this tool — never edit function types without explicit user approval. Requires write access. If no function_id is provided, defaults to the function from the conversation context.
generate_pdf_report_and_wait Starts a PDF report generation workflow and waits for completion. If the workflow doesn't finish within timeout_seconds (max 600), the tool returns the current progress — call get_pdf_report_status to keep polling. Once COMPLETED the PDF is available from the platform UI. destructive
get_ai_decompilation_inline_comments_status Returns the current progress of the AI decompilation inline-comments workflow for a function.
get_ai_decompilation_status Returns the current progress of the AI decompilation workflow for a function.
get_ai_decompilation_summary_status Returns the current progress of the AI decompilation summary workflow for a function.
get_analysis_queue_position Returns the queue position for a processing analysis — the number of analyses with a lower analysis_id that are still being processed.
get_binary_info Retrieves information about a binary. Pass analysis_id, or omit it to use the analysis from the conversation context. Use the 'include' parameter to select which data to return: details (metadata), analyses (list of analyses), strings (extracted strings with optional search/pagination).
get_capabilities_for_analysis Retrieves capabilities for an analysis. Pass analysis_id, or omit it to use the analysis from the conversation context. Optionally filters by function_id. If no capabilities results exist, automatically triggers a capabilities task. Returns status and a list of capabilities. Capabilities are asynchronous — if the task is still running, call this tool again to check for updated results. Requires write access to trigger a new task.
get_collection_by_id Retrieves information about a collection by its ID. Use this tool to get details of a specific collection when you have the collection_id available.
get_function_history Returns the rename history for a function. Each row is a previous name plus when it was changed and by whom.
get_function_info Retrieves information about a function by its ID or name. Use the 'include' parameter to select which data to return: details, types (effective), types_original (system), types_user (user edits only), types_diff (changes between user and original), disassembly (basic blocks, local variables, params, return type), callees (outgoing calls), callers (incoming calls), ai_decompilation, ai_summary. When looking up by name, the conversation context is used to scope the search. At least function_id or function_name must be provided.
get_function_matches_for_analysis Retrieves function matching results for an analysis. Pass analysis_id, or omit it to use the analysis from the conversation context. If no matching results exist, automatically triggers a matching task. Returns status, progress (0-100), and a paginated list of matched functions with similarity scores. Function matching is asynchronous — if progress is less than 100, call this tool again to check for updated results.
get_function_matches_for_functions Retrieves function matching results for specific functions. Pass function_ids (one or more), or omit to use the single function from the conversation context. If no matching results exist, automatically triggers a matching task. Returns status, progress (0-100), and a paginated list of matched functions with similarity scores. Function matching is asynchronous — if progress is less than 100, call this tool again to check for updated results.
get_function_summary Generates or retrieves an AI-powered summary of what a function does. Requires a successfully completed ai-decompilation for the function first, see ai_decompile_function. If no function_id is provided, defaults to the function from the conversation context.
get_pdf_report_status Returns the current progress of the PDF report workflow for an analysis. Status is one of UNINITIALISED, PENDING, RUNNING, COMPLETED, FAILED.
get_threat_report Retrieves the AI threat report for a binary. Pass analysis_id, or omit it to use the analysis from the conversation context. Returns a threat summary, software type classification, MITRE ATT&CK techniques detected with their locations and descriptions, Indicators of Compromise (IOCs), an attack flow summary, and a YARA rule. If no results exist yet, triggers an asynchronous threat report task (requires user confirmation). If the task is still running, call again to poll for results.
get_triage_analysis Retrieves the triage analysis for the binary at the given analysis_id (or the analysis from the conversation context if omitted). This is the PRIMARY tool for answering questions like 'summarise this binary', 'what does this binary do', 'describe this binary', or 'give me an overview'. Returns a software score (0-10), a natural-language summary of the binary's purpose and behaviour, and a table of key functions with their scores, summaries, and capabilities. If no results exist yet, triggers an asynchronous triage task (requires user confirmation). If the task is still running, call again to poll for results. Note: get_binary_info returns only raw metadata (name, hash, size) — use this tool instead when the user wants to understand what the binary does.
list_collection_binaries Lists binaries belonging to a collection. Returns a paginated table of analysis IDs and binary names. Supports name search, ordering, and pagination.
list_functions Lists functions in a binary. Pass analysis_id, or omit it to use the analysis from the conversation context. Returns a paginated table of function IDs, names, virtual addresses, and sizes. Supports name search and pagination.
regenerate_ai_decompilation_inline_comments Regenerates the AI inline comments for a function's decompilation. Requires an existing decompilation AND summary. Use get_ai_decompilation_inline_comments_status to poll progress. destructive
regenerate_ai_decompilation_summary Regenerates the AI-generated summary for a function's decompilation. Requires an existing decompilation. Use get_ai_decompilation_summary_status to poll progress. destructive
rename_and_verify Renames a single function then fetches its history and returns the newly recorded entry as confirmation. Synchronous — no polling needed. destructive
rename_functions Renames one or more functions in batch. Each rename records history, copies data types and parameters from the source function. IMPORTANT: You must always confirm the renames with the user before calling this tool — never rename functions without explicit user approval. Requires write access.
resolve_ids Given one of function_id / analysis_id / binary_id, returns the related IDs (analysis_id, binary_id, owner user_id, team_id). If multiple are supplied, the most-specific one wins (function > binary > analysis). Access is checked against the resolved analysis.
revert_function_name Reverts a function's name to a previously recorded history entry. Use get_function_history first to discover the history_id. destructive
start_ai_decompilation Forces a fresh AI decompilation, discarding any existing result. Prefer ai_decompile_function for the typical case (returns cached result if present); use this only to regenerate from scratch — e.g. after a rename or to test the bare-C LLM path via force_llm. Charges credits. Poll via get_ai_decompilation_status; read the new result via get_function_info with include=["ai_decompilation"]. destructive
start_pdf_report Starts a PDF report generation workflow for an analysis. Returns immediately. Use get_pdf_report_status to poll progress; download the rendered PDF from the platform UI once status is COMPLETED. destructive