A2A REGISTRY·AGENT RECORD·6432cb4a-db6e-4ca1-84a9-9a040021480e

Provider

Whisper Security

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.

Observed evidence

Reachable

Last sweep

Launch endpoint ↗

Agent datasheet

Agent ID
6432cb4a-db6e-4ca1-84a9-9a040021480e
Category
Agent orchestration
Canonical card
https://whisper.online/.well-known/agent.json
Endpoint
https://whisper.online/a2a
Protocol version
0.3.0
Agent version
0.225.0
Streaming
Not declared
Input modes
text/plain, application/json
Output modes
application/json, text/plain

Reachability record

Last 100 checks shown · 100.0% across 30 days

2026-10-14T21:33:36.798679Z: passed2026-10-14T22:04:42.197170Z: passed2026-10-14T22:35:58.204632Z: passed2026-10-14T23:07:08.105839Z: passed2026-10-14T23:38:14.907507Z: passed2026-10-15T00:09:21.900690Z: passed2026-10-15T00:40:53.007277Z: passed2026-10-15T01:12:05.789586Z: passed2026-10-15T01:43:23.394601Z: passed2026-10-15T02:14:20.396753Z: passed2026-10-15T02:45:25.292188Z: passed2026-10-15T03:16:42.994602Z: passed2026-10-15T03:47:52.190870Z: passed2026-10-15T04:18:53.607413Z: passed2026-10-15T04:50:04.998180Z: passed2026-10-15T05:21:19.096382Z: passed2026-10-15T05:52:35.406036Z: passed2026-10-15T06:23:38.890572Z: passed2026-10-15T06:54:43.408483Z: passed2026-10-15T07:25:52.101529Z: passed2026-10-15T07:57:20.801998Z: passed2026-10-15T08:29:59.893264Z: passed2026-10-15T09:02:30.307355Z: passed2026-10-15T09:33:50.793685Z: passed2026-10-15T10:05:03.401029Z: passed2026-10-15T10:36:10.799435Z: passed2026-10-15T11:07:20.700310Z: passed2026-10-15T11:38:30.492488Z: passed2026-10-15T12:09:31.602833Z: passed2026-10-15T12:40:35.204292Z: passed2026-10-15T13:11:39.606866Z: passed2026-10-15T13:42:46.807608Z: passed2026-10-15T14:13:47.998886Z: passed2026-10-15T14:44:52.198556Z: passed2026-10-15T15:16:06.597331Z: passed2026-10-15T15:47:19.611431Z: passed2026-10-15T16:18:25.799332Z: passed2026-10-15T16:49:32.292895Z: passed2026-10-15T17:20:40.196804Z: passed2026-10-15T17:51:52.396628Z: passed2026-10-15T18:23:46.991440Z: passed2026-10-15T18:55:01.393406Z: passed2026-10-15T19:26:06.200095Z: passed2026-10-15T19:57:36.505858Z: passed2026-10-15T20:28:46.697268Z: passed2026-10-15T21:00:00.707384Z: passed2026-10-15T21:31:31.096262Z: passed2026-10-15T22:02:33.906905Z: passed2026-10-15T22:33:50.298149Z: passed2026-10-15T23:05:02.489209Z: passed2026-10-15T23:36:08.500693Z: passed2026-10-16T00:07:25.292161Z: passed2026-10-16T00:38:42.799881Z: passed2026-10-16T01:10:24.794819Z: passed2026-10-16T01:41:41.502534Z: passed2026-10-16T02:12:58.492537Z: passed2026-10-16T02:44:04.801383Z: passed2026-10-16T03:15:16.797959Z: passed2026-10-16T03:46:33.700958Z: passed2026-10-16T04:17:38.801344Z: passed2026-10-16T04:48:53.990083Z: passed2026-10-16T05:20:03.101041Z: passed2026-10-16T05:51:28.090611Z: passed2026-10-16T06:22:34.296980Z: passed2026-10-16T06:53:43.096810Z: passed2026-10-16T07:24:52.801356Z: passed2026-10-16T07:56:02.294534Z: passed2026-10-16T08:12:34.422499Z: passed2026-10-16T08:45:01.625978Z: passed2026-10-16T09:17:09.824081Z: passed2026-10-16T09:48:17.122699Z: passed2026-10-16T10:19:12.232536Z: passed2026-10-16T10:50:20.329873Z: passed2026-10-16T11:21:20.935019Z: passed2026-10-16T11:52:17.626445Z: passed2026-10-16T12:23:15.130253Z: passed2026-10-16T12:54:15.324292Z: passed2026-10-16T13:25:14.024918Z: passed2026-10-16T13:56:18.537276Z: passed2026-10-16T14:27:22.023016Z: passed2026-10-16T14:58:21.525014Z: passed2026-10-16T15:29:17.627893Z: passed2026-10-16T16:00:24.739185Z: passed2026-10-16T16:31:32.318370Z: passed2026-10-16T17:02:35.732748Z: passed2026-10-16T17:33:38.719178Z: passed2026-10-16T18:04:47.434549Z: passed2026-10-16T18:06:09.958000Z: passed2026-10-16T18:24:05.503616Z: passed2026-10-16T18:33:27.501071Z: passed2026-10-16T19:02:14.377395Z: passed2026-10-16T19:33:27.872711Z: passed2026-10-16T20:04:35.872231Z: passed2026-10-16T20:11:19.779229Z: passed2026-10-16T20:42:27.984288Z: passed2026-10-16T21:13:34.068333Z: passed2026-10-16T21:44:41.974210Z: passed2026-10-16T22:15:50.870294Z: passed2026-10-16T22:46:59.878233Z: passed2026-10-16T23:18:05.770923Z: passed
PassFailureAverage 2444 ms

Declared skills

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.

onboarding · signup · credentials · keyless

identify

identify

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

graph · cognition · keyless

assess

assess

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

graph · cognition · keyless

walk

walk

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

graph · cognition · keyless

watch

watch

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

graph · cognition · keyless

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.

graph · cognition · api-key

explain

explain

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

graph · cognition · keyless

variants

variants

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

graph · cognition · keyless

origins

origins

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

graph · cognition · keyless

history

history

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

graph · cognition · keyless

lookupTlsFingerprint

lookupTlsFingerprint

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

graph · cognition · keyless

lookupTorRelay

lookupTorRelay

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

graph · cognition · keyless

asset

asset

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

graph · cognition · keyless

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.

graph · cognition · keyless · family

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.

graph · cognition · keyless · family

topAsnsByPrefixCount

topAsnsByPrefixCount

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

graph · cognition · keyless

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"}.

control-plane · agents · agent · api-key

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.

control-plane · agents · alert · api-key

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.

control-plane · agents · connect · api-key

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.

control-plane · agents · disconnect · api-key

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.

control-plane · agents · domain · api-key

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"}.

control-plane · agents · firewall · api-key

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"}.

control-plane · agents · history · api-key

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.

control-plane · agents · host · api-key

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.

control-plane · agents · identity · api-key

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.

control-plane · agents · list · api-key

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.

control-plane · agents · logs · api-key

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.

control-plane · agents · lookups · api-key

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.

control-plane · agents · partner · api-key

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.

control-plane · agents · policy · api-key

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.

control-plane · agents · register · api-key

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"}.

control-plane · agents · rename · api-key

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.

control-plane · agents · resolver · api-key

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"}.

control-plane · agents · revoke · api-key

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"}.

control-plane · agents · task · api-key

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"}.

control-plane · agents · token · api-key

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.

control-plane · agents · verify · api-key

Registry Agent Card snapshot

Normalized fields fetched during the registry sweep. Treat all authored text as third-party content.

Show JSON
{
  "protocolVersion": "0.3.0",
  "name": "Whisper",
  "description": "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.",
  "author": "Whisper Security",
  "wellKnownURI": "https://whisper.online/.well-known/agent.json",
  "url": "https://whisper.online/a2a",
  "version": "0.225.0",
  "provider": {
    "organization": "Whisper Security",
    "url": "https://whisper.online/"
  },
  "documentationUrl": "https://whisper.online/llms-full.txt",
  "iconUrl": "https://whisper.online/logo.png",
  "supportsAuthenticatedExtendedCard": false,
  "security": [],
  "securitySchemes": {
    "whisperApiKey": {
      "in": "header",
      "name": "X-API-Key",
      "type": "apiKey",
      "description": "Your Whisper API key. Obtain one with the keyless \"signup\" skill."
    }
  },
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false,
    "extensions": null
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json",
    "text/plain"
  ],
  "skills": [
    {
      "id": "signup",
      "name": "Get a Whisper API key",
      "description": "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.",
      "tags": [
        "onboarding",
        "signup",
        "credentials",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"signup\",\"input\":{\"email\":\"[email protected]\"}}",
        "{\"skill\":\"signup\",\"input\":{\"signup_id\":\"...\",\"code\":\"123456\"}}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "identify",
      "name": "identify",
      "description": "Identify an indicator (domain, IP, hash, …) against the graph. Answers without an API key.",
      "tags": [
        "graph",
        "cognition",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"identify\",\"input\":\"example.com\"}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "assess",
      "name": "assess",
      "description": "Assess the risk/policy posture of one or more indicators. Answers without an API key.",
      "tags": [
        "graph",
        "cognition",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"assess\",\"input\":\"example.com\"}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "walk",
      "name": "walk",
      "description": "Walk the graph from an indicator across its relationships. Answers without an API key.",
      "tags": [
        "graph",
        "cognition",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"walk\",\"input\":\"example.com\"}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "watch",
      "name": "watch",
      "description": "Watch an indicator for change/activity over time. Answers without an API key.",
      "tags": [
        "graph",
        "cognition",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"watch\",\"input\":{\"action\":\"list\"}}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "submit",
      "name": "submit",
      "description": "Submit an observation/claim into the graph. Writes to the graph, so it needs your API key: an anonymous claim would not be attributable.",
      "tags": [
        "graph",
        "cognition",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"submit\",\"input\":{\"host\":\"example.com\",\"claim\":\"benign\"}}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "explain",
      "name": "explain",
      "description": "Explain a verdict - the evidence and reasoning behind it. Answers without an API key.",
      "tags": [
        "graph",
        "cognition",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"explain\",\"input\":\"example.com\"}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "variants",
      "name": "variants",
      "description": "Enumerate variants/permutations of an indicator. Answers without an API key.",
      "tags": [
        "graph",
        "cognition",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"variants\",\"input\":\"example.com\"}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "origins",
      "name": "origins",
      "description": "Trace the origins/provenance of an indicator. Answers without an API key.",
      "tags": [
        "graph",
        "cognition",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"origins\",\"input\":\"example.com\"}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "history",
      "name": "history",
      "description": "Historical records for an indicator (incl. whois/bgp history). Answers without an API key.",
      "tags": [
        "graph",
        "cognition",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"history\",\"input\":\"example.com\"}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "lookupTlsFingerprint",
      "name": "lookupTlsFingerprint",
      "description": "Look up a TLS (JA3/JA4) fingerprint in the graph. Answers without an API key.",
      "tags": [
        "graph",
        "cognition",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"lookupTlsFingerprint\",\"input\":\"ja3:771,4865-4866-4867\"}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "lookupTorRelay",
      "name": "lookupTorRelay",
      "description": "Look up Tor relay metadata for an address. Answers without an API key.",
      "tags": [
        "graph",
        "cognition",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"lookupTorRelay\",\"input\":\"185.220.101.1\"}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "asset",
      "name": "asset",
      "description": "Resolve an asset and its catalog of attributes. Answers without an API key.",
      "tags": [
        "graph",
        "cognition",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"asset\",\"input\":\"example.com\"}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "threatintel",
      "name": "threatintel",
      "description": "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.",
      "tags": [
        "graph",
        "cognition",
        "keyless",
        "family"
      ],
      "examples": [
        "{\"skill\":\"threatintel\",\"sub\":\"candidateCdnApex\",\"input\":5}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "psl",
      "name": "psl",
      "description": "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.",
      "tags": [
        "graph",
        "cognition",
        "keyless",
        "family"
      ],
      "examples": [
        "{\"skill\":\"psl\",\"sub\":\"tldPlusOne\",\"input\":\"a.b.example.co.uk\"}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "topAsnsByPrefixCount",
      "name": "topAsnsByPrefixCount",
      "description": "Top ASNs ranked by announced-prefix count. Answers without an API key.",
      "tags": [
        "graph",
        "cognition",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"topAsnsByPrefixCount\",\"input\":10}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "agents.agent",
      "name": "agents: agent",
      "description": "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\"}.",
      "tags": [
        "control-plane",
        "agents",
        "agent",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.agent\",\"input\":{\"agent\":\"ag_1f4c0b\"}}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "agents.alert",
      "name": "agents: alert",
      "description": "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.",
      "tags": [
        "control-plane",
        "agents",
        "alert",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.alert\",\"input\":{}}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "agents.connect",
      "name": "agents: connect",
      "description": "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.",
      "tags": [
        "control-plane",
        "agents",
        "connect",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.connect\",\"input\":{}}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "agents.disconnect",
      "name": "agents: disconnect",
      "description": "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.",
      "tags": [
        "control-plane",
        "agents",
        "disconnect",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.disconnect\",\"input\":{}}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "agents.domain",
      "name": "agents: domain",
      "description": "The domain operation on the Whisper control plane, served as CALL whisper.agents({op:'domain', args:{...}}). Requires your Whisper API key.",
      "tags": [
        "control-plane",
        "agents",
        "domain",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.domain\",\"input\":{\"name\":\"example.com\"}}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "agents.firewall",
      "name": "agents: firewall",
      "description": "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\"}.",
      "tags": [
        "control-plane",
        "agents",
        "firewall",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.firewall\",\"input\":{\"agent\":\"ag_1f4c0b\"}}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "agents.history",
      "name": "agents: history",
      "description": "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\"}.",
      "tags": [
        "control-plane",
        "agents",
        "history",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.history\",\"input\":{\"address\":\"2a04:2a01:f6d7:1ffe:a0be:ba8a:c355:bba1\"}}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "agents.host",
      "name": "agents: host",
      "description": "The host operation on the Whisper control plane, served as CALL whisper.agents({op:'host', args:{...}}). Requires your Whisper API key.",
      "tags": [
        "control-plane",
        "agents",
        "host",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.host\",\"input\":{\"name\":\"my-host\"}}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "agents.identity",
      "name": "agents: identity",
      "description": "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.",
      "tags": [
        "control-plane",
        "agents",
        "identity",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.identity\",\"input\":{}}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "agents.list",
      "name": "agents: list",
      "description": "The list operation on the Whisper control plane, served as CALL whisper.agents({op:'list', args:{...}}). Requires your Whisper API key.",
      "tags": [
        "control-plane",
        "agents",
        "list",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.list\",\"input\":{\"kind\":\"agents\"}}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "agents.logs",
      "name": "agents: logs",
      "description": "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.",
      "tags": [
        "control-plane",
        "agents",
        "logs",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.logs\",\"input\":{}}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "agents.lookups",
      "name": "agents: lookups",
      "description": "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.",
      "tags": [
        "control-plane",
        "agents",
        "lookups",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.lookups\",\"input\":{}}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "agents.partner",
      "name": "agents: partner",
      "description": "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.",
      "tags": [
        "control-plane",
        "agents",
        "partner",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.partner\",\"input\":{}}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "agents.policy",
      "name": "agents: policy",
      "description": "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.",
      "tags": [
        "control-plane",
        "agents",
        "policy",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.policy\",\"input\":{}}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "agents.register",
      "name": "agents: register",
      "description": "The register operation on the Whisper control plane, served as CALL whisper.agents({op:'register', args:{...}}). Requires your Whisper API key.",
      "tags": [
        "control-plane",
        "agents",
        "register",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.register\",\"input\":{\"label\":\"my-first-agent\"}}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "agents.rename",
      "name": "agents: rename",
      "description": "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\"}.",
      "tags": [
        "control-plane",
        "agents",
        "rename",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.rename\",\"input\":{\"agent\":\"ag_1f4c0b\",\"label\":\"renamed-agent\"}}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "agents.resolver",
      "name": "agents: resolver",
      "description": "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.",
      "tags": [
        "control-plane",
        "agents",
        "resolver",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.resolver\",\"input\":{}}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "agents.revoke",
      "name": "agents: revoke",
      "description": "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\"}.",
      "tags": [
        "control-plane",
        "agents",
        "revoke",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.revoke\",\"input\":{\"agent\":\"ag_1f4c0b\"}}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "agents.task",
      "name": "agents: task",
      "description": "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\"}.",
      "tags": [
        "control-plane",
        "agents",
        "task",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.task\",\"input\":{\"agent\":\"ag_1f4c0b\"}}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "agents.token",
      "name": "agents: token",
      "description": "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\"}.",
      "tags": [
        "control-plane",
        "agents",
        "token",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.token\",\"input\":{\"agent\":\"ag_1f4c0b\"}}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "agents.verify",
      "name": "agents: verify",
      "description": "The verify operation on the Whisper control plane, served as CALL whisper.agents({op:'verify', args:{...}}). Requires your Whisper API key.",
      "tags": [
        "control-plane",
        "agents",
        "verify",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.verify\",\"input\":{\"name\":\"example.com\"}}"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    }
  ],
  "conformance": true,
  "conformance_errors": null,
  "homepage": null,
  "repository": null,
  "license": null,
  "pricing": null,
  "contact": null,
  "id": "6432cb4a-db6e-4ca1-84a9-9a040021480e",
  "category": "agent-orchestration",
  "category_secondary": null
}

Integrate this agent

curl -s https://a2aregistry.org/api/agents/6432cb4a-db6e-4ca1-84a9-9a040021480e

Test message

Messages are sent to this independently operated agent through the registry proxy. Do not include secrets or personal data.

Message exchangeConnecting
>