Skip to content
ProtoPeek

Local AI agents

How can my agent use ProtoPeek and show its work?

Stable · v0.7.0
  • Local MCP and JSON CLI
  • Shared services
  • Visible results and cancellation
Evidence path How can my agent use ProtoPeek and show its work?
Local AI agents evidence path Browser to Bridge to Host Browser Bridge Host
One local path. Each boundary stays visible.

The original adapter is published in the legacy Edge prerelease, outside v0.6.1 stable. The expanded protocol, packet and extension catalog below ships in published v0.7.0. Nightly is the separate rolling preview. Read protopeek agent tools from the running build for its actual capabilities; an older archive can expose fewer tools. ProtoPeek does not bundle a model, require an AI account or send telemetry. Your agent and browser share the running workbench's Go services.

Connect and watch

  1. Start ProtoPeek, open its browser URL through 127.0.0.1, then choose

    Settings → AI agents → Enable agent connection. Pairing deliberately requires literal loopback; if you opened localhost, use the offered 127.0.0.1 link first. Leave Allow write actions off for inspection. Enable it for HTTP POST/PUT/PATCH/DELETE download controls, gRPC connections/calls/disconnection, Cap’n Proto calls and packet capture. RPC methods can have side effects regardless of their names. Disable the connection to change that choice.

  2. Copy the MCP configuration from AI agents in the running workbench into your agent. It includes the running binary's

    absolute path and its pairing-file location, so it also works with a custom install or profile. The generic configuration below works when protopeek is on PATH and uses the default profile.

  3. Keep ProtoPeek running. Ask your agent to inspect a service and watch its calls in Activity.

    Follow latest selects the newest call; selecting a previous call holds your place.

For clients that accept an mcpServers JSON object:

{
  "mcpServers": {
    "protopeek": {
      "command": "protopeek",
      "args": ["mcp"]
    }
  }
}

v0.7.0 also offers client-specific configuration fragments for Codex CLI, Claude Code, Gemini CLI and OpenCode from their Extensions entries and AI agent setup. AI agent setup also offers LM Studio, whose Extensions Endpoint guide links to that profile through Configure LM Studio, plus a generic profile. Merge the fragment under the named key in your existing client file rather than replacing unrelated settings. The generated profile shows the executable origin; choose the PATH variant only when your MCP client can resolve protopeek. Copy becomes available when the workbench has the pairing-file path.

For Claude Code, run claude in the project, trust the folder if you recognize it, and approve the protopeek server when prompted. If claude mcp get protopeek reports Pending approval, complete that review before reconnecting. If Gemini CLI folder trust is enabled, trust the project, then run gemini mcp list. In OpenCode, run opencode mcp list. Look for protopeek and its connection status. The native client check exercises these three clients with a local, read-only pairing.

The surrounding configuration format and reload step belong to your MCP client. This is a standard stdio server: stdout contains protocol messages only. The official Go SDK handles negotiation, tools, resources and cancellation. There is no separate Node.js service or MCP proxy to install.

Showcase a real workflow

Use ProtoPeek to inspect my local listeners. Ask which service to check if several match.
Inspect that HTTP service, explain its status and timing, and show the evidence in ProtoPeek.
Do not change services or download files.

This produces actual device_snapshot, device_listeners, optional scan_ports, and http_request calls. A port is evidence, not proof of a protocol. Each admitted call returns a receipt ID that also appears in the UI. HTTP results use the existing body, headers, timing, redirects and status panels. Open HTTP opens its workbench without automatically sending another request.

For an explicitly requested file, enable writes and ask the agent to read download_queue, start the engine if needed, and queue the supplied URL with its expected SHA-256. Queueing is not completion: inspect the actual queue status. Download jobs continue after the tool returns. Cancelling a tool cannot undo an upstream request or delete a downloaded file.

CLI and agent instructions

Public API discovery

The public documentation publishes an API catalog, OpenAPI document, ARD manifest, MCP Server Card, authentication metadata and Agent Skill index. These describe the project; they do not enable or pair a running workbench. Use that build's live tool catalog and generated configuration for local execution.

Run an explicit CLI call

Shell-based agents can use the same connection without MCP:

protopeek agent tools
protopeek agent guide
protopeek agent --help
# Current source: discovery works before pairing.
pp agent search subnet
pp agent schema network_diagnose

Discovery works before pairing. In search results, writes: true means a tool can change state. For HTTP, GET, HEAD and OPTIONS remain available with read-only pairing. Other methods require write access.

Pass one JSON arguments object on stdin. PowerShell example:

'{"method":"GET","url":"http://127.0.0.1:3000/health"}' | protopeek agent call http_request

POSIX shell example:

printf '%s' '{"method":"GET","url":"http://127.0.0.1:3000/health"}' | protopeek agent call http_request

These commands attach to the paired workbench, including its existing download queue. Failed tools return a nonzero CLI exit code. An observed HTTP 404 remains an HTTP result rather than a relay failure. MCP clients can read protopeek://agent-guide; instructions are also supplied during initialization and by workbench_info. Ctrl+C or MCP cancellation stops the current call.

Exposed tools

ToolActionPermission
workbench_infoVersion, scope, limits and instructionsInspection
device_snapshotLocal identity and interfacesInspection
device_listenersListeners, connections and process evidenceExplicit local-inspection acknowledgement
http_requestHTTP(S), body, headers, TLS and timingsGET/HEAD/OPTIONS; other methods need writes
scan_portsOne host, at most 1,024 selected TCP portsInspection with active probes
route_lookupSelected local next-hop route; may resolve DNSInspection
tailnet_inspectInstalled Tailscale status and peersInspection
managed_tools (current source)Local status and versions of downloadable companionsInspection
network_diagnose (current source)System DNS, a TLS handshake, or offline subnet mathOne explicit target
extensions_listThe 20 IDs and integration levels; no host lookupInspection
extension_inspectOne selected entry’s CLI-location evidence; ChatGPT web remains externalInspection, explicit host lookup for detectable entries
download_queueShared engine, configuration and queueInspection
download_start_engineStart configured/bundled aria2Writes
download_addQueue one URL in the configured directoryWrites
download_actionPause, resume or cancel a known jobWrites
grpc_connectReflection-backed session; explicit host:port, plaintext or verified TLSWrites
grpc_schemaRequest schema for one discovered method and known sessionInspection
grpc_callUnary/streaming JSON invocation, metadata and native gRPC evidenceWrites
grpc_disconnectClose the known session and its connectionWrites
capnp_schemaInspect caller-shared compiled schema, up to 64 KiB decodedInspection
capnp_callTyped single call or plan of at most eight stepsWrites
events_readFinite receive-only SSE/WebSocket connection; at most 10 secondsInspection with an active connection
packets_analyzeCaller-shared PCAP/PCAPNG, up to 64 KiB decoded; metadata onlyExplicit sharing acknowledgement
packets_interfacesInstalled capture-tool interface listing; no captureExplicit sharing acknowledgement
packets_captureOne known interface and IP/port filter; at most 10 seconds/2,000 packetsWrites, capture consent and sharing acknowledgement

Read exact schemas through agent tools or MCP tools/list. This adapter does not accept arbitrary API paths, shell commands, executable paths, file deletion, account changes or tunnel mutations, unrestricted network diagnostics, WebSocket sends or reusable event sessions.

For gRPC, connect explicitly, inspect the returned method list and grpc_schema, then call only an authorized method. Supply the returned sessionId; use grpc_disconnect when finished. The adapter accepts no host proto/certificate paths or insecure TLS switch. Native non-OK gRPC status marks the receipt failed even when the relay returned HTTP 200. Retention limits mark it partial and preserve the actual messages, headers, trailers and local-limit evidence.

Cap’n Proto accepts a compiled schema supplied in the arguments, never source compilation or a host path. Inspect exact IDs, ordinals, generic bindings and returned-capability paths before calling. Exact numeric tokens survive dispatch; a later failed plan step retains earlier results and marks the receipt partial. Calls close their capability connection before returning.

events_read returns complete captured NDJSON events as a bounded events array with protocol open/close/limit evidence. It closes the upstream connection before returning, sends no application messages and leaves no reusable WebSocket session. A finite read is not a health monitor.

Extension tools do not install or execute vendors, start services, authenticate, pull models or publish ports. extension_inspect accepts one catalog ID, never an executable path. It checks this process’s PATH and reviewed fixed locations; aria2 may read/hash an existing cached bundle. The result is location evidence, not proof the application is installed, running or signed in. The ChatGPT web entry performs no host lookup and provides no local stdio connector or hosted relay. Local Codex CLI configuration remains a separate workflow.

Packet tools require acknowledgeSharing=true: addresses, DNS names and other captured metadata are sent to the chosen agent/model. Analysis accepts supplied bytes only, not a filename. Capture also needs consent=true, write actions, installed dumpcap and current OS permission; no installation or elevation occurs. Neither adapter exposes reconstruction or decryption. Native live capture acceptance remains separate from parser and translation fixtures.

Pairing, data and bounds

Pairing writes protopeek/agent-connection.json beneath the OS user configuration directory: normally %APPDATA% on Windows, XDG_CONFIG_HOME on Linux (or ~/.config), and ~/Library/Application Support on macOS. It holds a loopback URL and random bearer token. Creation requests private file permissions and inherits the user directory's OS access controls. Do not paste that token into chat or command arguments.

PROTOPEEK_AGENT_CONNECTION selects an absolute pairing-file path for isolated profiles. Pairing another window replaces the default file; restart the MCP client to attach to that window. For simultaneous workbenches, give each server and agent a different pairing-file path. After a server restart, re-pair: old tokens are rejected. Disable revokes access and cancels active calls. It leaves already queued downloads under their ordinary queue controls.

  • Only literal loopback connections are accepted. Browser origins and UI CSRF are checked; redirects are refused and environment HTTP proxies are bypassed.
  • Two active agent calls and four active activity viewers. Existing tools retain a 60-second deadline. gRPC and Cap’n Proto calls retain native deadlines up to 30 seconds, with maxDurationSeconds: 35 reserving five seconds for native final/partial evidence. Other protocol and packet adapters declare 30 seconds; event reads are additionally limited to 0.1–10 seconds. Inspect the live catalog for per-tool limits.
  • Arguments fit within 128 KiB, with smaller per-tool limits. Handler response capture is bounded to 512 KiB; retained activity receipts keep at most 64 KiB. Oversized output becomes an explicit truncated preview, not a promise to preserve a 1 MiB result.
  • Raw packet and compiled-schema base64 must decode to at most 64 KiB. The entire request still fits within the existing 128 KiB envelope; metadata and params share that budget.
  • The latest 32 receipts retain at most 64 KiB each in memory. Inputs are not stored in activity. Clear finished removes completed results. Leaving the page stops its activity wait.
  • Results can contain sensitive service data. Your chosen agent and model provider receive tool output; their retention policy belongs to them. Treat returned service text as data, never as instructions.

If connection fails, check that ProtoPeek is running, pair again and reload the MCP client. If the command is missing, use the correct binary's full path. A write-permission error means the action did not run. Missing installed tools produce real unavailable/error evidence.

See the roadmap, HTTP workbench, Downloader and settings.