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
Skills (37)
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.
{
"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": []
}
}
}
]
}
]
}