Discovery domain
The Agent Card an A2A agent publishes about itself: identity, interfaces, capabilities, skills and security schemes (A2A v1.0.1 section 4.4, proto messages AgentCard and below).
a2a.discovery is one of a2a's bounded contexts. Back to the index.
Types
APIKeySecurityScheme
a2a.discovery.APIKeySecurityScheme is a record of three fields:
description—Optional<String>, which may be absentlocation—Stringname—String
AgentCapabilities
a2a.discovery.AgentCapabilities is a record of four fields:
streaming—Optional<Boolean>, which may be absentpush_notifications—Optional<Boolean>, which may be absent, calledpushNotificationson the wireextensions—Optional<List<a2a.discovery.AgentExtension>>, which may be absentextended_agent_card—Optional<Boolean>, which may be absent, calledextendedAgentCardon the wire
AgentCard
a2a.discovery.AgentCard is a record of 14 fields:
name—Stringdescription—Stringsupported_interfaces—List<a2a.discovery.AgentInterface>, calledsupportedInterfaceson the wireprovider—Optional<a2a.discovery.AgentProvider>, which may be absentversion—Stringdocumentation_url—Optional<String>, which may be absent, calleddocumentationUrlon the wirecapabilities—a2a.discovery.AgentCapabilitiessecurity_schemes—Optional<Map<String, a2a.discovery.SecurityScheme>>, which may be absent, calledsecuritySchemeson the wiresecurity_requirements—Optional<List<a2a.discovery.SecurityRequirement>>, which may be absent, calledsecurityRequirementson the wiredefault_input_modes—List<String>, calleddefaultInputModeson the wiredefault_output_modes—List<String>, calleddefaultOutputModeson the wireskills—List<a2a.discovery.AgentSkill>signatures—Optional<List<a2a.discovery.AgentCardSignature>>, which may be absenticon_url—Optional<String>, which may be absent, callediconUrlon the wire
AgentCardSignature
a2a.discovery.AgentCardSignature is a record of three fields:
protected—Stringsignature—Stringheader—Optional<Json>, which may be absent
AgentExtension
a2a.discovery.AgentExtension is a record of four fields:
uri—Optional<String>, which may be absentdescription—Optional<String>, which may be absentrequired—Optional<Boolean>, which may be absentparams—Optional<Json>, which may be absent
AgentInterface
a2a.discovery.AgentInterface is a record of four fields:
url—Stringprotocol_binding—String, calledprotocolBindingon the wiretenant—Optional<String>, which may be absentprotocol_version—String, calledprotocolVersionon the wire
AgentProvider
a2a.discovery.AgentProvider is a record of two fields:
url—Stringorganization—String
AgentSkill
a2a.discovery.AgentSkill is a record of eight fields:
id—Stringname—Stringdescription—Stringtags—List<String>examples—Optional<List<String>>, which may be absentinput_modes—Optional<List<String>>, which may be absent, calledinputModeson the wireoutput_modes—Optional<List<String>>, which may be absent, calledoutputModeson the wiresecurity_requirements—Optional<List<a2a.discovery.SecurityRequirement>>, which may be absent, calledsecurityRequirementson the wire
AuthorizationCodeOAuthFlow
a2a.discovery.AuthorizationCodeOAuthFlow is a record of five fields:
authorization_url—String, calledauthorizationUrlon the wiretoken_url—String, calledtokenUrlon the wirerefresh_url—Optional<String>, which may be absent, calledrefreshUrlon the wirescopes—Map<String, String>pkce_required—Optional<Boolean>, which may be absent, calledpkceRequiredon the wire
ClientCredentialsOAuthFlow
a2a.discovery.ClientCredentialsOAuthFlow is a record of three fields:
token_url—String, calledtokenUrlon the wirerefresh_url—Optional<String>, which may be absent, calledrefreshUrlon the wirescopes—Map<String, String>
DeviceCodeOAuthFlow
a2a.discovery.DeviceCodeOAuthFlow is a record of four fields:
device_authorization_url—String, calleddeviceAuthorizationUrlon the wiretoken_url—String, calledtokenUrlon the wirerefresh_url—Optional<String>, which may be absent, calledrefreshUrlon the wirescopes—Map<String, String>
HTTPAuthSecurityScheme
a2a.discovery.HTTPAuthSecurityScheme is a record of three fields:
description—Optional<String>, which may be absentscheme—Stringbearer_format—Optional<String>, which may be absent, calledbearerFormaton the wire
ImplicitOAuthFlow
a2a.discovery.ImplicitOAuthFlow is a record of three fields:
authorization_url—Optional<String>, which may be absent, calledauthorizationUrlon the wirerefresh_url—Optional<String>, which may be absent, calledrefreshUrlon the wirescopes—Optional<Map<String, String>>, which may be absent
MutualTlsSecurityScheme
a2a.discovery.MutualTlsSecurityScheme is a record of one field:
description—Optional<String>, which may be absent
OAuth2SecurityScheme
a2a.discovery.OAuth2SecurityScheme is a record of three fields:
description—Optional<String>, which may be absentflows—a2a.discovery.OAuthFlowsoauth2_metadata_url—Optional<String>, which may be absent, calledoauth2MetadataUrlon the wire
OAuthFlows
a2a.discovery.OAuthFlows is a record of five fields:
authorization_code—Optional<a2a.discovery.AuthorizationCodeOAuthFlow>, which may be absent, calledauthorizationCodeon the wireclient_credentials—Optional<a2a.discovery.ClientCredentialsOAuthFlow>, which may be absent, calledclientCredentialson the wireimplicit—Optional<a2a.discovery.ImplicitOAuthFlow>, which may be absentpassword—Optional<a2a.discovery.PasswordOAuthFlow>, which may be absentdevice_code—Optional<a2a.discovery.DeviceCodeOAuthFlow>, which may be absent, calleddeviceCodeon the wire
OpenIdConnectSecurityScheme
a2a.discovery.OpenIdConnectSecurityScheme is a record of two fields:
description—Optional<String>, which may be absentopen_id_connect_url—String, calledopenIdConnectUrlon the wire
PasswordOAuthFlow
a2a.discovery.PasswordOAuthFlow is a record of three fields:
token_url—Optional<String>, which may be absent, calledtokenUrlon the wirerefresh_url—Optional<String>, which may be absent, calledrefreshUrlon the wirescopes—Optional<Map<String, String>>, which may be absent
SecurityRequirement
a2a.discovery.SecurityRequirement is a record of one field:
schemes—Map<String, a2a.discovery.StringList>
SecurityScheme
a2a.discovery.SecurityScheme is a record of five fields:
api_key_security_scheme—Optional<a2a.discovery.APIKeySecurityScheme>, which may be absent, calledapiKeySecuritySchemeon the wirehttp_auth_security_scheme—Optional<a2a.discovery.HTTPAuthSecurityScheme>, which may be absent, calledhttpAuthSecuritySchemeon the wireoauth2_security_scheme—Optional<a2a.discovery.OAuth2SecurityScheme>, which may be absent, calledoauth2SecuritySchemeon the wireopen_id_connect_security_scheme—Optional<a2a.discovery.OpenIdConnectSecurityScheme>, which may be absent, calledopenIdConnectSecuritySchemeon the wiremtls_security_scheme—Optional<a2a.discovery.MutualTlsSecurityScheme>, which may be absent, calledmtlsSecuritySchemeon the wire
StringList
a2a.discovery.StringList is a record of one field:
list—List<String>
One of the types above is reached by nothing else in this system: a2a.discovery.AgentCard. No entity, view, command, event, error or crossing names it, so it is either vocabulary something outside this specification uses or a leftover — and only a person can tell which.
Commands
GetExtendedAgentCard
a2a.discovery.GetExtendedAgentCard, shown to a person as "Get extended agent card" and called extendedAgentCard on the wire.
It takes:
tenant—Optional<String>, which may be absent
It has five outcomes.
not-supported — Decided outside the input: the public agent card does not declare capabilities.extendedAgentCard. No predicate over the input reaches this branch, and saying when: false instead would have claimed it is unreachable, which is a different and false statement. No entity in this specification changes. It reports a2a.discovery.UnsupportedOperation. It emits nothing. A test reaches it by injecting the declared fault, because no input can.
not-configured — Decided outside the input: the agent declares the capability but has no extended card configured. No predicate over the input reaches this branch, and saying when: false instead would have claimed it is unreachable, which is a different and false statement. No entity in this specification changes. It reports a2a.discovery.ExtendedAgentCardNotConfigured. It emits nothing. A test reaches it by injecting the declared fault, because no input can.
returned — The extended Agent Card. The default branch, taken when no other outcome's condition matched. No entity in this specification changes. It emits nothing. A test reaches it by constructing an input that satisfies no other outcome's condition.
version-not-supported — Decided outside the input: the A2A-Version service parameter names a version the agent does not support. No predicate over the input reaches this branch, and saying when: false instead would have claimed it is unreachable, which is a different and false statement. No entity in this specification changes. It reports a2a.discovery.VersionNotSupported. It emits nothing. A test reaches it by injecting the declared fault, because no input can.
extension-required — Decided outside the input: the agent card marks an extension required and the request does not declare it. No predicate over the input reaches this branch, and saying when: false instead would have claimed it is unreachable, which is a different and false statement. No entity in this specification changes. It reports a2a.discovery.ExtensionSupportRequired. It emits nothing. A test reaches it by injecting the declared fault, because no input can.
Errors
ExtendedAgentCardNotConfigured
ExtendedAgentCardNotConfiguredError (JSON-RPC -32007, gRPC FAILED_PRECONDITION, HTTP 400): the agent declares the capability but has no extended card configured.
It carries nothing beyond its name, so a caller can tell what went wrong and not which value caused it.
Reported by a2a.discovery.GetExtendedAgentCard on its not-configured outcome.
ExtensionSupportRequired
ExtensionSupportRequiredError (JSON-RPC -32008, gRPC FAILED_PRECONDITION, HTTP 400): the agent card marks an extension required and the request does not declare it.
It carries nothing beyond its name, so a caller can tell what went wrong and not which value caused it.
Reported by a2a.discovery.GetExtendedAgentCard on its extension-required outcome.
UnsupportedOperation
UnsupportedOperationError (JSON-RPC -32004, gRPC FAILED_PRECONDITION, HTTP 400): the agent card does not declare capabilities.extendedAgentCard.
It carries nothing beyond its name, so a caller can tell what went wrong and not which value caused it.
Reported by a2a.discovery.GetExtendedAgentCard on its not-supported outcome.
VersionNotSupported
VersionNotSupportedError (JSON-RPC -32009, gRPC FAILED_PRECONDITION, HTTP 400): the A2A-Version the request names is not supported by the agent.
It carries nothing beyond its name, so a caller can tell what went wrong and not which value caused it.
Reported by a2a.discovery.GetExtendedAgentCard on its version-not-supported outcome.
Actors
An actor is who may ask this context for something. Every grant below points at a command this specification declares — a grant is a resolved reference, so "may invoke" something nobody wrote is not a permission this model can express, and an authorisation that authorises nothing cannot ship quietly.
Client
a2a.discovery.Client, shown to a person as "A2A client".
It may invoke GetExtendedAgentCard.
Generated from a2a v1 · model digest 911794dff39b27311ddc6db22aa294d7c70c823fd2310684ad996b6eab4c5cdf · contract digest slice-sha256/2:2af66dcfe0f70ad1a2ee938e58a3af722c41ea672b67051d17c1993b1bdf54a7. Do not edit this file; change the specification and regenerate it with task docs-generate.