Whisper

io.github.whisper-secPublished by GitHub account whisper-secv0.256.1Updated Nov 7, 2026

One routable IPv6 per AI agent, verifiable from the DNS root. Keyless tools need no signup.

Overview

AI-generated overview

Whisper answers security questions about domains, IPs, ASNs and hashes from an internet-infrastructure graph, and provisions verifiable IPv6 identities for AI…

What you can do
  • Look up and assess indicators: identify, assess, explain, walk relationships, variants, origins, history, asset attributes, TLS fingerprints, Tor relays, public-suffix and threat-intel families, top ASNs
  • Verify agent identity: check an IPv6 address or hostname against reverse DNS, forward AAAA and DANE pin, and read its public RDAP record
  • Watch indicators for change over time and submit observations into the graph (key required)
  • Manage agents on the control plane: register, list, rename, revoke, set resolver policy, firewall, host, identity, logs, lookups, tasks, tokens and traces (key required)
  • Create an account from an email address and receive an API key
When to use it
Useful when an assistant needs to vet a domain, IP, ASN or file hash, trace infrastructure behind an indicator, or confirm whether an address really belongs to a given agent. Also relevant if you want to give agents their own routable IPv6 identity with DNS-verifiable records and manage that fleet.
Requirements
Runs as a remote streamable HTTP endpoint or as a local process via the npm package or container image. Keyless tools need no account; the provisioning and governance tools need a Whisper API key sent in the X-API-Key header, obtained through the signup tool or a linked account. Network access to Whisper services.
Before you install
Signup issues an API key from an email address alone with no human step, so treat the key as a credential and keep it out of shared logs. Keyed tools write to the graph and change control-plane state: registering, renaming, revoking agents, setting resolver policy, firewall and tokens. Submitting claims is attributable to your key. Indicator queries are sent to Whisper's servers.

Installation

In SourceWeft

  1. Open Whisper in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.whisper-sec%2Fwhisper/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "whisper": {
      "type": "http",
      "url": "https://whisper.online/mcp"
    }
  }
}

README

whisper

Give your agent a real, routable Whisper IPv6 identity - one command.

whisper is the command-line client for Whisper: a single static binary that gives an agent a real, routable IPv6 /128 on AS219419, wires egress so the agent's traffic sources from that address, and verifies it end-to-end. The address is the identity - DNSSEC-signed, DANE-pinned, and resolvable in public RDAP. One binary, standard ports, no config to get started.

It is two surfaces over one core: a fully scriptable Cobra CLI, and a full-screen Bubble Tea TUI when you run whisper on a terminal with no subcommand. And it talks to the whisper.security graph: whisper query for raw Cypher, whisper graph for the 29-recipe catalog (below).


Use it from an AI assistant, with no account

No API key and no install. Put this in your client's config and seven tools appear, and every one answers with no key. Add a key, by env var or by whisper login once on the machine, and the same server lists 45:

json
{  "mcpServers": {    "whisper": {      "command": "npx",      "args": ["-y", "@whisper-security/whisper-mcp"]    }  }}

Claude Desktop, Claude Code, Cursor, Windsurf, VS Code, Cline and Zed all take the same three lines. Already installed the CLI? whisper mcp is the identical server.

The seven, measured against the server with no key anywhere on the machine:

  • whisper_verify - is this address or hostname a real agent, and whose? Checks the DANE pin against DNSSEC-signed DNS, from the IANA root.
  • whisper_rdap - the public registration record for any /128.
  • whisper_assess - a verdict on a domain, IP, ASN or file hash, with its evidence.
  • whisper_identify - what an indicator is: category, vendor, band.
  • whisper_explain - the scored explanation behind a verdict, with its sources.
  • read_docs - the whisper.security documentation, listed, searched or fetched page by page.
  • list_workflows - the gallery of ready-made investigations, and what each one takes.

Add a key and the same server lists 45: the graph in full, plus registering agents, setting resolver policy, handing out egress configuration, reading per-agent activity and revoking an identity.

Or connect to a URL and run nothing at all

https://whisper.online/mcp

Most clients take that URL and nothing else. Claude Code, for one: claude mcp add --transport http whisper https://whisper.online/mcp.

Streamable HTTP. initialize and tools/list answer with no credential, so a client that takes a bare URL needs nothing else. The HTTP transport is a different server from the stdio one above and it lists a different set: 17 tools with no key, every one of which works with no key, and 41 once you send your key as the X-API-Key header (the stdio server's keyed set is the 45 above).

The keyless 17 are the identity checks and the graph: whisper_verify, whisper_rdap, whisper_assess, whisper_identify, whisper_explain, whisper_walk, whisper_watch, whisper_variants, whisper_origins, whisper_history, whisper_asset, whisper_psl, whisper_threatintel, whisper_lookupTlsFingerprint, whisper_lookupTorRelay, whisper_topAsnsByPrefixCount, and whisper_signup, which issues you an API key from an email address alone. The 24 a key adds over HTTP are the provisioning and governance set, 23 of them whisper_agents_* and the 24th whisper_submit, which writes a claim into the graph and so needs to be attributable.

whisper_verify and whisper_rdap check somebody else's agent. whisper_agents_verify in the keyed set verifies a domain you control, which is not the same thing.

Verifying somebody else's agent needs nothing at all, not even the client:

curl -s https://rdap.whisper.online/verify-identity/2a04:2a01:b69a:6717:e3b0:51ff:3bf7:f478

Install

The one-liner fetches the signed binary straight from this repo's GitHub Releases, verifies its SHA-256 (and its PGP signature when gpg is present), and puts it on your PATH:

sh
curl -fsSL https://get.whisper.online | sh

Windows (PowerShell):

powershell
irm https://get.whisper.online/install.ps1 | iex

Homebrew (macOS/Linux):

sh
brew install whisper-sec/tap/whisper

Scoop (Windows):

powershell
scoop bucket add whisper https://github.com/whisper-sec/scoop-bucketscoop install whisper

With Go:

sh
go install github.com/whisper-sec/whisper-cli/cmd/whisper@latest

With mise (GitHub-release backend, no plugin):

sh
mise use -g "github:whisper-sec/whisper-cli[exe=whisper]"

(asdf has no built-in GitHub-release backend, so on asdf use mise, or a community ubi-style plugin.)

On Debian/Ubuntu (apt) - signed repo:

sh
curl -fsSL https://get.whisper.online/whisper.gpg | sudo tee /usr/share/keyrings/whisper.gpg >/dev/nullecho "deb [signed-by=/usr/share/keyrings/whisper.gpg] https://get.whisper.online/deb stable main" | sudo tee /etc/apt/sources.list.d/whisper.listsudo apt update && sudo apt install whisper

On Fedora/RHEL (dnf) - signed repo:

sh
sudo tee /etc/yum.repos.d/whisper.repo >/dev/null <<'EOF'[whisper]name=Whisperbaseurl=https://get.whisper.online/rpmenabled=1gpgcheck=1gpgkey=https://get.whisper.online/whisper.gpgEOFsudo dnf install whisper

On Alpine (apk) - signed repo:

sh
wget -qO /etc/apk/keys/whisper-apk.rsa.pub https://get.whisper.online/apk/whisper-apk.rsa.pubecho "https://get.whisper.online/apk" | sudo tee -a /etc/apk/repositoriessudo apk add whisper

All three repos are served from our own infrastructure (AS219419) and signed with the Whisper package key (get.whisper.online/whisper.gpg; the apk repo uses its own whisper-apk.rsa.pub).

Or download the binary for your platform from the Releases page, make it executable, and put it on your PATH.

The installers (scripts/install.sh, scripts/install.ps1) are published here so the whole install path is inspectable. They are the same scripts get.whisper.online serves, differing only in where they download from by default: these fetch whisper-<os>-<arch> (plus .sha256 and .asc) from this repo's releases, the served copy fetches the same binaries from cli.whisper.online/dl. Either way SHA-256 is a hard gate - a mismatch aborts the install - and the PGP check is an extra layer. Point WHISPER_CLI_BASE at any mirror to override the source.

Verify the download

Releases are signed with the AS219419 PGP key:

Fingerprint: EFF1663D992539682106A5EAD0F70908CF3B7929

The public key is published at https://as219419.net/. To verify a binary you downloaded manually:

sh
# 1. SHA-256 - compare against the asset's .sha256 (and the release checksums.txt)sha256sum -c whisper-linux-amd64.sha256
# 2. PGP - import the AS219419 key, then verify the detached signaturecurl -fsSL https://as219419.net/whisper-release.asc | gpg --importgpg --verify whisper-linux-amd64.asc whisper-linux-amd64

A good signature reports Good signature from the key with the fingerprint above.


Quickstart

Run whisper with no arguments for the guided flow. It signs you in (browser device login or a pasted API key), helps you name and create an agent if you don't have one, then connects and verifies:

text
$ whisperwhisper: signed in.whisper: name your agent: my-first-agentwhisper: created my-first-agent → 2a04:2a01:…::1whisper: connecting…2a04:2a01:…::1  ✓ egress verifiedConnected ✓

Naming is mandatory - an agent's name is part of its identity, so the flow asks before it creates one. The same steps are scriptable:

sh
whisper connect            # bring up egress bound to your /128 (Tier-1.5 SOCKS5/HTTPS)whisper connect --tier wireguard   # Tier-1: routed /128 over a userspace WireGuard tunnel (no root)whisper ip                 # print your egress IP and verify it IS your /128 (exit 0 = verified)whisper run -- curl ifconfig.co   # run any command with your Whisper egress wired inwhisper claude             # run Claude Code through your Whisper egress, one stepwhisper init claude        # wire THIS project so Claude Code always egresses from its own /128whisper use my-agent       # choose the agent the rest of `whisper` binds towhisper status             # key state, selected agent, connection state

whisper ip is exit-code-first: 0 when the observed egress address is inside 2a04:2a01::/32 and equals your selected agent's /128, 1 otherwise - so scripts and agents can gate on it. Add --json to any command for the raw, scriptable envelope.

Per-project agent identity for Claude Code. whisper init claude makes a project zero-config: run it once in a directory and Claude Code there - and every subagent it spawns - egresses from that project's own /128, over SOCKS5 (default) or --tier wireguard. It pins the project's agent + tier in .whisper/config, wires a local proxy into .claude/settings.local.json (merge-safe - it never clobbers your settings), and keeps the connection up via a small auto-reconnecting daemon. Different projects, different identities, nothing to remember. Pass --agent <name|/128> to reuse an existing agent or --name <new> to mint one.

Other useful commands: whisper list, whisper logs, whisper policy, `whisper rdap

`, `whisper verify `, `whisper query `, `whisper graph `, `whisper login`, `whisper dash` (the full-screen dashboard), `whisper config`. Run `whisper --help` for details.

Query the security graph

The same whisper.security graph the Whisper resolver consults on every lookup - 6.9B nodes (hostnames, IPs, ASNs, certs, threat intel), 50.0B relationships - is a first-class CLI surface. whisper query runs raw parameterised Cypher; whisper graph runs a named recipe from the embedded catalog:

sh
whisper query "CALL whisper.identify(['api.openai.com'])"    # who operates this host?whisper query 'CALL whisper.assess([$v])' --param v=8.8.8.8  # threat posture, one row per hostwhisper graph list                    # all 29 recipes, each with its docs URLwhisper graph variants paypal.com     # registered typosquat look-alikes, one tablewhisper graph typosquat paypal.com    # the full brand-impersonation flow (streams NDJSON)

Direct recipes answer with one result table (--json emits the raw {columns,rows,statistics} envelope); flow recipes stream their steps as NDJSON - pipe them to jq. Every recipe documents itself: whisper graph <recipe> --help.

query and graph authenticate with your API key (whisper login, WHISPER_API_KEY, or --key). The graph endpoint itself is two-tier: the direct read verbs (whisper.identify, whisper.assess, whisper.variants, whisper.explain, db.schema, ...) also answer keyless and rate-limited - no account needed:

sh
curl -s https://graph.whisper.online/api/query \  -H 'content-type: application/json' \  -d '{"query":"CALL whisper.assess([\"8.8.8.8\"])"}'

A key lifts the rate limit and unlocks raw Cypher and the multi-step flows. The same tools ride the MCP server (whisper mcp): whisper_graph_query plus one tool per recipe. Docs: www.whisper.security/docs - the raw Cypher API at /docs/cypher-api, per-verb pages under /docs/whisper-graph.


Sign, verify & encrypt as your agent

Your agent's /128 carries a per-agent EC P-256 key, pinned in DNSSEC-signed DNS - so it can sign a document as itself and anyone can verify it with no account and no certificate authority. Trust is anchored by DANE, not a CA you have to install.

bash
# Sign any file, PDF or email as your agent -> a detached S/MIME (.p7s):whisper sign file contract.pdf
# Verify with NO key: checks the CMS signature AND that the signer's key matches the# DNSSEC-validated SMIMEA (RFC 8162) pin for the signer - resolved from the IANA root, in-process:whisper sign verify contract.pdf --sig contract.pdf.p7s
# Encrypt a file so ONLY the named agent can read it (keyless), then decrypt as that agent (keyed):whisper encrypt --to [email protected] secret.txt   # -> secret.txt.wencwhisper decrypt secret.txt.wenc

The per-agent verification key a stranger resolves is the agent's DANE TLSA 3 1 1 (and, for signatures, its SMIMEA 3 1 1) - both DNSSEC-signed and checkable with dig + openssl, no Whisper account. Full guide, including the byte-exact signature envelope: https://whisper.online/docs/sign-encrypt.

What you get

  • A real, routable /128 out of 2a04:2a01::/32, announced by AS219419 - your own internet address, not a shared NAT pool.
  • Identity that's verifiable from the outside. Forward DNS is DNSSEC-signed and DANE-pinned; reverse DNS (ip6.arpa PTR) resolves to the agent; the assignment is visible in public RDAP at rdap.whisper.online.
  • Egress that binds your identity. whisper connect provisions a local proxy whose traffic sources from your /128; whisper ip proves the source address is yours, node-free and with no third party in the loop. --tier wireguard brings the /128 up as a routed address over a userspace WireGuard tunnel (wireguard-go netstack - still no root, no kernel wg, no TUN device), fronted by the same local proxy so tools need no change.
  • One binary, zero config. Static, CGO-free, with an embedded CA bundle - it runs on a bare host or a stripped container and just works.

Use it from your code

Same identity + egress from your language of choice - thin wrappers over this CLI:

Python - pip install whisper-id

python
from whisper_id import register, egressagent = register("my-bot")            # a routable /128with egress():                        # this block leaves from your /128    requests.get("https://api64.ipify.org")

Node - npm i whisper-id

js
import { register, withEgress } from "whisper-id";const agent = await register("my-bot");await withEgress(async () => { /* env-aware clients leave from your /128 */ });

Run it in a container

The official image runs the CLI as an egress sidecar so any container leaves from your /128:

sh
docker run --rm ghcr.io/whisper-sec/whisper:latest --version

whisper init compose and whisper init k8s emit a ready-to-merge sidecar manifest. Multi-arch (amd64/arm64), distroless, ~18 MB.


Build from source

Requires Go 1.26.9+.

sh
git clone https://github.com/whisper-sec/whisper-clicd whisper-cligo build -o whisper ./cmd/whisper./whisper --version

Cross-compile every supported platform into dist/ (binaries + .sha256, named exactly as the release assets):

sh
./build-all.sh                 # → dist/whisper-<os>-<arch>[.exe] + .sha256./build-all.sh dist v1.0.0     # stamp a version into `whisper --version`

platforms.txt is the single source of truth for the target matrix - shared by build-all.sh and the installers.

Source here, binaries there

This repository is the Whisper client: identity, egress, connect, verify, the security-graph surface and the TUI. It is MIT, and what you build from it is that client.

The published binaries are not only that. whisper also carries Whisper's endpoint sensor - the service, sensor and posture commands - and the sensor is not open source today. It ships as a binary and its sources stay closed, so a binary from a release, from curl -fsSL https://get.whisper.online | sh, or from apt, dnf, apk, brew or scoop has those commands. Anything BUILT from this tree does not: go install, a local go build, and the snap, which snapcraft builds from source.

Two consequences worth stating plainly. The MIT licence covers the source in this repository, not the additional closed component in the published binaries. And if you want the endpoint sensor, install a released binary rather than building from source.

Platforms

OS \ Archamd64arm64armriscv64mipsmipsle386
linux✓✓✓✓✓✓✓
darwin✓✓
windows✓✓

linux-arm is 32-bit ARMv7. Every target is a static, CGO-free build, and every one is signed with the AS219419 release key.


Links


Contributing

Issues and pull requests are welcome - see CONTRIBUTING.md. Run go build ./..., go vet ./..., go test ./..., and gofmt -l . before opening a PR.

To report a security issue, see SECURITY.md.


License

MIT © 2026 viaGraph B.V. (Whisper Security) - for the source in this repository. The published binaries additionally contain the closed-source endpoint sensor; see Source here, binaries there.

The embedded Mozilla CA certificate list (internal/client/cabundle/mozilla-cacert.pem) is distributed under the Mozilla Public License 2.0.

Source: README.md at commit 28d7c00

Tools

41

whisper_signup

Get a Whisper API key

Start or complete Whisper signup from an email address alone, and receive an API key that unlocks the provisioning and governance skills on this card. Send {"email":"..."} to start; a six-digit code arrives by email; send {"signup_id":"...","code":"123456"} to complete. No human step, no account needed first. Example call: {"skill":"signup","input":{"email":"[email protected]"}}

Parametersinputrequired

whisper_verify

Verify a Whisper agent identity

Is this IPv6 address or hostname a real Whisper agent, and whose? Grades the full keyless trust chain: the reverse DNS record, the forward AAAA confirming it back to the same address, and the DANE-EE certificate pin published in DNSSEC-signed DNS. Returns is_whisper_agent with the evidence for the verdict either way, so a negative answer is an answer and not an error. Answers without an API key, and every leg of it is independently checkable from the DNS root with dig. Example call: {"skill":"verify","input":"2a04:2a01:b69a:6717:e3b0:51ff:3bf7:f478"}

Parametersinputrequired

whisper_rdap

Look up an address in RDAP

The public registration record for any address in Whisper's space, in RFC 9083 form: the handle, the agent's label, its country, and the entities behind it. The same document the RDAP service serves at /ip/{address}, which any RDAP client can already read. Answers without an API key. Example call: {"skill":"rdap","input":"2a04:2a01:b69a:6717:e3b0:51ff:3bf7:f478"}

Parametersinputrequired

whisper_identify

identify

Identify an indicator (domain, IP, hash, …) against the graph. Answers without an API key. Example call: {"skill":"identify","input":"example.com"}

Parametersinputrequired

whisper_assess

assess

Assess the risk/policy posture of one or more indicators. Answers without an API key. Example call: {"skill":"assess","input":"example.com"}

Parametersinputrequired

whisper_walk

walk

Walk the graph from an indicator across its relationships. Answers without an API key. Example call: {"skill":"walk","input":"example.com"}

Parametersinputrequired

whisper_watch

watch

Watch an indicator for change/activity over time. Answers without an API key. Example call: {"skill":"watch","input":{"action":"list"}}

Parametersinputrequired

whisper_submit

submit

Submit an observation/claim into the graph. Writes to the graph, so it needs your API key: an anonymous claim would not be attributable. Example call: {"skill":"submit","input":{"host":"example.com","claim":"benign"}} Needs a linked Whisper account (OAuth) or your API key in the X-API-Key header.

Parametersinputrequired

whisper_explain

explain

Explain a verdict - the evidence and reasoning behind it. Answers without an API key. Example call: {"skill":"explain","input":"example.com"}

Parametersinputrequired

whisper_variants

variants

Enumerate variants/permutations of an indicator. Answers without an API key. Example call: {"skill":"variants","input":"example.com"}

Parametersinputrequired

whisper_origins

origins

Trace the origins/provenance of an indicator. Answers without an API key. Example call: {"skill":"origins","input":"example.com"}

Parametersinputrequired

whisper_history

history

Historical records for an indicator (incl. whois/bgp history). Answers without an API key. Example call: {"skill":"history","input":"example.com"}

Parametersinputrequired

whisper_lookupTlsFingerprint

lookupTlsFingerprint

Look up a TLS (JA3/JA4) fingerprint in the graph. Answers without an API key. Example call: {"skill":"lookupTlsFingerprint","input":"ja3:771,4865-4866-4867"}

Parametersinputrequired

whisper_lookupTorRelay

lookupTorRelay

Look up Tor relay metadata for an address. Answers without an API key. Example call: {"skill":"lookupTorRelay","input":"185.220.101.1"}

Parametersinputrequired

whisper_asset

asset

Resolve an asset and its catalog of attributes. Answers without an API key. Example call: {"skill":"asset","input":"example.com"}

Parametersinputrequired

whisper_threatintel

threatintel

Threat-intelligence indicator family (candidate apex/CDN/hosting). A family verb: name the sub-verb as "sub" alongside the input. Sub-verbs: candidateCdnApex, candidateMultiTenantApex, candidateSharedHostingIp.. Answers without an API key. Example call: {"skill":"threatintel","sub":"candidateCdnApex","input":5}

Parameterssubrequiredinputrequired

whisper_psl

psl

Public-suffix-list family (tld-plus-one, is-public-suffix, affiliation). A family verb: name the sub-verb as "sub" alongside the input. Sub-verbs: tldPlusOne, isPublicSuffix, affiliation.. Answers without an API key. Example call: {"skill":"psl","sub":"tldPlusOne","input":"a.b.example.co.uk"}

Parameterssubrequiredinputrequired

whisper_topAsnsByPrefixCount

topAsnsByPrefixCount

Top ASNs ranked by announced-prefix count. Answers without an API key. Example call: {"skill":"topAsnsByPrefixCount","input":10}

Parametersinputrequired

whisper_agents_agent

agents: agent

The agent operation on the Whisper control plane, served as CALL whisper.agents({op:'agent', args:{...}}). Requires your Whisper API key. The identifier in the example is a placeholder for one of YOUR agents: list them with the "agents.list" skill and {"kind":"agents"}. Add include:'tombstones' to read an agent that is gone: its newest lifecycle row says whether it was revoked, released, erased or reaped, when, by whom and why. Example call: {"skill":"agents.agent","input":{"agent":"agent-a1f4c0b2d3e4f5a67"}} Needs a linked Whisper account (OAuth) or your API key in the X-API-Key header.

Parametersinputrequired

whisper_agents_alert

agents: alert

The alert operation on the Whisper control plane, served as CALL whisper.agents({op:'alert', args:{...}}). Requires your Whisper API key. With no arguments it describes what you already have, so the example below runs as published. Example call: {"skill":"agents.alert","input":{}} Needs a linked Whisper account (OAuth) or your API key in the X-API-Key header.

Parametersinput

whisper_agents_connect

agents: connect

The connect operation on the Whisper control plane, served as CALL whisper.agents({op:'connect', args:{...}}). Requires your Whisper API key. With no arguments it describes what you already have, so the example below runs as published. Example call: {"skill":"agents.connect","input":{}} Needs a linked Whisper account (OAuth) or your API key in the X-API-Key header.

Parametersinput

whisper_agents_detect

agents: detect

The detect operation on the Whisper control plane, served as CALL whisper.agents({op:'detect', args:{...}}). Requires your Whisper API key. Example call: {"skill":"agents.detect","input":{}} Needs a linked Whisper account (OAuth) or your API key in the X-API-Key header.

Parametersinput

whisper_agents_disconnect

agents: disconnect

The disconnect operation on the Whisper control plane, served as CALL whisper.agents({op:'disconnect', args:{...}}). Requires your Whisper API key. With no arguments it describes what you already have, so the example below runs as published. Example call: {"skill":"agents.disconnect","input":{}} Needs a linked Whisper account (OAuth) or your API key in the X-API-Key header.

Parametersinput

whisper_agents_domain

agents: domain

The domain operation on the Whisper control plane, served as CALL whisper.agents({op:'domain', args:{...}}). Requires your Whisper API key. Example call: {"skill":"agents.domain","input":{"name":"example.com"}} Needs a linked Whisper account (OAuth) or your API key in the X-API-Key header.

Parametersinputrequired

whisper_agents_firewall

agents: firewall

The firewall operation on the Whisper control plane, served as CALL whisper.agents({op:'firewall', args:{...}}). Requires your Whisper API key. The identifier in the example is a placeholder for one of YOUR agents: list them with the "agents.list" skill and {"kind":"agents"}. Example call: {"skill":"agents.firewall","input":{"agent":"agent-a1f4c0b2d3e4f5a67"}} Needs a linked Whisper account (OAuth) or your API key in the X-API-Key header.

Parametersinputrequired

whisper_agents_history

agents: history

The history operation on the Whisper control plane, served as CALL whisper.agents({op:'history', args:{...}}). Requires your Whisper API key. The identifier in the example is a placeholder for one of YOUR agents: list them with the "agents.list" skill and {"kind":"agents"}. Example call: {"skill":"agents.history","input":{"address":"2a04:2a01:f6d7:1ffe:a0be:ba8a:c355:bba1"}} Needs a linked Whisper account (OAuth) or your API key in the X-API-Key header.

Parametersinputrequired

whisper_agents_host

agents: host

The host operation on the Whisper control plane, served as CALL whisper.agents({op:'host', args:{...}}). Requires your Whisper API key. Example call: {"skill":"agents.host","input":{"name":"my-host","type":"TXT","value":"hello"}} Needs a linked Whisper account (OAuth) or your API key in the X-API-Key header.

Parametersinputrequired

whisper_agents_identity

agents: identity

The identity operation on the Whisper control plane, served as CALL whisper.agents({op:'identity', args:{...}}). Requires your Whisper API key. With no arguments it describes what you already have, so the example below runs as published. Example call: {"skill":"agents.identity","input":{}} Needs a linked Whisper account (OAuth) or your API key in the X-API-Key header.

Parametersinput

whisper_agents_list

agents: list

The list operation on the Whisper control plane, served as CALL whisper.agents({op:'list', args:{...}}). Requires your Whisper API key. Add include:'tombstones' to list the agents that are gone as well, paged, each with its lifecycle state (never 'active'), actor and reason. Example call: {"skill":"agents.list","input":{"kind":"agents"}} Needs a linked Whisper account (OAuth) or your API key in the X-API-Key header.

Parametersinputrequired

whisper_agents_logs

agents: logs

The logs operation on the Whisper control plane, served as CALL whisper.agents({op:'logs', args:{...}}). Requires your Whisper API key. With no arguments it describes what you already have, so the example below runs as published. Example call: {"skill":"agents.logs","input":{}} Needs a linked Whisper account (OAuth) or your API key in the X-API-Key header.

Parametersinput

whisper_agents_lookups

agents: lookups

The lookups operation on the Whisper control plane, served as CALL whisper.agents({op:'lookups', args:{...}}). Requires your Whisper API key. With no arguments it describes what you already have, so the example below runs as published. Example call: {"skill":"agents.lookups","input":{}} Needs a linked Whisper account (OAuth) or your API key in the X-API-Key header.

Parametersinput

whisper_agents_partner

agents: partner

The partner operation on the Whisper control plane, served as CALL whisper.agents({op:'partner', args:{...}}). Requires your Whisper API key. It is gated on partner authority rather than on arguments: without it the call is refused whatever you pass. Example call: {"skill":"agents.partner","input":{}} Needs a linked Whisper account (OAuth) or your API key in the X-API-Key header.

Parametersinput

whisper_agents_policy

agents: policy

The policy operation on the Whisper control plane, served as CALL whisper.agents({op:'policy', args:{...}}). Requires your Whisper API key. With no arguments it describes what you already have, so the example below runs as published. Example call: {"skill":"agents.policy","input":{}} Needs a linked Whisper account (OAuth) or your API key in the X-API-Key header.

Parametersinput

whisper_agents_register

agents: register

The register operation on the Whisper control plane, served as CALL whisper.agents({op:'register', args:{...}}). Requires your Whisper API key. Example call: {"skill":"agents.register","input":{"label":"my-first-agent"}} Needs a linked Whisper account (OAuth) or your API key in the X-API-Key header.

Parametersinputrequired

whisper_agents_rename

agents: rename

The rename operation on the Whisper control plane, served as CALL whisper.agents({op:'rename', args:{...}}). Requires your Whisper API key. The identifier in the example is a placeholder for one of YOUR agents: list them with the "agents.list" skill and {"kind":"agents"}. Example call: {"skill":"agents.rename","input":{"agent":"agent-a1f4c0b2d3e4f5a67","label":"renamed-agent"}} Needs a linked Whisper account (OAuth) or your API key in the X-API-Key header.

Parametersinputrequired

whisper_agents_resolver

agents: resolver

The resolver operation on the Whisper control plane, served as CALL whisper.agents({op:'resolver', args:{...}}). Requires your Whisper API key. With no arguments it describes what you already have, so the example below runs as published. Example call: {"skill":"agents.resolver","input":{}} Needs a linked Whisper account (OAuth) or your API key in the X-API-Key header.

Parametersinput

whisper_agents_revoke

agents: revoke

The revoke operation on the Whisper control plane, served as CALL whisper.agents({op:'revoke', args:{...}}). Requires your Whisper API key. The identifier in the example is a placeholder for one of YOUR agents: list them with the "agents.list" skill and {"kind":"agents"}. Example call: {"skill":"agents.revoke","input":{"agent":"agent-a1f4c0b2d3e4f5a67"}} Needs a linked Whisper account (OAuth) or your API key in the X-API-Key header.

Parametersinputrequired

whisper_agents_task

agents: task

The task operation on the Whisper control plane, served as CALL whisper.agents({op:'task', args:{...}}). Requires your Whisper API key. The identifier in the example is a placeholder for one of YOUR agents: list them with the "agents.list" skill and {"kind":"agents"}. Example call: {"skill":"agents.task","input":{"agent":"agent-a1f4c0b2d3e4f5a67"}} Needs a linked Whisper account (OAuth) or your API key in the X-API-Key header.

Parametersinputrequired

whisper_agents_token

agents: token

The token operation on the Whisper control plane, served as CALL whisper.agents({op:'token', args:{...}}). Requires your Whisper API key. The identifier in the example is a placeholder for one of YOUR agents: list them with the "agents.list" skill and {"kind":"agents"}. Example call: {"skill":"agents.token","input":{"agent":"agent-a1f4c0b2d3e4f5a67"}} Needs a linked Whisper account (OAuth) or your API key in the X-API-Key header.

Parametersinputrequired

whisper_agents_trace

agents: trace

The trace operation on the Whisper control plane, served as CALL whisper.agents({op:'trace', args:{...}}). Requires your Whisper API key. Example call: {"skill":"agents.trace","input":{"dest":"203.0.113.7"}} Needs a linked Whisper account (OAuth) or your API key in the X-API-Key header.

Parametersinputrequired

whisper_agents_verify

agents: verify

The verify operation on the Whisper control plane, served as CALL whisper.agents({op:'verify', args:{...}}). Requires your Whisper API key. Example call: {"skill":"agents.verify","input":{"name":"example.com"}} Needs a linked Whisper account (OAuth) or your API key in the X-API-Key header.

Parametersinputrequired

Version history

11
  1. v0.256.1LatestNov 7, 2026
  2. v0.250.0Nov 6, 2026
  3. v0.244.0Nov 3, 2026
  4. v0.242.0Nov 3, 2026
  5. v0.222.0Oct 12, 2026
  6. v0.221.0Oct 11, 2026
  7. v0.220.0Oct 11, 2026
  8. v0.219.4Sep 24, 2026
  9. v0.219.3Sep 24, 2026
  10. v0.219.2Sep 18, 2026
  11. v0.214.0Sep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts