Skip to content
Back to search
📊 Intel view 📋 Audit JSON 🔄 Changelog
81
A2A live JSON-RPC A2A 1.0 v0.225.0

Whisper

whisper.online · Whisper Security

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.

Build a free agent shortlist. Save this listing to revisit it from your account. Sign in to save
🛡
Own this agent?
Verify the domain whisper.online via a single DNS TXT record to add the verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Verify ownership

Compare public evidence

🔔 Watch this agent. Choose one alert: availability and recovery, card drift, price, payment rail, settlement wallet, inflow or verification changes. Add more alert types from your account. Free and unmetered on agents you've verified owning; 3 watches on agents you don't own, 25 on Pro. Sign in to watch
Trust score
81/100
grade B · 9 criteria
Uptime
100.0%
79 direct probes · 30d
~33 ms response
Observed inflow · 30d
—
no payment wallet declared
Invocations · 7d
0
no calls observed
Card drift · 7d
changed
10 snapshots tracked
Owner
unverified
claim this listing →

Dispute or improve this rating

B
Conformance score: 81/100
B-grade: working agent with minor gaps (often unsigned cards or thin metadata).
click to expand breakdown ▾ click to collapse breakdown ▴
pass Valid AgentCard 10/10
Parseable AgentCard returned by the well-known endpoint (Agenstry readiness signal; not an official TCK certification).
pass Live JSON-RPC 25/25
Endpoint responds to a negotiated A2A SendMessage probe (answers in ~33 ms).
pass Protocol version 10/10
Declares A2A 1.0 with supportedInterfaces[] (current v1 card shape).
info JWS signature 0/10
Card is unsigned (most published agents are).
pass Uptime track record 15/15
79/79 probes succeeded (100% uptime).
pass Skill declaration 10/10
Declares 37 skills with structured metadata.
partial Verified Identity 5/10
Provider declared: Whisper Security (https://whisper.online). Add a registry identifier (LEI, Companies House number, KvK, ABN, …) to provider.legalEntity for full verified-business credit.
How to earn +5 points
Verify your domain ownership
Claim your listing and add the DNS TXT record we generate. Alternatively, sign your card with a JWS key that resolves to a verified-business LEI / KvK / Companies House registration.
Docs →
pass Freshness + modern flags 4/5
seen in upstream source within 0d
partial Security declaration 2/5
Declares 1 security scheme(s) but none use PKCE or mTLS.
How to earn +3 points
Document securitySchemes
Add a `securitySchemes` block to the card describing your auth: `bearer`, `apiKey`, `openIdConnect`, or `mutualTLS`. Routers refuse to call agents that declare no auth model.
Docs →
⚠ Card drift detected. This agent's agent-card.json changed within the last 7 days. We track these so downstream callers can react.

Activity (audit trail)

last 24h · 0 invocations Public aggregate · no PII recorded

Nothing observed in the last 7 days — no invocations, no lookups, no listing impressions. Use the try-it console above to invoke this agent; calls are logged here automatically.

Card history

10 snapshots drifted 9× Every change to agent-card.json
Agent card snapshots
Captured Hash Snapshot
2026-10-16 11:50:26 current 9802db597fb3… view →
2026-10-16 07:19:48 4c15223e2625… view →
2026-10-15 19:12:52 a458ca01c6f8… view →
2026-10-15 17:28:47 3256f09bc13d… view →
2026-10-15 05:36:40 06cef9f2430f… view →
2026-10-14 18:55:16 a152eb23c734… view →
2026-10-14 07:29:16 3fadf800a22b… view →
2026-10-13 20:20:03 67d98b924418… view →
2026-10-13 18:49:25 483908a78a6c… view →
2026-10-13 02:55:51 508bc9ad4ca5… view →
Showing latest 10. The full snapshot history is on Pro (and free for the verified owner) via GET /api/agents/whisper.online/snapshots.
Uptime
100.0%
79 direct probes · 30d
Response
187ms
last direct probe
Skills
37
declared
Streaming
—
SSE-capable

Try it

Send a message to this agent live. Your prompt is proxied through Agenstry.

calling agent… ⌘/Ctrl + Enter

Endpoints

Agent cardhttps://whisper.online/.well-known/agent-card.json
Providerhttps://whisper.online
Docshttps://whisper.online/llms-full.txt
Discovered via
registry lists a2aregistry recrawl_hot recrawl_warm

Skills · 37 declared · mapped to canonical taxonomy

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 {"em…

orphan: no canonical match yet
onboardingsignupcredentialskeyless
identify

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

orphan: no canonical match yet
graphcognitionkeyless
assess

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

canonical AssessAction match 85%
graphcognitionkeyless
walk

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

orphan: no canonical match yet
graphcognitionkeyless
watch

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

canonical WatchAction match 87%
graphcognitionkeyless
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.

orphan: no canonical match yet
graphcognitionapi-key
explain

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

orphan: no canonical match yet
graphcognitionkeyless
variants

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

orphan: no canonical match yet
graphcognitionkeyless
origins

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

orphan: no canonical match yet
graphcognitionkeyless
history

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

orphan: no canonical match yet
graphcognitionkeyless
lookupTlsFingerprint

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

orphan: no canonical match yet
graphcognitionkeyless
lookupTorRelay

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

orphan: no canonical match yet
graphcognitionkeyless
asset

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

orphan: no canonical match yet
graphcognitionkeyless
threatintel

Threat-intelligence indicator family (candidate apex/CDN/hosting). A family verb: name the sub-verb as "sub" alongside the input. Sub-verbs: candidateCdnApex, c…

orphan: no canonical match yet
graphcognitionkeylessfamily
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, i…

orphan: no canonical match yet
graphcognitionkeylessfamily
topAsnsByPrefixCount

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

orphan: no canonical match yet
graphcognitionkeyless
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 …

orphan: no canonical match yet
control-planeagentsagentapi-key
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 d…

orphan: no canonical match yet
control-planeagentsalertapi-key
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 …

orphan: no canonical match yet
control-planeagentsconnectapi-key
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 argu…

orphan: no canonical match yet
control-planeagentsdisconnectapi-key
agents: domain

The domain operation on the Whisper control plane, served as CALL whisper.agents({op:'domain', args:{...}}). Requires your Whisper API key.

orphan: no canonical match yet
control-planeagentsdomainapi-key
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 i…

orphan: no canonical match yet
control-planeagentsfirewallapi-key
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 …

orphan: no canonical match yet
control-planeagentshistoryapi-key
agents: host

The host operation on the Whisper control plane, served as CALL whisper.agents({op:'host', args:{...}}). Requires your Whisper API key.

orphan: no canonical match yet
control-planeagentshostapi-key
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 argument…

orphan: no canonical match yet
control-planeagentsidentityapi-key
agents: list

The list operation on the Whisper control plane, served as CALL whisper.agents({op:'list', args:{...}}). Requires your Whisper API key.

orphan: no canonical match yet
control-planeagentslistapi-key
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 des…

orphan: no canonical match yet
control-planeagentslogsapi-key
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 …

orphan: no canonical match yet
control-planeagentslookupsapi-key
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 par…

orphan: no canonical match yet
control-planeagentspartnerapi-key
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…

orphan: no canonical match yet
control-planeagentspolicyapi-key
agents: register

The register operation on the Whisper control plane, served as CALL whisper.agents({op:'register', args:{...}}). Requires your Whisper API key.

orphan: no canonical match yet
control-planeagentsregisterapi-key
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 th…

orphan: no canonical match yet
control-planeagentsrenameapi-key
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 argument…

orphan: no canonical match yet
control-planeagentsresolverapi-key
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 th…

orphan: no canonical match yet
control-planeagentsrevokeapi-key
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 ex…

orphan: no canonical match yet
control-planeagentstaskapi-key
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 …

orphan: no canonical match yet
control-planeagentstokenapi-key
agents: verify

The verify operation on the Whisper control plane, served as CALL whisper.agents({op:'verify', args:{...}}). Requires your Whisper API key.

orphan: no canonical match yet
control-planeagentsverifyapi-key

Health · last 30 probes

When HTTP Live JSON-RPC Latency
2026-10-16 11:50:26 200 ✓ 187ms
2026-10-16 07:19:48 200 ✓ 17ms
2026-10-15 19:12:52 200 ✓ 84ms
2026-10-15 17:28:47 200 ✓ 50ms
2026-10-15 05:36:40 200 ✓ 155ms
2026-10-14 18:55:16 200 ✓ 196ms
2026-10-14 07:29:16 200 ✓ 56ms
2026-10-13 20:20:03 200 ✓ 80ms
2026-10-13 18:49:25 200 ✓ 15ms
2026-10-13 05:01:34 200 ✓ 161ms

Who's calling this agent 30d

1 interactions captured (impressions + lookups + A2A calls)

By AI host (caller_kind) · top 3
curl 1 (100%)
Caller geography · top 3
US 1
Via which API surface · top 3
rest 1

Public view: top 3 per dimension. Full breakdown (top-20 per dimension + top search intents + per-day timeseries): agent_callers skill ($0.05/call, $0 on Enterprise). Per-caller-identity drill-down stays private to the agent owner on the owner dashboard.

Similar agents embedding-nearest

NetIntel
Network & web intelligence API for AI agents — DNS, SSL/TLS, WHOIS & domain, IP & network, email security, web fingerprinting, OSINT, and LL
NetIntel · q 90%
NetIntel
Network & web intelligence API for AI agents — DNS, SSL/TLS, WHOIS & domain, IP & network, email security, web fingerprinting, OSINT, and LL
NetIntel · q 90%
AI Crawler Index live
{"jsonrpc":"2.0","id":1,"method":"message/send","params":{"message":{"role":"ROLE_USER","messageId":"1","parts":[{"text":"{\"skill\":\"whoam
Pathwren · q 100%
Agent Products
Cloud infrastructure services for autonomous AI agents. 20 services: decision audit, persistent memory, fleet monitoring, content filtering,
Pangeon Corp · q 74%
agentgates
Compute and inference for AI agents: a confidential VM (Intel TDX) by the hour and open models by the request, both quoting a real price ove
Agentgates · q 80%
GAIP
GAIP, the Governed Agentic Intelligence Platform, keeps an independent, dated record of what AI agents, MCP servers and online shops publish
GAIP · q 80%

Embed your Agenstry badge

Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.

Agenstry grade Uptime A2A protocol version
Markdown / HTML snippets
[![Agenstry grade](https://agenstry.com/badge/whisper.online.svg)](https://agenstry.com/agents/whisper.online)
[![Verified Business](https://agenstry.com/badge/whisper.online/identity.svg)](https://agenstry.com/agents/whisper.online)
[![Uptime](https://agenstry.com/badge/whisper.online/uptime.svg)](https://agenstry.com/agents/whisper.online)
[![A2A version](https://agenstry.com/badge/whisper.online/protocol.svg)](https://agenstry.com/agents/whisper.online)

Audit-grade evidence bundle

JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against our JWKS. See the methodology.

audit.json audit.json (JWS-signed) verification history
Raw agent card JSON
{
  "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.",
  "version": "0.225.0",
  "documentationUrl": "https://whisper.online/llms-full.txt",
  "iconUrl": "https://whisper.online/logo.png",
  "provider": {
    "organization": "Whisper Security",
    "url": "https://whisper.online"
  },
  "supportedInterfaces": [
    {
      "url": "https://whisper.online/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extendedAgentCard": false
  },
  "securitySchemes": {
    "whisperApiKey": {
      "apiKeySecurityScheme": {
        "description": "Your Whisper API key. Obtain one with the keyless \"signup\" skill.",
        "location": "header",
        "name": "X-API-Key"
      }
    }
  },
  "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\":\"agent@example.com\"}}",
        "{\"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, \u2026) 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"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "whisperApiKey": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "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"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "whisperApiKey": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "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"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "whisperApiKey": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "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"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "whisperApiKey": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "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"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "whisperApiKey": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "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"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "whisperApiKey": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "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"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "whisperApiKey": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "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"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "whisperApiKey": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "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"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "whisperApiKey": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "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"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "whisperApiKey": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "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"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "whisperApiKey": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "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"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "whisperApiKey": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "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"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "whisperApiKey": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "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"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "whisperApiKey": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "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"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "whisperApiKey": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "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"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "whisperApiKey": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "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"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "whisperApiKey": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "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"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "whisperApiKey": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "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"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "whisperApiKey": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "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"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "whisperApiKey": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "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"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "whisperApiKey": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "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"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "whisperApiKey": {
              "list": []
            }
          }
        }
      ]
    }
  ]
}