Skip to content
Probe MCP
Get Support

Troubleshooting

The probe activates once, on first start, using the single-use code. Common exact errors and what they mean:

Error in the probe logsCause / fix
not activated and no activation code provided (set ACTIVATION_CODE)The container started with no code and no saved credentials. Use the dashboard’s Docker command, which sets ACTIVATION_CODE.
activation failed: HTTP <code>The code was wrong, already used, or expired. Mint a New activation command from the probes list.
activation request: <err>The probe can’t reach the engine. Check outbound internet from the host.
activation response missing required fieldsThe engine returned incomplete credentials — retry with a fresh code; contact support if it persists.
create data dir / write shared-secret / persist activation stateThe data directory isn’t writable. Ensure the /var/lib/probe-mcp volume is mounted and writable.
  • Confirm the container is running (docker ps) and check its logs (docker logs probe-mcp).
  • The tunnel is outbound — confirm the host has outbound internet.
  • A probe stuck pending in the dashboard usually never finished activation — mint a new activation command and redeploy.

A probe moves through three states. It starts pending at enrollment, becomes online when it activates and sends its first heartbeat, and is flipped back to offline by a scheduled sweep once it has gone silent — heartbeats are sent every 60 seconds, three missed ones (180 seconds) count as silent, and the sweep runs every 5 minutes. A probe that recovers goes straight back to online on its next heartbeat, with no re-activation.

Enroll a probe in thedashboardActivation succeeds, firstheartbeatActivation fails (mint a newcode)Heartbeat every 60sSilent 180s, caught by the5-minute sweepHeartbeat resumespendingonlineoffline

Online in the dashboard, but calls still fail

Section titled “Online in the dashboard, but calls still fail”

The status you see can lag reality by several minutes: silence has to last 180 seconds, and only the next 5-minute sweep writes the change. During that gap the dashboard still says Online while nothing is answering.

You can tell the two cases apart by the error Claude reports:

  • probe_offline — the engine already knows the probe is down and refuses to proxy the call at all.
  • probe_unreachable — the engine believed the probe was up, tried the tunnel, and found no healthy origin behind it. This is the lag window.

Both mean the same thing in practice. Check the container on the LAN host rather than trusting the dashboard’s status.

Ask the probe what’s wrong with it first

Section titled “Ask the probe what’s wrong with it first”

Before you go hunting, check probe_status. The probe reports faults about itself on every heartbeat, and the engine turns them into a findings list:

Using Probe MCP, run probe_status on my probe and tell me what findings it reports.

status: 'online' only means the probe is talking to us. A service inside it can be running and discarding every packet it receives, which is exactly what findings catches:

FindingWhat it means
config_rejectedThe probe refused part of the config it was sent and is still running its previous values for the named blocks. It repeats this every heartbeat until a valid document replaces it, so it is current, not historical
snmp_traps_discardedThe trap listener is receiving traps and accepting none. An empty trap history is the listener, not a quiet network — the community doesn’t match
snmp_traps_partially_discardedTraps are being accepted, but some senders are rejected on community. Those devices’ events are missing from an otherwise healthy-looking history. The finding names the senders; read the community off those devices and add it to snmp_trap.communities
wal_backlogUpload segments are queued and not draining. Steady state is 0; a figure that doesn’t fall across heartbeats means the tunnel is down or the drainer is wedged
  • Wrong target — devices must send to the probe’s LAN IP (shown on the probes list), not to a controller.
  • Collector off — syslog and SNMP traps are on by default, but sFlow and NetFlow are not. Enable flow_collector in the config before pointing exporters at 6343/2055.
  • Wrong port — syslog is 514 (UDP and TCP), SNMP traps 162/UDP, sFlow 6343/UDP, NetFlow 2055/UDP. See Pointing your network at the probe.
  • SNMP polling — the probe polls devices outbound on 161; the device must allow SNMP from the probe’s IP and the community/version must match.
  • Redirect loop — a cookie problem on the Google hop. Use a normal (non- private) window and allow cookies for probe-mcp.lanpulse.com, then re-add the connector.
  • “Not authenticated” on every call — the token was revoked or the connector was added before sign-in finished. Remove and re-add it. See Connecting to Claude.

code_mode times out or says a probe is offline

Section titled “code_mode times out or says a probe is offline”
  • { error: 'timeout' } — the run hit its 30-second budget. Ask for a narrower scope (one device, a shorter window) rather than everything at once.
  • probe_offline — you asked for on-demand live data (SNMP, live syslog, topology, pcap, SSH) but the probe isn’t reachable. Stored rollups still work; the live queries need the probe Online. Bring the probe back up and retry.

See Limits and budgets for the full set of timeouts, row caps, and size caps a broad request can run into.

A function exists but says it’s disabled

Section titled “A function exists but says it’s disabled”

Several probe services ship off and are enabled in the probe’s config. The function is always callable in code mode; it’s the probe that refuses. Set the key, restart the container, and retry.

ErrorEnableAffects
pcap disabledpcap.enabled: true (plus the CAP_NET_RAW capability)top_conns, search_conns, pcap_query
ssh proxy disabledssh.enabled: truedevice_cli, ssh_send, ssh_read, ssh_close, run_device_cli
reach_through disabledreach_through.enabled: truehttps_forward
tftp disabledtftp.enabled: trueserve_tftp, stop_tftp
flow collector not enabledflow_collector.enabled: truequery_flows
lbs_disabledRegistered by R1-MCP, not set by hand — see Linking with R1-MCPlbs_status, lbs_clients, lbs_airtime
discovery disableddiscovery.enabled: true (on by default)inventory, topology

Every probe.* call returns a structured result rather than throwing, so a failure arrives as an error field your question comes back quoting. The ones worth recognizing:

ErrorMeans
probe_offlineThe engine knows the probe is down and didn’t attempt the call
probe_unreachableThe tunnel has no healthy origin — the probe died and the status hasn’t caught up
probe_not_foundNo probe with that id on your account. Re-check with list_probes
probe_errorThe probe answered, but with a failure it didn’t classify
lbs_disabledThe RUCKUS One LBS receiver isn’t wired on this probe
search query has no searchable termsA search_syslog term was all punctuation. See what the search accepts
timeoutThe 30-second code_mode budget ran out
metrics_unavailableThe stored-aggregate query failed. Affects snmp_metrics, top_talkers, syslog_rollups
host_forbidden / endpoint_forbiddenThe target isn’t a private LAN address, or isn’t on the reach-through allowlist
connection_not_found / connection_inactiveThe connection id is wrong, or the connection has been deactivated
not_a_vault_connectionA vault operation was aimed at a cloud-mode connection
no_cloud_secretA probe_vault connection was called while the probe was down, with no break-glass copy in place. See break glass
credential_not_found / credential_requiredNo SSH credential is stored for that device
session_not_foundThe SSH session was closed, or was reaped after 600 seconds idle. Open a new one
serve_failedA TFTP serve is already active. Call stop_tftp first
render_failed / storage_failedThe scorecard PDF couldn’t be rendered or stored

Contact support with your probe’s site name and the exact error text from docker logs probe-mcp.