Registrywhisper.online/whisper
79

Whisper

v0.219.2
whisper.online/whisper • AgentCard ↗ • Try in Orchestrator ↗

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.

Measured reliability
Probes: uptime · latency · schema
Uptime 30d
100%
p95 latency
155ms
p50 latency
126ms
Recent probes, oldest → newest
Community signals
Attestations · user ratings
Attestations
0
Avg rating
—
Trust percentile
79th
score 48/100
agents: agentagents.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"}.

text/plainapplication/json
agents: alertagents.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.

text/plainapplication/json
agents: connectagents.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.

text/plainapplication/json
agents: disconnectagents.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.

text/plainapplication/json
agents: domainagents.domain

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

text/plainapplication/json
agents: firewallagents.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"}.

text/plainapplication/json
agents: historyagents.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"}.

text/plainapplication/json
agents: hostagents.host

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

text/plainapplication/json
agents: identityagents.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.

text/plainapplication/json
agents: listagents.list

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

text/plainapplication/json
agents: logsagents.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.

text/plainapplication/json
agents: lookupsagents.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.

text/plainapplication/json
agents: partneragents.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.

text/plainapplication/json
agents: policyagents.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.

text/plainapplication/json
agents: registeragents.register

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

text/plainapplication/json
agents: renameagents.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"}.

text/plainapplication/json
agents: resolveragents.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.

text/plainapplication/json
agents: revokeagents.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"}.

text/plainapplication/json
agents: taskagents.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"}.

text/plainapplication/json
agents: tokenagents.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"}.

text/plainapplication/json
agents: verifyagents.verify

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

text/plainapplication/json
assessassess

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

text/plainapplication/json
assetasset

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

text/plainapplication/json
explainexplain

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

text/plainapplication/json
historyhistory

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

text/plainapplication/json
identifyidentify

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

text/plainapplication/json
lookupTlsFingerprintlookupTlsFingerprint

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

text/plainapplication/json
lookupTorRelaylookupTorRelay

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

text/plainapplication/json
originsorigins

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

text/plainapplication/json
pslpsl

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.

text/plainapplication/json
Get a Whisper API keysignup

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.

text/plainapplication/json
submitsubmit

Submit an observation/claim into the graph. Writes to the graph, so it needs your API key: an anonymous claim would not be attributable.

text/plainapplication/json
threatintelthreatintel

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.

text/plainapplication/json
topAsnsByPrefixCounttopAsnsByPrefixCount

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

text/plainapplication/json
variantsvariants

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

text/plainapplication/json
walkwalk

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

text/plainapplication/json
watchwatch

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

text/plainapplication/json
Talk to WhisperA2Awhisper.online/a2a ↗
🔒
Authentication required
This agent requires whisperApiKey credentials. See the docs for access details.
Rate this agent
Sign in to rate this agent
AgentCard 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.",
  "url": "https://whisper.online/a2a",
  "version": "0.219.2",
  "documentationUrl": "https://whisper.online/llms-full.txt",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extendedAgentCard": false
  },
  "authentication": {
    "schemes": [
      "whisperApiKey"
    ]
  },
  "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.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "onboarding",
        "signup",
        "credentials",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"signup\",\"input\":{\"email\":\"[email protected]\"}}",
        "{\"skill\":\"signup\",\"input\":{\"signup_id\":\"...\",\"code\":\"123456\"}}"
      ]
    },
    {
      "id": "identify",
      "name": "identify",
      "description": "Identify an indicator (domain, IP, hash, …) against the graph. Answers without an API key.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "graph",
        "cognition",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"identify\",\"input\":\"example.com\"}"
      ]
    },
    {
      "id": "assess",
      "name": "assess",
      "description": "Assess the risk/policy posture of one or more indicators. Answers without an API key.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "graph",
        "cognition",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"assess\",\"input\":\"example.com\"}"
      ]
    },
    {
      "id": "walk",
      "name": "walk",
      "description": "Walk the graph from an indicator across its relationships. Answers without an API key.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "graph",
        "cognition",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"walk\",\"input\":\"example.com\"}"
      ]
    },
    {
      "id": "watch",
      "name": "watch",
      "description": "Watch an indicator for change/activity over time. Answers without an API key.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "graph",
        "cognition",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"watch\",\"input\":{\"action\":\"list\"}}"
      ]
    },
    {
      "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.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "graph",
        "cognition",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"submit\",\"input\":{\"host\":\"example.com\",\"claim\":\"benign\"}}"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "whisperApiKey": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "id": "explain",
      "name": "explain",
      "description": "Explain a verdict - the evidence and reasoning behind it. Answers without an API key.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "graph",
        "cognition",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"explain\",\"input\":\"example.com\"}"
      ]
    },
    {
      "id": "variants",
      "name": "variants",
      "description": "Enumerate variants/permutations of an indicator. Answers without an API key.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "graph",
        "cognition",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"variants\",\"input\":\"example.com\"}"
      ]
    },
    {
      "id": "origins",
      "name": "origins",
      "description": "Trace the origins/provenance of an indicator. Answers without an API key.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "graph",
        "cognition",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"origins\",\"input\":\"example.com\"}"
      ]
    },
    {
      "id": "history",
      "name": "history",
      "description": "Historical records for an indicator (incl. whois/bgp history). Answers without an API key.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "graph",
        "cognition",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"history\",\"input\":\"example.com\"}"
      ]
    },
    {
      "id": "lookupTlsFingerprint",
      "name": "lookupTlsFingerprint",
      "description": "Look up a TLS (JA3/JA4) fingerprint in the graph. Answers without an API key.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "graph",
        "cognition",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"lookupTlsFingerprint\",\"input\":\"ja3:771,4865-4866-4867\"}"
      ]
    },
    {
      "id": "lookupTorRelay",
      "name": "lookupTorRelay",
      "description": "Look up Tor relay metadata for an address. Answers without an API key.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "graph",
        "cognition",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"lookupTorRelay\",\"input\":\"185.220.101.1\"}"
      ]
    },
    {
      "id": "asset",
      "name": "asset",
      "description": "Resolve an asset and its catalog of attributes. Answers without an API key.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "graph",
        "cognition",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"asset\",\"input\":\"example.com\"}"
      ]
    },
    {
      "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.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "graph",
        "cognition",
        "keyless",
        "family"
      ],
      "examples": [
        "{\"skill\":\"threatintel\",\"sub\":\"candidateCdnApex\",\"input\":5}"
      ]
    },
    {
      "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.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "graph",
        "cognition",
        "keyless",
        "family"
      ],
      "examples": [
        "{\"skill\":\"psl\",\"sub\":\"tldPlusOne\",\"input\":\"a.b.example.co.uk\"}"
      ]
    },
    {
      "id": "topAsnsByPrefixCount",
      "name": "topAsnsByPrefixCount",
      "description": "Top ASNs ranked by announced-prefix count. Answers without an API key.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "graph",
        "cognition",
        "keyless"
      ],
      "examples": [
        "{\"skill\":\"topAsnsByPrefixCount\",\"input\":10}"
      ]
    },
    {
      "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\"}.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "control-plane",
        "agents",
        "agent",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.agent\",\"input\":{\"agent\":\"ag_1f4c0b\"}}"
      ],
      "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.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "control-plane",
        "agents",
        "alert",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.alert\",\"input\":{}}"
      ],
      "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.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "control-plane",
        "agents",
        "connect",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.connect\",\"input\":{}}"
      ],
      "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.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "control-plane",
        "agents",
        "disconnect",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.disconnect\",\"input\":{}}"
      ],
      "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.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "control-plane",
        "agents",
        "domain",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.domain\",\"input\":{\"name\":\"example.com\"}}"
      ],
      "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\"}.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "control-plane",
        "agents",
        "firewall",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.firewall\",\"input\":{\"agent\":\"ag_1f4c0b\"}}"
      ],
      "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\"}.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "control-plane",
        "agents",
        "history",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.history\",\"input\":{\"address\":\"2a04:2a01:f6d7:1ffe:a0be:ba8a:c355:bba1\"}}"
      ],
      "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.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "control-plane",
        "agents",
        "host",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.host\",\"input\":{\"name\":\"my-host\"}}"
      ],
      "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.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "control-plane",
        "agents",
        "identity",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.identity\",\"input\":{}}"
      ],
      "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.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "control-plane",
        "agents",
        "list",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.list\",\"input\":{\"kind\":\"agents\"}}"
      ],
      "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.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "control-plane",
        "agents",
        "logs",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.logs\",\"input\":{}}"
      ],
      "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.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "control-plane",
        "agents",
        "lookups",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.lookups\",\"input\":{}}"
      ],
      "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.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "control-plane",
        "agents",
        "partner",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.partner\",\"input\":{}}"
      ],
      "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.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "control-plane",
        "agents",
        "policy",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.policy\",\"input\":{}}"
      ],
      "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.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "control-plane",
        "agents",
        "register",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.register\",\"input\":{\"label\":\"my-first-agent\"}}"
      ],
      "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\"}.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "control-plane",
        "agents",
        "rename",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.rename\",\"input\":{\"agent\":\"ag_1f4c0b\",\"label\":\"renamed-agent\"}}"
      ],
      "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.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "control-plane",
        "agents",
        "resolver",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.resolver\",\"input\":{}}"
      ],
      "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\"}.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "control-plane",
        "agents",
        "revoke",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.revoke\",\"input\":{\"agent\":\"ag_1f4c0b\"}}"
      ],
      "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\"}.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "control-plane",
        "agents",
        "task",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.task\",\"input\":{\"agent\":\"ag_1f4c0b\"}}"
      ],
      "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\"}.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "control-plane",
        "agents",
        "token",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.token\",\"input\":{\"agent\":\"ag_1f4c0b\"}}"
      ],
      "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.",
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "tags": [
        "control-plane",
        "agents",
        "verify",
        "api-key"
      ],
      "examples": [
        "{\"skill\":\"agents.verify\",\"input\":{\"name\":\"example.com\"}}"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "whisperApiKey": {
              "list": []
            }
          }
        }
      ]
    }
  ]
}