Skip to content

MCP Tool Reference

probe-mcp exposes 61 tools, all prefixed probe_…. They’re grouped here by feature. For each tool: a one-line description, the input schema, and what comes back. Every result is wrapped in MCP’s content: [{type: "text", text: "..."}] envelope; for tools that return structured data, the text is pretty-printed JSON from the underlying REST API.

Need wiring? See MCP Setup.

  • Required parameters are marked. Everything else is optional.
  • Type is the JSON Schema type accepted by the MCP inputSchema.
  • Returns describes what the AI sees in content[0].text after the call resolves.
  • IDs returned by probe_list_traffic are integers; collection / session / script-rule IDs are strings.

List recent HTTP/HTTPS traffic. Use filters to narrow the result.

ParameterTypeDescription
limitintegerMax entries (default 20, capped at 500).
offsetintegerPagination offset.
hoststringSubstring match against host.
methodstringHTTP method filter (e.g. GET).
status_minintegerMinimum status code.
status_maxintegerMaximum status code.
has_errorbooleanOnly entries with status ≥ 400.
since_idintegerOnly entries with id > since_id (poll for new traffic).
sinceintegerOnly entries with timestamp >= since (ms since epoch).

Returns: {items, total, offset, limit} where items[] are summaries — id, method, url, host, status_code, content_type, duration_ms, timestamp, client_addr, has_response.

Full detail of a single entry, including headers and bodies.

ParameterTypeRequiredDescription
idintegeryesTraffic entry id from probe_list_traffic.

Returns: the full entry — request and response headers as [[key, value], …], request and response bodies as strings (or null), timing, content type, client address.

Search by URL path or body content.

ParameterTypeRequiredDescription
querystringyesSubstring matched against URL and body.
limitintegerDefault 20.

Returns: the same shape as probe_list_traffic.

Quick health snapshot — uptime, entry count, capture status, API port, version. No parameters.

Returns: {status, version, capturing, entry_count, uptime_secs, api_port}.

Drop every captured entry from memory. No parameters. Returns: "All traffic cleared.".

Delete one entry by id.

ParameterTypeRequired
idintegeryes

Returns: "Traffic entry <id> deleted.".

Whether traffic is being recorded right now and the current entry count. No parameters.

Returns: {capturing, entry_count}.

Start or stop recording. Traffic still flows through the proxy when capture is off — it just isn’t logged.

ParameterTypeRequired
enabledbooleanyes

Returns: "Traffic capture enabled." or "Traffic capture disabled.".

Re-send a captured request and return the new response.

ParameterTypeRequired
idintegeryes

Returns: a JSON object containing the new response (status, headers, body, timing). The replay also lands as a fresh entry in the traffic list.

Compare two captured entries — method, URL, status, headers, body. Useful for “did the replay match the original?” or “what changed between two similar calls?”.

ParameterTypeRequiredDescription
left_idintegeryesThe “before” entry id.
right_idintegeryesThe “after” entry id.

Returns: a JSON diff — added/removed/changed fields per section.

Export an entry as a runnable cURL command.

ParameterTypeRequired
idintegeryes

Returns: the cURL string.

Export an entry as raw HTTP text — request line + headers + body, then the response if there is one.

ParameterTypeRequired
idintegeryes

Returns: the raw HTTP text.

Breakpoint rules pause matching traffic so the AI (or you) can edit it before it continues. Use probe_list_intercepts to see what’s currently paused, then probe_resume_intercept to release it.

ParameterTypeRequiredDefaultDescription
patternstringyesHost or URL pattern to match.
intercept_requestbooleantruePause matching requests.
intercept_responsebooleantruePause matching responses.

Returns: "Breakpoint created for '<pattern>'.".

Remove a breakpoint by its pattern.

ParameterTypeRequired
patternstringyes

List every active breakpoint. No parameters. Returns: array of breakpoint definitions.

Remove all breakpoints in one call. No parameters.

List requests currently paused, waiting for a decision. No parameters. Returns: array of {id} for each paused request.

Release a paused request, optionally rewriting it.

ParameterTypeRequiredDescription
idintegeryesIntercepted request id.
abortbooleanIf true, abort with 502.
status_codeintegerOverride response status.
headersarray of [key, value]Override response headers.
bodystringOverride response body.
urlstringOverride request URL (request-phase intercepts only).

Returns: "Intercept <id> resumed." (or aborted).

A request to an intercept host is paused for inspection. Different from a breakpoint pattern: this matches strict hostnames.

ParameterTypeRequired
hoststringyes
ParameterTypeRequired
hoststringyes

List every intercepted host. No parameters.

Traffic to a blocked host is forwarded silently — no log entry, no breakpoint, no rule application. Use this to silence noise from analytics or telemetry hosts.

ParameterTypeRequired
hoststringyes
ParameterTypeRequired
hoststringyes

No parameters. Returns: array of host strings.

Block by client label — a process name (loopback) or IP address (remote phone). Same silent-forward behaviour as blocked hosts.

ParameterTypeRequiredDescription
labelstringyesProcess name or IP.
ParameterTypeRequired
labelstringyes

No parameters. Returns: array of label strings.

Probe has two throttle layers. The global throttle applies to every request; the scoped throttle rules apply per host/url-glob/app and run on top of it. The MCP can read both, and write the global one. Scoped rules are read-only here — Probe’s UI owns persistence and pushes the list on every mutation.

Set the global bandwidth cap.

ParameterTypeRequiredDescription
bytes_per_secondintegeryesBandwidth in bytes/sec.

Turn off the global throttle. No parameters.

Current global throttle status and limit. No parameters.

List the scoped throttle rules. Each rule has its own profile (down/up bps, DNS delay, loss percentage) and matches by host, url glob, or app. No parameters.

Run JS through Probe’s embedded QuickJS engine — either ad-hoc against a request you describe, or as a registered rule that auto-applies to matching traffic.

Run a script once in test mode and return its result. Doesn’t touch live traffic.

ParameterTypeRequiredDescription
scriptstringyesJS source.
variablesobjectVariables exposed via pro.variables.
requestobjectOptional request context (method, url, headers, body).
responseobjectOptional response context (status, headers, body).

Returns: the engine’s full output — console messages, assertion pass/fail, mutated request/response, and any thrown error.

List every script rule and the global scripting on/off flag. No parameters.

Add a rule that auto-applies JS to matching traffic.

ParameterTypeRequiredDefaultDescription
namestringyesHuman-readable name.
url_patternstringyesURL glob (supports *).
methodstring*HTTP method, or * for all.
request_scriptstring""Runs on requests.
response_scriptstring""Runs on responses.
apply_to_requestbooleantrue
apply_to_responsebooleantrue

The new rule’s id is generated server-side as mcp_<ms>.

Patch an existing rule — only fields you pass are changed.

ParameterTypeRequiredDescription
idstringyesRule id.
namestring
methodstring
url_patternstring
request_scriptstring
response_scriptstring
apply_to_requestboolean
apply_to_responseboolean
enabledboolean
ParameterTypeRequired
idstringyes

Master switch. When off, no script rules fire.

ParameterTypeRequired
enabledbooleanyes

Probe organises captured traffic into session tabs in the UI. The active recording tab fills with new traffic; other tabs are read-only snapshots. Saved sessions live on disk under ~/.probe/sessions/.

List every active tab — name, entry count, which one is the recording tab. No parameters.

Fetch the entries inside a specific tab.

ParameterTypeRequired
idstringyes

List sessions persisted to disk. No parameters.

Fetch the entries inside a saved session.

ParameterTypeRequired
idstringyes

The Composer is Probe’s request builder — Postman-like collections, environments, and inline auth. The compose tools are how the AI builds and fires off requests against your saved targets.

List every collection — name, request/folder/environment counts. No parameters.

Full collection content.

ParameterTypeRequired
idstringyes

Create a collection. Saves to disk and shows up immediately in Probe.

ParameterTypeRequiredDescription
namestringyesCollection name.
requestsarrayInline requests (each {name, method, url, headers, queryParams, body, contentType}).
foldersarrayFolders with nested requests ({name, requests, folders}).
environmentsarrayEnvironments with {name, variables: [{key, defaultValue}]}.
default_headersarrayHeaders applied to every request.
default_authobjectDefault auth (e.g. {type: 'bearer', token: '...'}).

Returns: the new collection’s id.

Add a single request to an existing collection.

ParameterTypeRequiredDefaultDescription
collection_idstringyes
namestringyes
methodstringGET
urlstringSupports {{variable}} syntax.
headersarray[{key, value, enabled}].
query_paramsarray[{key, value, enabled}].
bodystring
content_typestring
folder_idstringSubfolder placement.
authobjectPer-request auth override.

Add an environment with variables.

ParameterTypeRequiredDescription
collection_idstringyes
namestringyese.g. Development.
variablesarrayyes[{key, defaultValue, currentValue?, enabled?, isSecret?}].

Resolve variables and send the request. The resulting traffic also lands in the log.

ParameterTypeRequiredDescription
collection_idstringyes
request_idstringyes
environmentstringEnv name or id.
variablesobjectPer-call overrides (highest precedence).

Returns: {status, headers, body, duration_ms, …}.

Map Local rules serve a canned response from disk or an inline string instead of contacting the origin. See Map Local for the full feature doc.

List every rule and the master enable flag. No parameters.

Preview which rule (if any) would intercept a given request — no side effects.

ParameterTypeRequired
methodstringyes
urlstringyes

Returns: {matched: true, rule: {…}} or {matched: false}.

Create a new rule. id is optional — generated as mcp_<ms> if you don’t supply one.

ParameterTypeRequiredDescription
url_patternstringyesWildcard *, e.g. api.example.com/users/*.
sourcestringyeslocal_file or inline_body.
idstring
methodstringDefault GET.
match_all_methodsboolean
enabledboolean
file_pathstringAbsolute path. Required when source is local_file.
inline_bodystringRequired when source is inline_body.
inline_formatstringjson, xml, html, or text.
status_codeintegerDefault 200.
response_headersobjectString → string map.
delay_msintegerArtificial latency.

Full replace by id (not patch). Required fields match create, plus id.

ParameterTypeRequired
idstringyes

404 if id doesn’t exist.

Flip a single rule’s enabled flag.

ParameterTypeRequired
idstringyes

Master switch. When off, no rule matches.

ParameterTypeRequired
enabledbooleanyes

Map Remote rules redirect matching requests to a different upstream — same shape as Map Local rules but the destination is another origin instead of a canned body. See Map Remote.

The MCP-vs-UI persistence caveat above applies here too.

List every rule and the master enable flag. No parameters.

Preview which rule would redirect a given request, plus the rewritten URL.

ParameterTypeRequired
methodstringyes
urlstringyes

Returns: the matching rule and the resolved destination URL, or {matched: false}.

ParameterTypeRequiredDescription
source_schemestringyeshttp or https.
source_hoststringyes
source_pathstringyesWildcards * are captured in order.
dest_schemestringyeshttp or https.
dest_hoststringyes
dest_pathstringyesEach * is filled with captures from source_path.
idstringGenerated as mcp_mr_<ms> if omitted.
source_portintegerDefaults to 443/80 by scheme.
dest_portinteger
methodstringDefault GET.
match_all_methodsboolean
enabledboolean
preserve_original_host_headerbooleanWhen true, forward client’s Host header instead of rewriting to dest_host.

Full replace by id. Required: id plus the same set as create.

ParameterTypeRequired
idstringyes
ParameterTypeRequired
idstringyes
ParameterTypeRequired
enabledbooleanyes

Every tool returns the same MCP envelope on failure:

{
"content": [{"type": "text", "text": "Error: <reason>"}],
"isError": true
}

Common reasons:

  • Missing required parameter: <name> — schema violation.
  • Probe app (PID <n>) is no longer running. — Probe was quit since probe-mcp started.
  • Cannot reach Probe API: … — port in handshake is unreachable.
  • HTTP-status messages from the underlying REST API (404, 401, 500, …).