pub struct AgentCard {Show 15 fields
pub name: String,
pub url: Option<String>,
pub description: String,
pub version: String,
pub supported_interfaces: Vec<AgentInterface>,
pub default_input_modes: Vec<String>,
pub default_output_modes: Vec<String>,
pub skills: Vec<AgentSkill>,
pub capabilities: AgentCapabilities,
pub provider: Option<AgentProvider>,
pub icon_url: Option<String>,
pub documentation_url: Option<String>,
pub security_schemes: Option<HashMap<String, SecurityScheme>>,
pub security_requirements: Option<Vec<SecurityRequirement>>,
pub signatures: Option<Vec<AgentCardSignature>>,
}Expand description
The root discovery document for an A2A agent.
Served at /.well-known/agent-card.json. Clients fetch this document to
discover the agent’s interfaces, capabilities, skills, and security
requirements before establishing a session.
In v1.0, protocol_version and url moved to AgentInterface, and
supported_interfaces replaces the old url/preferred_transport/
additional_interfaces fields.
Fields§
§name: StringDisplay name of the agent.
url: Option<String>Primary URL of the agent — accepted on input, never emitted.
This is the v0.3 top-level URL. The v1.0 lf.a2a.v1 AgentCard has no
url field at all; supported_interfaces replaced it. Emitting it made
this SDK’s card fail the specification’s own JSON schema —
'url' does not match any of the regexes: … — which is what
CARD-EXT-001 reports (see docs/official-tck-findings.md §13).
It is still parsed, because a card published by a v0.3 peer carries
it and dropping the field would fail those cards outright. The reference
implementation does the same, popping url and folding it into
supportedInterfaces.
Read it if you have it; to publish an agent’s address, use
supported_interfaces.
description: StringHuman-readable description of the agent’s purpose.
version: StringSemantic version of this agent implementation.
supported_interfaces: Vec<AgentInterface>Transport interfaces offered by this agent.
Spec requirement: Must contain at least one element — enforced by
validate, not at parse time: ProtoJSON printers
omit empty repeated fields, so parsing treats absence as empty and
validation reports the real problem instead of a JSON type error.
default_input_modes: Vec<String>Default MIME types accepted as input.
ProtoJSON printers omit empty repeated fields; absence means empty.
default_output_modes: Vec<String>Default MIME types produced as output.
ProtoJSON printers omit empty repeated fields; absence means empty.
skills: Vec<AgentSkill>Skills offered by this agent.
Spec requirement: Must contain at least one element. Parsing
treats absence as empty (ProtoJSON omits empty repeated fields).
capabilities: AgentCapabilitiesCapability flags.
provider: Option<AgentProvider>The organization operating this agent.
icon_url: Option<String>URL of the agent’s icon image.
documentation_url: Option<String>URL of the agent’s documentation.
security_schemes: Option<HashMap<String, SecurityScheme>>Named security scheme definitions (OpenAPI-style).
security_requirements: Option<Vec<SecurityRequirement>>Global security requirements for the agent.
signatures: Option<Vec<AgentCardSignature>>Cryptographic signatures over this card.
Implementations§
Trait Implementations§
Source§impl<'de> Deserialize<'de> for AgentCard
impl<'de> Deserialize<'de> for AgentCard
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<AgentCard, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<AgentCard, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Serialize for AgentCard
impl Serialize for AgentCard
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Auto Trait Implementations§
impl Freeze for AgentCard
impl RefUnwindSafe for AgentCard
impl Send for AgentCard
impl Sync for AgentCard
impl Unpin for AgentCard
impl UnsafeUnpin for AgentCard
impl UnwindSafe for AgentCard
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request