Whisper
Give an AI agent a stable, routable IPv6 address of its own and egress that anyone can verify from outside. Use this when you need a fixed IP your traffic actually leaves from, an identity another service can check independently by reverse DNS and RDAP rather than taking your word for it, or control over what an agent is allowed to reach and a record of what it did. It also answers security questions about any domain, address or file hash from the Whisper graph, with no account at all. The address space is AS219419, which we run; an email address alone is enough to get a key.
AgentCard object. It is an agent card in spirit rather than in schema — useful for
discovery, but an A2A client cannot assume it will parse.
no-protocolVersion
An A2A client finds this agent by fetching the well-known path on the provider's own host. That is what makes an agent card different from every other agent artifact in this catalog: it is provider-published by construction — it cannot be derived, generated, or reconstructed on a provider's behalf.
https://whisper.online/a2a
· transport
· protocol JSONRPC
non-standard supportedInterfaces
Get a Whisper API key signup
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.
onboardingsignupcredentialskeylessidentify
Identify an indicator (domain, IP, hash, …) against the graph. Answers without an API key.
graphcognitionkeylessassess
Assess the risk/policy posture of one or more indicators. Answers without an API key.
graphcognitionkeylesswalk
Walk the graph from an indicator across its relationships. Answers without an API key.
graphcognitionkeylesswatch
Watch an indicator for change/activity over time. Answers without an API key.
graphcognitionkeylesssubmit
Submit an observation/claim into the graph. Writes to the graph, so it needs your API key: an anonymous claim would not be attributable.
graphcognitionapi-keyexplain
Explain a verdict - the evidence and reasoning behind it. Answers without an API key.
graphcognitionkeylessvariants
Enumerate variants/permutations of an indicator. Answers without an API key.
graphcognitionkeylessorigins
Trace the origins/provenance of an indicator. Answers without an API key.
graphcognitionkeylesshistory
Historical records for an indicator (incl. whois/bgp history). Answers without an API key.
graphcognitionkeylesslookupTlsFingerprint
Look up a TLS (JA3/JA4) fingerprint in the graph. Answers without an API key.
graphcognitionkeylesslookupTorRelay
Look up Tor relay metadata for an address. Answers without an API key.
graphcognitionkeylessasset
Resolve an asset and its catalog of attributes. Answers without an API key.
graphcognitionkeylessthreatintel
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.
graphcognitionkeylessfamilypsl
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.
graphcognitionkeylessfamilytopAsnsByPrefixCount
Top ASNs ranked by announced-prefix count. Answers without an API key.
graphcognitionkeylessagents: 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"}.
control-planeagentsagentapi-keyagents: 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.
control-planeagentsalertapi-keyagents: 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.
control-planeagentsconnectapi-keyagents: 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.
control-planeagentsdisconnectapi-keyagents: domain agents.domain
The domain operation on the Whisper control plane, served as CALL whisper.agents({op:'domain', args:{...}}). Requires your Whisper API key.
control-planeagentsdomainapi-keyagents: 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"}.
control-planeagentsfirewallapi-keyagents: 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"}.
control-planeagentshistoryapi-keyagents: host agents.host
The host operation on the Whisper control plane, served as CALL whisper.agents({op:'host', args:{...}}). Requires your Whisper API key.
control-planeagentshostapi-keyagents: 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.
control-planeagentsidentityapi-keyagents: list agents.list
The list operation on the Whisper control plane, served as CALL whisper.agents({op:'list', args:{...}}). Requires your Whisper API key.
control-planeagentslistapi-keyagents: 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.
control-planeagentslogsapi-keyagents: 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.
control-planeagentslookupsapi-keyagents: 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.
control-planeagentspartnerapi-keyagents: 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.
control-planeagentspolicyapi-keyagents: register agents.register
The register operation on the Whisper control plane, served as CALL whisper.agents({op:'register', args:{...}}). Requires your Whisper API key.
control-planeagentsregisterapi-keyagents: 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"}.
control-planeagentsrenameapi-keyagents: 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.
control-planeagentsresolverapi-keyagents: 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"}.
control-planeagentsrevokeapi-keyagents: 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"}.
control-planeagentstaskapi-keyagents: 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"}.
control-planeagentstokenapi-keyagents: verify agents.verify
The verify operation on the Whisper control plane, served as CALL whisper.agents({op:'verify', args:{...}}). Requires your Whisper API key.
control-planeagentsverifyapi-key2026-09-19 from https://whisper.online/.well-known/agent-card.json,
HTTP 200. The body was saved verbatim and is the sole source for
everything on this page — no field is inferred.
View the captured card.
Providers change what they serve; if this card has moved or changed shape,
the provider profile carries the
current state as of the last build.
Work with this as data
Every agent card here is available over the APIs.io API and to AI agents over MCP. A2A Agent Cards is not yet its own endpoint on the v1 API. Reach it through catalog search and the tag graph, or the MCP server.