Source: bridge/tests/golden/data/openapi_snapshot.json — Ghidra MCP Bridge API v1.0.0
All endpoints use the envelope {ok, data|null, errors[]} with error entries shaped as {status, code, message, recovery[]} plus strict JSON schemas.
POST /api/search_strings.jsonPOST /api/search_functions.jsonPOST /api/search_imports.jsonPOST /api/search_exports.jsonPOST /api/search_xrefs_to.jsonPOST /api/search_scalars.jsonPOST /api/list_functions_in_range.jsonPOST /api/disassemble_at.jsonPOST /api/read_bytes.jsonPOST /api/write_bytes.jsonPOST /api/jt_slot_check.jsonPOST /api/jt_scan.jsonPOST /api/strings_compact.jsonPOST /api/mmio_annotate.jsonPOST /api/analyze_function_complete.jsonGET /api/project_info.json
See the sections below for parameters and invariants.
OpenAPI:
GET /openapi.jsonConventions:data.totalis an integer;data.pageis 1-based on search endpoints.
- Server-side filtering first (no information loss), then pagination.
- Responses unify on:
query,total,page(1-based),limit,items,has_more.
POST /api/search_strings.json
{ "query": "memcpy", "limit": 50, "page": 1 }Same shape; each filters in its domain. See OpenAPI for item fields.
POST /api/search_scalars.json
Search for immediate/constant values in code.
Request:
{ "value": "0xB0000084", "limit": 100, "page": 1 }Response:
{
"ok": true,
"data": {
"query": "0xB0000084",
"total": 42,
"page": 1,
"limit": 100,
"items": [
{
"address": "0x0020A1C0",
"value": "0xB0000084",
"function": "init_board",
"context": "LDR R0, =0xB0000084"
}
],
"has_more": false
},
"errors": []
}value: hex string (0x...) or integerlimit: max 500page: 1-based paginationhas_more: true when another page exists (page * limit < total)
POST /api/list_functions_in_range.json
List all functions within an address range.
Request:
{ "address_min": "0x00000000", "address_max": "0x00001000", "limit": 200, "page": 1 }Response:
{
"ok": true,
"data": {
"total": 12,
"page": 1,
"limit": 200,
"items": [
{
"name": "Reset",
"address": "0x00000000",
"size": 3
}
]
},
"errors": []
}address_min,address_max: hex strings (inclusive range)size: optional, number of addresses in function bodylimit: max 500
POST /api/disassemble_at.json
Disassemble N instructions starting at an address.
Request:
{ "address": "0x00000000", "count": 16 }Response:
{
"ok": true,
"data": {
"items": [
{
"address": "0x00000000",
"bytes": "DBF021E3",
"text": "msr cpsr_c,#0xdb"
}
]
},
"errors": []
}count: max 128, default 16bytes: uppercase hex string of instruction bytes
POST /api/read_bytes.json
Read raw bytes from memory.
Request:
{ "address": "0x00000000", "length": 16 }Response:
{
"ok": true,
"data": {
"address": "0x00000000",
"length": 16,
"encoding": "base64",
"data": "2/Ah4zTQn+XX8CHjMNCf5Q==",
"literal": "\xDB\xF0!\xE35\x10\x9F\xE5\xD7\xF0!\xE30\xD0\x9F\xE5"
},
"errors": []
}length: max 4096 bytesencoding: always "base64"data: Base64-encoded bytesliteral: Optional raw byte string (Latin-1 safe) wheninclude_literals: trueis requested
The following endpoints support wildcard queries (return all items without filtering):
search_functions: usequery: "*"orquery: ""
search_xrefs_to accepts optional query strings (normalized before forwarding). Leave the query empty or wildcard to return all matches.
All search endpoints enforce the shared batch window cap (page * limit <= 256 by default). Oversized windows return 413 Payload Too Large so callers can retry with a smaller page or limit.
Returns a compact listing of program strings with deterministic ordering:
- Items contain
addr,s, andrefscounts with optional fullliteraltext. - Results are bounded by
limitand always includetotalmetadata. - Empty strings are omitted; ASCII/UTF-16 variants are normalized to UTF-8 output.
- When Ghidra bindings do not implement
list_strings_compact, the bridge falls back tolist_stringsor a wildcardsearch_strings("")call before applyingoffset/limit. Some environments may still return an empty catalog if upstream discovery is unavailable. - Set
include_literals: trueto include the full normalized literal (without truncation) alongside the compactspreview.
See Search endpoints for shared pagination semantics. Query terms are matched server-side with no client-side filtering. Set include_literals: true to ask for full normalized string contents in addition to the compact snippet, which stays capped at 120 characters.
Search for references pointing to a target address:
- Accepts
target,limit, andpageparameters plus a required emptyquerystring. Non-empty queries return400 Bad Requestbecause filtering is not supported upstream. - Results include caller/callee metadata plus reference kinds and repeat the
target_addresson each item for clarity. - Pagination mirrors other search endpoints with deterministic totals (
has_moreflips tofalseon the last page). - Oversized windows (
page * limitover the configured maximum, default256) fail fast with413 Payload Too Largeso callers can retry with a smaller batch.
Validates a single pointer as ARM/Thumb (or none), enforcing [code_min, code_max).
Tip — Deriving CODE_MIN/MAX: fetch segments from the plugin and choose the .text/code bounds.
Batch over many slots; invariants:
summary.total == len(items)summary.valid + summary.invalid == summary.total
Annotates addresses for memory-mapped IO while respecting write guards:
- Requires explicit
addressesandannotationpayloads. - Honors
dry_runto preview changes without writes. - When writes execute, they are limited by
GHIDRA_MCP_MAX_WRITES_PER_REQUESTand logged ifGHIDRA_MCP_AUDIT_LOGis configured.
Request:
{
"function_addr": "0x0002df2c",
"dry_run": true,
"max_samples": 4
}Response:
{
"ok": true,
"data": {
"function": "0x0002df2c",
"reads": 10,
"writes": 9,
"bitwise_or": 2,
"bitwise_and": 1,
"toggles": 0,
"annotated": 0,
"samples": [
{
"addr": "0x0002df30",
"op": "READ",
"target": "0x00000018",
"address_abs": "0x00000018"
},
{
"addr": "0x0002df34",
"op": "OR",
"target": "0x00004000",
"address_abs": "0x00004000"
}
],
"notes": ["dry-run requested: annotations were not applied"]
},
"errors": []
}addr: instruction address where the operation occursop: operation type (READ, WRITE, OR, AND, TOGGLE)target: immediate value extracted from the instructionaddress_abs: absolute address for the operation- If
targetis a valid address (non-zero), usestarget - Otherwise falls back to
addr(the instruction address)
- If
annotated: number of comments actually written (0 whendry_run: true)notes: array of informational messages
max_samples: max 8 (default), caps the number of sample operations returned- Write operations require
dry_run: falseandGHIDRA_MCP_ENABLE_WRITES=1
The bridge exposes helper endpoints for creating, updating, and deleting structures and unions inside the active Ghidra program. All endpoints share the same safety model used elsewhere in the bridge: write operations are disabled by default, calls honour the per-request write counters, and every response is wrapped in the standard envelope returned by the API gateway.
Each route accepts a JSON payload that describes the type to manipulate and responds with a stable summary of the operation that was attempted. When dry_run is set to true (the default) no writes are forwarded to the Ghidra plugin. Clearing dry_run requires the server to be started with GHIDRA_MCP_ENABLE_WRITES=1 and still consumes one write token from the current request scope.
Create a new structure or union in the active project. The request schema is datatypes_create.request.v1.json.
{
"kind": "structure",
"name": "Widget",
"category": "/structs",
"fields": [
{"name": "id", "type": "uint32", "offset": 0, "length": 4},
{"name": "flags", "type": "uint16", "offset": 4, "length": 2}
],
"dry_run": false
}Responses conform to datatypes_create.v1.json and always include the computed path, the normalised field list, and the inferred size (when available). During a dry run the written flag remains false and a note describing the simulated operation is included.
Update an existing structure or union in-place. The request schema is datatypes_update.request.v1.json and requires the fully-qualified data-type path plus the new field definitions. Response envelopes follow datatypes_update.v1.json and echo the final layout reported by the plugin (or the requested layout if the plugin returned no additional metadata).
Delete a structure or union by path. The request schema is datatypes_delete.request.v1.json and the response schema is datatypes_delete.v1.json. Successful deletes set written to true and return the canonicalised kind and path. Dry runs add notes explaining that no data types were removed.
All three routes share the standard per-request write guard. Each successful write consumes a single token and will raise an error if the configured limit is exceeded. The bridge will also reject attempts to proceed while writes are disabled, returning WRITE_DISABLED in the response envelope.
Summary: analyze_function_route
- Declares:
http://json-schema.org/draft-07/schema#
| Field | Type | Required | Notes |
|---|---|---|---|
address |
string | Yes | pattern=^(0x)?[0-9a-fA-F]+$ |
fields |
array | No | |
fmt |
string | No | enum=['json'] |
max_result_tokens |
integer | No | min=0 |
options |
object | No |
{
"address": "string",
"fields": [
"function"
],
"fmt": "json",
"max_result_tokens": 0,
"options": {
"callgraph": {
"limit": 0
},
"decompile": {
"enabled": false,
"max_lines": 0
},
"disasm": {
"after": 0,
"before": 0,
"max_instructions": 0
},
"strings": {
"limit": 0,
"max_cstring_len": 0
},
"xrefs": {
"inbound_limit": 0,
"outbound_limit": 0
}
}
}-
200— Successful Response- Declares:
http://json-schema.org/draft-07/schema#
Field Type Required Notes addressstring Yes callgraphobject No decompileobject No disasmobject No featuresobject No functionobject No metaobject Yes stringsobject No xrefsobject No { "address": "string", "callgraph": { "callees": [ { "address": "string", "name": "string", "type": "string" } ], "callers": [ { "name": "string", "site": "string", "type": "string" } ] }, "decompile": { "enabled": false, "error": "string", "lines": 0, "snippet": "string", "truncated": false }, "disasm": { "after": 0, "before": 0, "center_index": 0, "max_instructions": 0, "total_instructions": 0, "truncated": false, "window": [ { "address": "string", "bytes": "string", "is_target": false, "text": "string" } ] }, "features": { "call_count": 0, "instruction_count": 0, "notes": [ "string" ], "size_bytes": 0, "string_reference_count": 0, "xrefs_inbound_count": 0, "xrefs_outbound_count": 0 }, "function": { "address": "string", "comment": "string", "entry_point": "string", "name": "string", "range": { "end": "string", "start": "string" }, "signature": "string" }, "meta": { "estimate_tokens": 0, "fields": [ "string" ], "fmt": "string", "max_result_tokens": 0, "truncated": false }, "strings": { "items": [ { "address": "string", "length": 0, "literal": "string", "source": "string" } ], "limit": 0, "source": "string" }, "xrefs": { "inbound": [ { "address": "string", "context": "string", "function": "string", "type": "string" } ], "outbound": [ { "context": "string", "from_address": "string", "name": "string", "to_address": "string", "type": "string" } ], "summary": { "inbound": 0, "outbound": 0 } } } - Declares:
Summary: capabilities
-
200— Successful Response- Schema ID:
urn:schema:capabilities.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes endpointsarray Yes { "endpoints": [ { "budget_hint": "small", "category": "overview", "description": "string", "method": "string", "path": "string" } ] } - Schema ID:
Summary: capabilities
-
200— Successful Response- Schema ID:
urn:schema:capabilities.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes endpointsarray Yes { "endpoints": [ { "budget_hint": "small", "category": "overview", "description": "string", "method": "string", "path": "string" } ] } - Schema ID:
Summary: collect_route
- Schema ID:
urn:schema:collect.request.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
| Field | Type | Required | Notes |
|---|---|---|---|
metadata |
object | No | |
projects |
array | No | |
queries |
array | No | |
result_budget |
object | No |
-
200— Successful Response- Schema ID:
urn:schema:collect.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes metaobject No projectsarray No queriesarray Yes { "meta": "\u2026", "projects": [ "\u2026" ], "queries": [ "\u2026" ] } - Schema ID:
| Field | Type | Required | Notes |
|---|---|---|---|
id |
string | Yes | minLength=1 |
op |
string | Yes | minLength=1 |
params |
object | No | default={} |
result_budget |
object | No | See Result budget object |
max_result_tokens |
integer | null | No |
metadata |
object | No | echoed in response |
| Field | Type | Required | Notes |
|---|---|---|---|
id |
string | Yes | minLength=1 |
queries |
array | Yes | 1-256 entries |
result_budget |
object | No | See Result budget object |
metadata |
object | No | echoed in response |
ghidra_url |
string | No | alternate server base URL |
base_url |
string | No | legacy alias for ghidra_url |
| Field | Type | Required | Notes |
|---|---|---|---|
max_result_tokens |
integer | null | No |
mode |
string | No | enum=['auto_trim', 'strict']; default='auto_trim' |
-
disassemble_at— Disassemble instructions at a single address. Required: address (hex). Optional: count (default 16).{ "id": "head", "op": "disassemble_at", "params": { "address": "0x401000", "count": 8 } } -
disassemble_batch— Disassemble multiple addresses in one call. Required: addresses (array of hex strings). Optional: count (default 16).{ "id": "epilogue", "op": "disassemble_batch", "params": { "addresses": [ "0x401000", "0x401020" ], "count": 4 } } -
read_bytes— Read a raw byte window. Required: address (hex). Optional: length in bytes (default 64).{ "id": "bytes", "op": "read_bytes", "params": { "address": "0x401000", "length": 32 } } -
read_words— Read machine words. Required: address (hex). Optional: count (default 1).{ "id": "words", "op": "read_words", "params": { "address": "0x401000", "count": 2 } } -
search_strings— Search string literals. Required: query substring. Optional: limit (default 100) and page (default 1).{ "id": "long-strings", "op": "search_strings", "params": { "query": "init", "limit": 25 } } -
strings_compact— List compact string summaries. Required: limit (>0). Optional: offset (default 0).{ "id": "strings", "op": "strings_compact", "params": { "limit": 100, "offset": 0 } } -
string_xrefs— Lookup cross-references to a string. Required: string_addr (hex). Optional: limit (default 50).{ "id": "string-xrefs", "op": "string_xrefs", "params": { "string_addr": "0x500123", "limit": 10 } } -
search_imports— Search imported symbols. Required: query substring. Optional: limit (default 100) and page (default 1).{ "id": "imports", "op": "search_imports", "params": { "query": "socket", "limit": 10 } } -
search_exports— Search exported symbols. Required: query substring. Optional: limit (default 100) and page (default 1).{ "id": "exports", "op": "search_exports", "params": { "query": "init", "limit": 10 } } -
search_functions— Search functions with optional ranking. Optional params: query text, limit/page (defaults 100/1), context_lines (0-16). Use rank='simple' with optional k, or resume_cursor for pagination (not both).{ "id": "init-funcs", "op": "search_functions", "params": { "query": "init", "limit": 20, "context_lines": 2 } } -
search_xrefs_to— Search inbound references to an address. Required: address (hex). Optional: query, limit (default 100), page (default 1).{ "id": "xref", "op": "search_xrefs_to", "params": { "address": "0x401050", "limit": 50 } } -
search_scalars— Search scalar values. Required: value (int or hex string). Optional: query label, limit/page (defaults 50/1), resume_cursor.{ "id": "scalars", "op": "search_scalars", "params": { "value": "0xDEADBEEF", "limit": 10 } } -
search_scalars_with_context— Search scalars and include annotated disassembly context. Required: value. Optional: context_lines (0-16, default 4) and limit (default 25).{ "id": "scalar-context", "op": "search_scalars_with_context", "params": { "value": "0x8040123", "context_lines": 3 } }
Search init functions & long strings
{
"queries": [
{
"id": "init-funcs",
"op": "search_functions",
"params": {
"query": "init",
"limit": 20,
"context_lines": 2
},
"result_budget": {
"max_result_tokens": 600
}
},
{
"id": "long-strings",
"op": "search_strings",
"params": {
"query": "initialization complete",
"limit": 50
}
}
],
"result_budget": {
"max_result_tokens": 1500,
"mode": "auto_trim"
},
"metadata": {
"request": "search init functions & long strings"
}
}Xref lookup + batch disassembly
{
"queries": [
{
"id": "xref-to-target",
"op": "search_xrefs_to",
"params": {
"address": "0x401050",
"limit": 25
}
}
],
"projects": [
{
"id": "linux-build",
"ghidra_url": "http://ghidra.example.local:13100/",
"queries": [
{
"id": "batch-disasm",
"op": "disassemble_batch",
"params": {
"addresses": [
"0x401050",
"0x401060"
],
"count": 8
}
}
],
"result_budget": {
"mode": "strict",
"max_result_tokens": 800
}
}
],
"result_budget": {
"max_result_tokens": 2000
}
}Summary: current_program
-
200— Successful Response- Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes domain_file_idstring Yes lockedboolean Yes statestring Yes enum=['IDLE', 'LOADING', 'READY'] warningsarray No { "domain_file_id": "string", "locked": false, "state": "IDLE", "warnings": [ "string" ] } - Declares:
Summary: current_program
-
200— Successful Response- Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes domain_file_idstring Yes lockedboolean Yes statestring Yes enum=['IDLE', 'LOADING', 'READY'] warningsarray No { "domain_file_id": "string", "locked": false, "state": "IDLE", "warnings": [ "string" ] } - Declares:
Summary: create_route
- Schema ID:
urn:schema:datatypes-create.request.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
| Field | Type | Required | Notes |
|---|---|---|---|
category |
string | Yes | |
dry_run |
boolean | No | default=True |
fields |
array | Yes | |
kind |
string | Yes | enum=['structure', 'union'] |
name |
string | Yes |
{
"category": "string",
"dry_run": true,
"fields": [
"\u2026"
],
"kind": "structure",
"name": "string"
}-
200— Successful Response- Schema ID:
urn:schema:datatypes-create.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes datatypeobject Yes dry_runboolean Yes errorsarray Yes kindstring Yes enum=['structure', 'union'] notesarray Yes pathstring Yes pattern=^/.* transport_errorobject No writtenboolean Yes { "datatype": { "category": "string", "fields": [ "\u2026" ], "kind": "structure", "name": "string", "path": "string", "size": 0 }, "dry_run": false, "errors": [ "string" ], "kind": "structure", "notes": [ "string" ], "path": "string", "transport_error": { "reason": "string", "retryable": false, "status": 0 }, "written": false } - Schema ID:
Summary: delete_route
- Schema ID:
urn:schema:datatypes-delete.request.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
| Field | Type | Required | Notes |
|---|---|---|---|
dry_run |
boolean | No | default=True |
kind |
string | Yes | enum=['structure', 'union'] |
path |
string | Yes | pattern=^/.* |
{
"dry_run": true,
"kind": "structure",
"path": "string"
}-
200— Successful Response- Schema ID:
urn:schema:datatypes-delete.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes datatypeobject Yes dry_runboolean Yes errorsarray Yes kindstring Yes enum=['structure', 'union'] notesarray Yes pathstring Yes pattern=^/.* transport_errorobject No writtenboolean Yes { "datatype": { "kind": "structure", "path": "string" }, "dry_run": false, "errors": [ "string" ], "kind": "structure", "notes": [ "string" ], "path": "string", "transport_error": { "reason": "string", "retryable": false, "status": 0 }, "written": false } - Schema ID:
Summary: update_route
- Schema ID:
urn:schema:datatypes-update.request.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
| Field | Type | Required | Notes |
|---|---|---|---|
dry_run |
boolean | No | default=True |
fields |
array | Yes | |
kind |
string | Yes | enum=['structure', 'union'] |
path |
string | Yes | pattern=^/.* |
{
"dry_run": true,
"fields": [
"\u2026"
],
"kind": "structure",
"path": "string"
}-
200— Successful Response- Schema ID:
urn:schema:datatypes-update.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes datatypeobject Yes dry_runboolean Yes errorsarray Yes kindstring Yes enum=['structure', 'union'] notesarray Yes pathstring Yes pattern=^/.* transport_errorobject No writtenboolean Yes { "datatype": { "category": "string", "fields": [ "\u2026" ], "kind": "structure", "name": "string", "path": "string", "size": 0 }, "dry_run": false, "errors": [ "string" ], "kind": "structure", "notes": [ "string" ], "path": "string", "transport_error": { "reason": "string", "retryable": false, "status": 0 }, "written": false } - Schema ID:
Summary: disassemble_at_route
- Schema ID:
urn:schema:disassemble-at.request.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
| Field | Type | Required | Notes |
|---|---|---|---|
address |
string | Yes | pattern=^0x[0-9a-fA-F]+$ |
count |
integer | No | default=16, min=1, max=128 |
{
"address": "0x0",
"count": 16
}-
200— Successful Response- Schema ID:
urn:schema:disassemble-at.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes itemsarray Yes { "items": [ { "address": "0x0", "bytes": "string", "text": "string" } ] } - Schema ID:
Summary: health_route
-
200— Successful Response- Schema ID:
urn:schema:health.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes ghidraobject Yes servicestring Yes writes_enabledboolean Yes { "ghidra": { "base_url": "string", "error": "string", "reachable": false, "status_code": 0 }, "service": "string", "writes_enabled": false } - Schema ID:
Summary: health_route
-
200— Successful Response- Schema ID:
urn:schema:health.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes ghidraobject Yes servicestring Yes writes_enabledboolean Yes { "ghidra": { "base_url": "string", "error": "string", "reachable": false, "status_code": 0 }, "service": "string", "writes_enabled": false } - Schema ID:
Summary: jt_scan_route
- Schema ID:
urn:schema:jt-scan.request.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
| Field | Type | Required | Notes |
|---|---|---|---|
arch |
string | No | |
code_max |
string | Yes | pattern=^0x[0-9a-fA-F]+$ |
code_min |
string | Yes | pattern=^0x[0-9a-fA-F]+$ |
count |
integer | Yes | min=1, max=256 |
jt_base |
string | Yes | pattern=^0x[0-9a-fA-F]+$ |
start |
integer | Yes | min=0 |
{
"arch": "string",
"code_max": "0x0",
"code_min": "0x0",
"count": 0,
"jt_base": "0x0",
"start": 0
}-
200— Successful Response- Schema ID:
urn:schema:jt-scan.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes itemsarray Yes rangeobject Yes summaryobject Yes { "items": [ "\u2026" ], "range": { "count": 0, "start": 0 }, "summary": { "invalid": 0, "total": 0, "valid": 0 } } - Schema ID:
Summary: jt_slot_check_route
- Schema ID:
urn:schema:jt-slot-check.request.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
| Field | Type | Required | Notes |
|---|---|---|---|
arch |
string | No | |
code_max |
string | Yes | pattern=^0x[0-9a-fA-F]+$ |
code_min |
string | Yes | pattern=^0x[0-9a-fA-F]+$ |
jt_base |
string | Yes | pattern=^0x[0-9a-fA-F]+$ |
slot_index |
integer | Yes | min=0 |
{
"arch": "string",
"code_max": "0x0",
"code_min": "0x0",
"jt_base": "0x0",
"slot_index": 0
}-
200— Successful Response- Schema ID:
urn:schema:jt-slot-check.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes errorsarray Yes modestring Yes enum=['ARM', 'Thumb', 'none'] notesarray No rawstring Yes pattern=^0x[0-9a-fA-F]+$ slotinteger Yes min=0 slot_addrstring Yes pattern=^0x[0-9a-fA-F]+$ targetobject Yes { "errors": [ "string" ], "mode": "ARM", "notes": [ "string" ], "raw": "0x0", "slot": 0, "slot_addr": "0x0", "target": "0x0" } - Schema ID:
Summary: jt_slot_process_route
- Schema ID:
urn:schema:jt-slot-process.request.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
| Field | Type | Required | Notes |
|---|---|---|---|
arch |
string | No | |
code_max |
string | Yes | pattern=^0x[0-9a-fA-F]+$ |
code_min |
string | Yes | pattern=^0x[0-9a-fA-F]+$ |
comment |
string | No | |
dry_run |
boolean | No | |
jt_base |
string | Yes | pattern=^0x[0-9a-fA-F]+$ |
rename_pattern |
string | No | |
slot_index |
integer | Yes | min=0 |
{
"arch": "string",
"code_max": "0x0",
"code_min": "0x0",
"comment": "string",
"dry_run": false,
"jt_base": "0x0",
"rename_pattern": "string",
"slot_index": 0
}-
200— Successful Response- Schema ID:
urn:schema:jt-slot-process.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes errorsarray Yes modestring Yes enum=['ARM', 'Thumb', 'none'] notesarray No rawstring Yes pattern=^0x[0-9a-fA-F]+$ slotinteger Yes min=0 slot_addrstring Yes pattern=^0x[0-9a-fA-F]+$ targetobject Yes verifyobject Yes writesobject Yes { "errors": [ "string" ], "mode": "ARM", "notes": [ "string" ], "raw": "0x0", "slot": 0, "slot_addr": "0x0", "target": "0x0", "verify": { "comment_present": false, "name": "string" }, "writes": { "comment_set": false, "renamed": false } } - Schema ID:
Summary: list_functions_in_range_route
- Schema ID:
urn:schema:list-functions-in-range.request.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
| Field | Type | Required | Notes |
|---|---|---|---|
address_max |
string | Yes | pattern=^0x[0-9a-fA-F]+$ |
address_min |
string | Yes | pattern=^0x[0-9a-fA-F]+$ |
limit |
integer | No | default=200, min=1, max=500 |
page |
integer | No | default=1, min=1 |
{
"address_max": "0x0",
"address_min": "0x0",
"limit": 200,
"page": 1
}-
200— Successful Response- Schema ID:
urn:schema:list-functions-in-range.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes has_moreboolean Yes itemsarray Yes limitinteger Yes min=1 pageinteger Yes min=1 querystring Yes totalinteger Yes min=0 { "has_more": false, "items": [ { "address": "0x0", "name": "string", "size": 0 } ], "limit": 0, "page": 0, "query": "string", "total": 0 } - Schema ID:
Summary: mmio_annotate_route
- Schema ID:
urn:schema:mmio-annotate.request.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
| Field | Type | Required | Notes |
|---|---|---|---|
dry_run |
boolean | No | |
function_addr |
string | Yes | pattern=^0x[0-9a-fA-F]+$ |
max_samples |
integer | No | min=1, max=256 |
{
"dry_run": false,
"function_addr": "0x0",
"max_samples": 0
}-
200— Successful Response- Schema ID:
urn:schema:mmio-annotate.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes annotatedinteger Yes min=0 bitwise_andinteger Yes min=0 bitwise_orinteger Yes min=0 functionstring Yes pattern=^0x[0-9a-fA-F]+$ notesarray No readsinteger Yes min=0 samplesarray Yes togglesinteger Yes min=0 writesinteger Yes min=0 { "annotated": 0, "bitwise_and": 0, "bitwise_or": 0, "function": "0x0", "notes": [ "string" ], "reads": 0, "samples": [ { "addr": "0x0", "address_abs": "0x0", "op": "READ", "target": "0x0" } ], "toggles": 0, "writes": 0 } - Schema ID:
Summary: project_info
-
200— Successful Response- Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes compiler_spec_idstring Yes entry_pointsarray Yes executable_formatstring No executable_md5string No executable_pathstring No executable_sha256string No exports_countinteger Yes min=0 image_basestring Yes imports_countinteger Yes min=0 language_idstring Yes memory_blocksarray Yes program_namestring Yes { "compiler_spec_id": "string", "entry_points": [ "string" ], "executable_format": "string", "executable_md5": "string", "executable_path": "string", "executable_sha256": "string", "exports_count": 0, "image_base": "string", "imports_count": 0, "language_id": "string", "memory_blocks": [ { "end": "string", "initialized": false, "length": 0, "loaded": false, "name": "string", "rwx": "string", "start": "string" } ], "program_name": "string" } - Declares:
Summary: project_info
-
200— Successful Response- Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes compiler_spec_idstring Yes entry_pointsarray Yes executable_formatstring No executable_md5string No executable_pathstring No executable_sha256string No exports_countinteger Yes min=0 image_basestring Yes imports_countinteger Yes min=0 language_idstring Yes memory_blocksarray Yes program_namestring Yes { "compiler_spec_id": "string", "entry_points": [ "string" ], "executable_format": "string", "executable_md5": "string", "executable_path": "string", "executable_sha256": "string", "exports_count": 0, "image_base": "string", "imports_count": 0, "language_id": "string", "memory_blocks": [ { "end": "string", "initialized": false, "length": 0, "loaded": false, "name": "string", "rwx": "string", "start": "string" } ], "program_name": "string" } - Declares:
Summary: project_overview
-
200— Successful Response- Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes filesarray Yes { "files": [ { "domain_file_id": "string", "name": "string", "path": "string", "size": 0, "type": "string" } ] } - Declares:
Summary: project_overview
-
200— Successful Response- Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes filesarray Yes { "files": [ { "domain_file_id": "string", "name": "string", "path": "string", "size": 0, "type": "string" } ] } - Declares:
Summary: project_rebase
- Schema ID:
urn:schema:project-rebase.request.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
| Field | Type | Required | Notes |
|---|---|---|---|
confirm |
boolean | No | default=False |
dry_run |
boolean | No | default=True |
new_base |
string | Yes | pattern=^(0x)?[0-9a-fA-F]+$ |
{
"confirm": false,
"dry_run": true,
"new_base": "string"
}-
200— Successful Response- Schema ID:
urn:schema:project-rebase.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes dry_runboolean Yes errorsarray Yes notesarray Yes offsetstring Yes pattern=^-?0x[0-9a-fA-F]+$ previous_basestring Yes pattern=^-?0x[0-9a-fA-F]+$ project_infoobject Yes rebasedboolean Yes requested_basestring Yes pattern=^-?0x[0-9a-fA-F]+$ { "dry_run": false, "errors": [ "string" ], "notes": [ "string" ], "offset": "string", "previous_base": "string", "project_info": {}, "rebased": false, "requested_base": "string" } - Schema ID:
Summary: read_bytes_route
- Schema ID:
urn:schema:read-bytes.request.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
| Field | Type | Required | Notes |
|---|---|---|---|
address |
string | Yes | pattern=^0x[0-9a-fA-F]+$ |
include_literals |
boolean | No | default=False |
length |
integer | Yes | min=1, max=4096 |
{
"address": "0x0",
"include_literals": false,
"length": 0
}-
200— Successful Response- Schema ID:
urn:schema:read-bytes.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes addressstring Yes pattern=^0x[0-9a-fA-F]+$ datastring Yes encodingstring Yes enum=['base64'] lengthinteger Yes min=0 literalstring No { "address": "0x0", "data": "string", "encoding": "base64", "length": 0, "literal": "string" } - Schema ID:
Summary: search_exports_route
- Schema ID:
search_exports.request.v1.json - Declares:
https://json-schema.org/draft/2020-12/schema
| Field | Type | Required | Notes |
|---|---|---|---|
limit |
integer | No | default=100, min=1, max=1000 |
page |
integer | No | default=1, min=1 |
query |
string | Yes |
{
"limit": 100,
"page": 1,
"query": "string"
}-
200— Successful Response- Schema ID:
search_exports.v1.json - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes has_moreboolean Yes itemsarray Yes limitinteger Yes min=1 pageinteger Yes min=1 querystring Yes totalinteger Yes min=0 { "has_more": false, "items": [ { "address": "0x0", "name": "string" } ], "limit": 0, "page": 0, "query": "string", "total": 0 } - Schema ID:
Summary: search_functions_route
- Schema ID:
search_functions.request.v1.json - Declares:
https://json-schema.org/draft/2020-12/schema
| Field | Type | Required | Notes |
|---|---|---|---|
context_lines |
integer | No | default=0, min=0, max=16 |
cursor |
string | No | |
k |
integer | No | min=1 |
limit |
integer | No | default=100, min=1, max=500 |
page |
integer | No | default=1, min=1 |
query |
string | Yes | |
rank |
string | No | enum=['simple'] |
resume_cursor |
string | No |
{
"context_lines": 0,
"cursor": "string",
"k": 0,
"limit": 100,
"page": 1,
"query": "string",
"rank": "simple",
"resume_cursor": "string"
}-
200— Successful Response- Schema ID:
search_functions.v1.json - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes cursorstring No has_moreboolean Yes itemsarray Yes limitinteger Yes min=1 pageinteger Yes min=1 querystring Yes resume_cursorstring No totalinteger Yes min=0 { "cursor": "string", "has_more": false, "items": [ { "address": "0x0", "context": { "disassembly": [ { "address": "\u2026", "bytes": "\u2026", "text": "\u2026" } ], "window": { "after": 0, "before": 0, "center": "0x0" } }, "name": "string" } ], "limit": 0, "page": 0, "query": "string", "resume_cursor": "string", "total": 0 } - Schema ID:
Summary: search_imports_route
- Schema ID:
search_imports.request.v1.json - Declares:
https://json-schema.org/draft/2020-12/schema
| Field | Type | Required | Notes |
|---|---|---|---|
limit |
integer | No | default=100, min=1, max=1000 |
page |
integer | No | default=1, min=1 |
query |
string | Yes |
{
"limit": 100,
"page": 1,
"query": "string"
}-
200— Successful Response- Schema ID:
search_imports.v1.json - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes has_moreboolean Yes itemsarray Yes limitinteger Yes min=1 pageinteger Yes min=1 querystring Yes totalinteger Yes min=0 { "has_more": false, "items": [ { "address": "0x0", "name": "string" } ], "limit": 0, "page": 0, "query": "string", "total": 0 } - Schema ID:
Summary: search_scalars_route
- Schema ID:
urn:schema:search-scalars.request.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
| Field | Type | Required | Notes |
|---|---|---|---|
cursor |
string | No | |
limit |
integer | No | default=100, min=1, max=500 |
page |
integer | No | default=1, min=1 |
resume_cursor |
string | No | |
value |
object | Yes |
{
"cursor": "string",
"limit": 100,
"page": 1,
"resume_cursor": "string",
"value": "0x0"
}-
200— Successful Response- Schema ID:
urn:schema:search-scalars.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes cursorstring No has_moreboolean Yes itemsarray Yes limitinteger Yes min=1 pageinteger Yes min=1 querystring Yes resume_cursorstring No totalinteger Yes min=0 { "cursor": "string", "has_more": false, "items": [ { "address": "0x0", "context": "string", "function": "string", "value": "0x0" } ], "limit": 0, "page": 0, "query": "string", "resume_cursor": "string", "total": 0 } - Schema ID:
Summary: search_strings_route
- Schema ID:
urn:schema:search-strings.request.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
| Field | Type | Required | Notes |
|---|---|---|---|
include_literals |
boolean | No | default=False |
limit |
integer | No | min=1 |
page |
integer | No | min=1 |
query |
string | Yes |
{
"include_literals": false,
"limit": 0,
"page": 0,
"query": "string"
}-
200— Successful Response- Schema ID:
urn:schema:search-strings.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes has_moreboolean Yes itemsarray Yes limitinteger Yes min=1 pageinteger Yes min=1 querystring Yes totalinteger Yes min=0 { "has_more": false, "items": [ "\u2026" ], "limit": 0, "page": 0, "query": "string", "total": 0 } - Schema ID:
Summary: search_xrefs_to_route
- Schema ID:
search_xrefs_to.request.v1.json - Declares:
https://json-schema.org/draft/2020-12/schema
| Field | Type | Required | Notes |
|---|---|---|---|
address |
string | Yes | pattern=^0x[0-9a-fA-F]+$ |
limit |
integer | No | default=100, min=1, max=1000 |
page |
integer | No | default=1, min=1 |
query |
string | Yes | default='' |
{
"address": "0x0",
"limit": 100,
"page": 1,
"query": ""
}-
200— Successful Response- Schema ID:
search_xrefs_to.v1.json - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes has_moreboolean Yes itemsarray Yes limitinteger Yes min=1 pageinteger Yes min=1 querystring Yes totalinteger Yes min=0 { "has_more": false, "items": [ { "context": "string", "from_address": "0x0", "target_address": "0x0" } ], "limit": 0, "page": 0, "query": "string", "total": 0 } - Schema ID:
Summary: select_program
- Declares:
https://json-schema.org/draft/2020-12/schema
| Field | Type | Required | Notes |
|---|---|---|---|
domain_file_id |
string | Yes |
{
"domain_file_id": "string"
}-
200— Successful Response- Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes domain_file_idstring Yes lockedboolean Yes statestring Yes enum=['IDLE', 'LOADING', 'READY'] warningsarray No { "domain_file_id": "string", "locked": false, "state": "IDLE", "warnings": [ "string" ] } - Declares:
Summary: string_xrefs_route
- Schema ID:
urn:schema:string-xrefs.request.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
| Field | Type | Required | Notes |
|---|---|---|---|
limit |
integer | No | min=1, max=256 |
string_addr |
string | Yes | pattern=^0x[0-9a-fA-F]+$ |
{
"limit": 0,
"string_addr": "0x0"
}-
200— Successful Response- Schema ID:
urn:schema:string-xrefs.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes callersarray Yes countinteger Yes min=0 stringstring Yes pattern=^0x[0-9a-fA-F]+$ { "callers": [ { "addr": "0x0", "arg_index": 0, "context": "string", "hint": "string" } ], "count": 0, "string": "0x0" } - Schema ID:
Summary: strings_compact_route
- Schema ID:
urn:schema:strings-compact.request.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
| Field | Type | Required | Notes |
|---|---|---|---|
include_literals |
boolean | No | default=False |
limit |
integer | Yes | min=0 |
offset |
integer | No | min=0 |
{
"include_literals": false,
"limit": 0,
"offset": 0
}-
200— Successful Response- Schema ID:
urn:schema:strings-compact.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes itemsarray Yes totalinteger Yes min=0 { "items": [ { "addr": "0x0", "literal": "string", "refs": 0, "s": "string" } ], "total": 0 } - Schema ID:
Summary: write_bytes_route
- Schema ID:
urn:schema:write-bytes.request.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
| Field | Type | Required | Notes |
|---|---|---|---|
address |
string | Yes | pattern=^0x[0-9a-fA-F]+$ |
data |
string | Yes | |
dry_run |
boolean | No | default=True |
encoding |
string | No | default='base64', enum=['base64'] |
{
"address": "0x0",
"data": "string",
"dry_run": true,
"encoding": "base64"
}-
200— Successful Response- Schema ID:
urn:schema:write-bytes.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes addressstring Yes pattern=^0x[0-9a-fA-F]+$ dry_runboolean Yes errorsarray Yes lengthinteger Yes min=0 notesarray Yes writtenboolean Yes { "address": "0x0", "dry_run": false, "errors": [ "string" ], "length": 0, "notes": [ "string" ], "written": false } - Schema ID:
Summary: state
-
200— Successful Response- Schema ID:
urn:schema:state.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes active_ssestring Yes bridge_readyboolean Yes connectsinteger Yes min=0 last_init_tsstring Yes readyboolean Yes session_readyboolean Yes { "active_sse": "string", "bridge_ready": false, "connects": 0, "last_init_ts": "string", "ready": false, "session_ready": false } - Schema ID:
Summary: state
-
200— Successful Response- Schema ID:
urn:schema:state.v1 - Declares:
https://json-schema.org/draft/2020-12/schema
Field Type Required Notes active_ssestring Yes bridge_readyboolean Yes connectsinteger Yes min=0 last_init_tsstring Yes readyboolean Yes session_readyboolean Yes { "active_sse": "string", "bridge_ready": false, "connects": 0, "last_init_ts": "string", "ready": false, "session_ready": false } - Schema ID: