Skip to main content

AgentCard

Struct AgentCard 

Source
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: String

Display 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: String

Human-readable description of the agent’s purpose.

§version: String

Semantic 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: AgentCapabilities

Capability 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§

Source§

impl AgentCard

Source

pub const fn validate(&self) -> Result<(), &'static str>

Validates the agent card for completeness.

§Errors

Returns an error if:

  • name is empty
  • supported_interfaces is empty (spec requires at least one interface)

Trait Implementations§

Source§

impl Clone for AgentCard

Source§

fn clone(&self) -> AgentCard

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for AgentCard

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for AgentCard

Source§

fn deserialize<__D>( __deserializer: __D, ) -> Result<AgentCard, <__D as Deserializer<'de>>::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for AgentCard

Source§

fn serialize<__S>( &self, __serializer: __S, ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl TryFrom<AgentCard> for AgentCard

Source§

type Error = ConvertError

The type returned in the event of a conversion error.
Source§

fn try_from( value: AgentCard, ) -> Result<AgentCard, <AgentCard as TryFrom<AgentCard>>::Error>

Performs the conversion.
Source§

impl TryFrom<AgentCard> for AgentCard

Source§

type Error = ConvertError

The type returned in the event of a conversion error.
Source§

fn try_from( value: AgentCard, ) -> Result<AgentCard, <AgentCard as TryFrom<AgentCard>>::Error>

Performs the conversion.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more