Skip to content
PluginStats

acp-probe weekly downloads statistics

By DaniAkash · npm · Claude Code

Probe any ACP-compatible agent for its capabilities (models, modes, configOptions, prompt capabilities, auth methods, MCP transports). No real prompt required; no token cost.

View on npm Fresh · Nov 4, 2026

acp-probe has 3,116 recorded weekly downloads on npm, ranking #1429 of 2,819 tracked listings.

Weekly downloads
3,116
Official API · Nov 2, 2026
7-day growth
—
Insufficient history
30-day growth
—
Insufficient history
90-day growth
—
Insufficient history
Rank
#1429
Among tracked npm listings

About acp-probe

acp-probe

Probe any Agent Client Protocol agent for its capabilities — models, modes, configOptions, prompt capabilities, auth methods, MCP transports — without sending a real prompt.

npm

[!NOTE] Stable. As of 1.0.0 the public API is stable and ready for production use. Breaking changes follow semantic versioning and land only in major releases.

What it does

Given an ACP-compatible agent (built-in like claude or codex, or any custom adapter you can spawn), acp-probe performs the ACP initialize + session/new handshake, then optionally pings session/set_config_option to test whether the agent implements that method. Agents that do not implement it respond with the standard JSON-RPC "method not found" error, which the probe catches to flip supportsConfigOption: false in the result. Finally the agent is torn down. The result is a typed, schema-stable AgentProbeResult you can feed into a settings UI, picker, or downstream AcpRuntimeOptions call.

No LLM tokens are consumed. session/new is free; we never call session/prompt.

Install

bun add acp-probe
# or
npm install acp-probe

The only hard dependency is @agentclientprotocol/sdk. acpx is an optional peer — installed, it lets you use the built-in { agent: 'claude' } shorthand; absent, you pass { command } or { argv } yourself.

Quickstart

import { probeAgent } from 'acp-probe'

// Custom ACP command — the canonical entry point. Zero acpx
// involvement; works with any agent you can spawn.
const result = await probeAgent({
  command: 'my-acp-agent --stdio',
})

console.log(result.models)         // ProbedModel[]
console.log(result.modes)          // ProbedMode[]
console.log(result.configOptions)  // ProbedConfigOption[]
console.log(result.reasoning)      // { configId, values, defaultValue } | null
console.log(result.capabilities.promptCapabilities)
//        => { image: boolean, audio: boolean, embeddedContext: boolean }

// Built-in shorthand — requires acpx to be installed.
const claude = await probeAgent({ agent: 'claude' })

Result shape

interface AgentProbeResult {
  agent: {
    id: string | null
    command: string
    argv: readonly string[]
    probedAt: string  // ISO timestamp
    durationMs: number
  }
  protocolVersion: number
  agentInfo: { name; title?; version? } | null
  capabilities: {
    loadSession: boolean
    promptCapabilities: { image; audio; embeddedContext }
    mcpCapabilities: { http; sse; meta? }
    sessionCapabilities: { close; list; resume; fork; additionalDirectories }
    experimental?: { auth; nes; providers; positionEncoding }
  }
  authMethods: AuthMethod[]
  /**
   * Declarative `session/new.models.availableModels[]`. Best for display
   * — **may contain ids that `setConfigOption('model', X)` will not
   * accept**. See "Picking the right model list" below.
   */
  models: Array<{ id; name?; description? }>
  modes: Array<{ id; name?; description? }>
  configOptions: ProbedConfigOption[]
  /** Derived pointer to the configOption with category='thought_level'. */
  reasoning: { configId; values; defaultValue? } | null
  /**
   * Derived pointer to `configOptions[id=model]`. `values` are the ids
   * that `setConfigOption('model', X)` will accept. `null` when the
   * agent doesn't expose a settable model picker.
   */
  modelConfig: { configId; values; currentValue? } | null
  /**
   * True iff the agent implements `session/set_config_option`. False
   * when the agent responds with JSON-RPC "method not found" to a
   * no-op set call, which is how an adapter without configOptions
   * support signals the method is unimplemented.
   */
  supportsConfigOption: boolean
  error?: ProbeError
  /** Verbatim init + session/new responses for callers that need _meta. */
  raw: { initialize; newSession }
}

Picking the right model list

The probe surfaces two model-related lists from ACP because the two protocol surfaces don't always agree:

  • result.models — the agent's declarative availableModels[] from session/new. Best for display / browsing / showing the user "what this agent can do". May contain ids the agent will not accept as setConfigOption('model', X) inputs — codex-acp, for example, advertises compound <model>/<effort> ids here that setConfigOption rejects (silently — the next prompt finishes with finishReason: "error" and no error frame).
  • result.modelConfig.values — the string ids that the agent's configOptions[id=model] select will accept. null for agents that don't expose configOptions[model] at all, which is also where setConfigOption itself returns -32601 method not found.
  • result.configOptions.find(o => o.id === 'model') — the full typed picker option (names, descriptions, currentValue) for the settable values. Use this when you want to render a rich picker UI on top of the settable list.
Display-only browser
import { probeAgent } from 'acp-probe'

const result = await probeAgent({ command: 'npx @zed-industries/codex-acp@^0.12.0' })

for (const m of result.models) {
  console.log(`${m.id}${m.name ? ` — ${m.name}` : ''}`)
}
Mutable picker that drives setConfigOption
import { probeAgent } from 'acp-probe'

const result = await probeAgent({ command: 'npx @zed-industries/codex-acp@^0.12.0' })

if (!result.modelConfig) {
  console.log('This agent does not expose a model picker — skip the UI.')
} else {
  const { values, currentValue } = result.modelConfig
  for (const id of values) {
    console.log(id === currentValue ? `* ${id}` : `  ${id}`)
  }
}
Rich mutable picker (values + names + descriptions)
import { probeAgent } from 'acp-probe'…

Description from the npm listing.

  • acp
  • agent-client-protocol
  • capability-discovery
  • agent-probe
  • claude-code
  • codex

README badge

Show your rank in a README or on your website. The badge updates automatically.

Charts

Images: 30d · 1y · all time · 1600×900 dark

Adoption over time

acp-probe weekly downloads on npm, last 90 days: 3,116 weekly downloads as of Nov 2, 2026.acp-probeWeekly downloads on npm · Last 90 days3,116downloads / week2.8K2.9K3K3.1K3.2K3.3K3.4K3.5KAug 4Aug 19Sep 3Sep 18Oct 3Oct 18Nov 2downloads / weekNov 2, 2026 – Nov 2, 2026 · 1 observations · Updated Nov 2, 2026pluginstats.com
acp-probe weekly downloads on npm, last 90 days: 3,116 weekly downloads as of Nov 2, 2026.

7/30/90-day growth

acp-probe weekly downloads growth on npm: 7-day growth unavailable, 30-day growth unavailable, 90-day growth unavailable.acp-probeWeekly downloads growth on npm3,116downloads / week now7-day growthinsufficient historyInsufficient history30-day growthinsufficient historyInsufficient history90-day growthinsufficient historyInsufficient historyGrowth vs. nearest observation to each baseline date · Updated Nov 2, 2026pluginstats.com
acp-probe weekly downloads growth on npm: 7-day growth unavailable, 30-day growth unavailable, 90-day growth unavailable.

Ranking history

acp-probe npm ranking history: currently #1429 (by weekly downloads).acp-probenpm ranking · by weekly downloads · Last 90 days#1429current rank#1427#1428#1429#1430#1431Aug 6Aug 21Sep 5Sep 20Oct 5Oct 20Nov 4rankNov 4, 2026 – Nov 4, 2026 · 1 observations · Updated Nov 2, 2026pluginstats.com
acp-probe npm ranking history: currently #1429 (by weekly downloads).

Listing placement

All npm2,816 listings · 141 pages · 1,410 shown · page 77, #16 (overall #1,536)
All npm: every listing in weekly downloads order

Listing placement

Claude Code438 listings · 22 pages · page 10, #3 (overall #183)
Claude Code: every listing in weekly downloads order

Filled points are observed values; hollow points come from Internet Archive snapshots of the listing page. Dashed segments span periods with no observations — values between points are not interpolated.

Each band is one page of 20. Weekly downloads on a linear scale. Placement is projected from weekly downloads, so it can differ from the marketplace's own sort order. Hover a dot to see the listing.

Recent observations

Full history (1)
Recent weekly downloads observations for acp-probe
Date (UTC)Weekly downloadsChange vs. previous
3,116—

Similar npm Claude Code plugins

All 20 acp-probe alternatives

Data source

Weekly downloads (trailing 7 complete days) come from the official npm downloads API. Downloads include CI and mirrors and are not equivalent to installs or users. npm publishes no ratings.

Listing: https://www.npmjs.com/package/acp-probe. First seen Nov 4, 2026; last successful collection Nov 4, 2026. See the methodology.