agenttru.st

Whisper bronze

doh.whisper.online

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.

https://doh.whisper.online/.well-known/agent-card.json its card
🇳🇱 NL · The Constant Company, LLC Checked 1d ago extendedAgentCard, pushNotifications, streaming

we checked this    the operator says this

Community rating 0 0 up · 0 down — sign in to vote

Verified by agenttru.st

Everything here is a check agenttru.st performed itself. Assurance, protocol, hosting and freshness are in the card above and are not repeated.

Certificate
Issued by Let's Encrypt domain-validated
Valid until 18 Dec 2026.
Control of the hostname was checked; nothing about who operates it.
DANE / TLSA
Not verified (TLSA query returned RCodeServerFailure)
Discovery
Well-known document
First seen
21 Sep 2026
View verification details
Assurance
bronze Bronze — agent card fetched over HTTPS with a valid certificate
Protocols
A2A verified by handshake or card fetch, not merely advertised
Hosted in
🇳🇱 NL · The Constant Company, LLC (AS20473)
Last checked
1d ago

What this agent says it can do

Declared in the agent's own card. agenttru.st has not tested whether it completes any of these tasks — the operator of doh.whisper.online controls every word below.

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.

onboardingsignupcredentialskeyless
Examples it gives
  • {"skill":"signup","input":{"email":"agent@example.com"}}
  • {"skill":"signup","input":{"signup_id":"...","code":"123456"}}

identify

Identify an indicator (domain, IP, hash, …) against the graph. Answers without an API key.

graphcognitionkeyless
Examples it gives
  • {"skill":"identify","input":"example.com"}

assess

Assess the risk/policy posture of one or more indicators. Answers without an API key.

graphcognitionkeyless
Examples it gives
  • {"skill":"assess","input":"example.com"}

walk

Walk the graph from an indicator across its relationships. Answers without an API key.

graphcognitionkeyless
Examples it gives
  • {"skill":"walk","input":"example.com"}

watch

Watch an indicator for change/activity over time. Answers without an API key.

graphcognitionkeyless
Examples it gives
  • {"skill":"watch","input":{"action":"list"}}

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.

graphcognitionapi-key
Examples it gives
  • {"skill":"submit","input":{"host":"example.com","claim":"benign"}}

explain

Explain a verdict - the evidence and reasoning behind it. Answers without an API key.

graphcognitionkeyless
Examples it gives
  • {"skill":"explain","input":"example.com"}

variants

Enumerate variants/permutations of an indicator. Answers without an API key.

graphcognitionkeyless
Examples it gives
  • {"skill":"variants","input":"example.com"}

origins

Trace the origins/provenance of an indicator. Answers without an API key.

graphcognitionkeyless
Examples it gives
  • {"skill":"origins","input":"example.com"}

history

Historical records for an indicator (incl. whois/bgp history). Answers without an API key.

graphcognitionkeyless
Examples it gives
  • {"skill":"history","input":"example.com"}

lookupTlsFingerprint

Look up a TLS (JA3/JA4) fingerprint in the graph. Answers without an API key.

graphcognitionkeyless
Examples it gives
  • {"skill":"lookupTlsFingerprint","input":"ja3:771,4865-4866-4867"}

lookupTorRelay

Look up Tor relay metadata for an address. Answers without an API key.

graphcognitionkeyless
Examples it gives
  • {"skill":"lookupTorRelay","input":"185.220.101.1"}

asset

Resolve an asset and its catalog of attributes. Answers without an API key.

graphcognitionkeyless
Examples it gives
  • {"skill":"asset","input":"example.com"}

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.

graphcognitionkeylessfamily
Examples it gives
  • {"skill":"threatintel","sub":"candidateCdnApex","input":5}

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.

graphcognitionkeylessfamily
Examples it gives
  • {"skill":"psl","sub":"tldPlusOne","input":"a.b.example.co.uk"}

topAsnsByPrefixCount

Top ASNs ranked by announced-prefix count. Answers without an API key.

graphcognitionkeyless
Examples it gives
  • {"skill":"topAsnsByPrefixCount","input":10}

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-key
Examples it gives
  • {"skill":"agents.agent","input":{"agent":"ag_1f4c0b"}}

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-key
Examples it gives
  • {"skill":"agents.alert","input":{}}

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-key
Examples it gives
  • {"skill":"agents.connect","input":{}}

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-key
Examples it gives
  • {"skill":"agents.disconnect","input":{}}

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-key
Examples it gives
  • {"skill":"agents.domain","input":{"name":"example.com"}}

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-key
Examples it gives
  • {"skill":"agents.firewall","input":{"agent":"ag_1f4c0b"}}

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-key
Examples it gives
  • {"skill":"agents.history","input":{"address":"2a04:2a01:f6d7:1ffe:a0be:ba8a:c355:bba1"}}

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-key
Examples it gives
  • {"skill":"agents.host","input":{"name":"my-host"}}

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-key
Examples it gives
  • {"skill":"agents.identity","input":{}}

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-key
Examples it gives
  • {"skill":"agents.list","input":{"kind":"agents"}}

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-key
Examples it gives
  • {"skill":"agents.logs","input":{}}

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-key
Examples it gives
  • {"skill":"agents.lookups","input":{}}

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-key
Examples it gives
  • {"skill":"agents.partner","input":{}}

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-key
Examples it gives
  • {"skill":"agents.policy","input":{}}

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-key
Examples it gives
  • {"skill":"agents.register","input":{"label":"my-first-agent"}}

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-key
Examples it gives
  • {"skill":"agents.rename","input":{"agent":"ag_1f4c0b","label":"renamed-agent"}}

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-key
Examples it gives
  • {"skill":"agents.resolver","input":{}}

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-key
Examples it gives
  • {"skill":"agents.revoke","input":{"agent":"ag_1f4c0b"}}

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-key
Examples it gives
  • {"skill":"agents.task","input":{"agent":"ag_1f4c0b"}}

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-key
Examples it gives
  • {"skill":"agents.token","input":{"agent":"ag_1f4c0b"}}

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-key
Examples it gives
  • {"skill":"agents.verify","input":{"name":"example.com"}}

Technical agent card

Copied from the agent's card. The operator controls these values; agenttru.st has not verified them.

Provider
Whisper Security — what this agent says about itself; other agents claiming the same provider are not thereby related
Protocol
a2a
Version
0.219.2
Auth schemes
whisperApiKey
Card completeness
complete all eight fields required by a2a.proto v1.0
View all card details
Capabilities
extendedAgentCard pushNotifications streaming
Agent card
https://doh.whisper.online/.well-known/agent-card.json

Operate this agent and would rather not be listed? Request removal.