pub struct AgentCard {Show 17 fields
pub name: String,
pub description: String,
pub url: String,
pub skills: Vec<AgentSkill>,
pub protocol_version: String,
pub security_schemes: Option<Value>,
pub interfaces: Option<Value>,
pub supported_interfaces: Vec<AgentInterface>,
pub provider: Option<String>,
pub documentation_url: Option<String>,
pub authentication: Option<Vec<String>>,
pub default_input_modes: Vec<String>,
pub default_output_modes: Vec<String>,
pub signature: Option<String>,
pub data_class: Option<String>,
pub jurisdiction: Option<String>,
pub capabilities: Vec<String>,
}Expand description
Agent metadata card, served at /.well-known/agent-card.json.
Describes an agent’s identity, endpoint, and capabilities so that other agents can discover and interact with it. Aligned with the A2A v0.3 Agent Card specification.
Fields§
§name: StringHuman-readable agent name.
description: StringDescription of what the agent does.
url: StringBase URL where the agent accepts A2A requests.
skills: Vec<AgentSkill>Structured list of skills the agent can perform.
protocol_version: StringA2A protocol version supported by this agent.
security_schemes: Option<Value>Security schemes the agent supports (e.g. {"bearerAuth": {...}}).
interfaces: Option<Value>Interfaces the agent exposes (e.g. {"sse": true}).
Deprecated by v1.0.1’s supported_interfaces (typed); kept for
v0.3-era readers. New cards should populate supported_interfaces.
supported_interfaces: Vec<AgentInterface>v1.0.1 typed interface list: each entry carries its own
protocolVersion, transport binding, URL and optional tenant.
A v1.0.1-compliant card MUST have at least one interface here; the
legacy top-level protocol_version/url remain for v0.3 readers.
provider: Option<String>Provider/organization name (optional).
documentation_url: Option<String>Documentation URL (optional).
authentication: Option<Vec<String>>Authentication schemes supported (optional).
default_input_modes: Vec<String>Default input modes (e.g. [“text”, “image”]).
default_output_modes: Vec<String>Default output modes (e.g. [“text”]).
signature: Option<String>Digital signature over the canonical card content (P1-3 / P2-5).
When present, clients SHOULD verify it against the agent’s public key
before trusting the card (see lc_a2a::security).
data_class: Option<String>Data classification this agent deals with (e.g. “public”, “internal”, “confidential”). Used for data-boundary / federation policy (P2-7/P2-8).
jurisdiction: Option<String>Jurisdiction(s) this agent operates under (e.g. “US”, “EU”). Used for compliance-aware routing in federations (P2-8).
capabilities: Vec<String>Optional protocol capabilities the agent can negotiate (P2-8).
Backward-compatible extension points, e.g. "tasks/runWorkflow",
"streaming-sse", "input-required-resume". Unknown entries are
ignored by clients that do not understand them.
Implementations§
Source§impl AgentCard
impl AgentCard
Sourcepub fn new(
name: impl Into<String>,
description: impl Into<String>,
url: impl Into<String>,
) -> Self
pub fn new( name: impl Into<String>, description: impl Into<String>, url: impl Into<String>, ) -> Self
Create a new agent card.
Sourcepub fn with_skill(self, skill: AgentSkill) -> Self
pub fn with_skill(self, skill: AgentSkill) -> Self
Add a skill.
Sourcepub fn with_protocol_version(self, version: impl Into<String>) -> Self
pub fn with_protocol_version(self, version: impl Into<String>) -> Self
Set the A2A protocol version this agent supports.
Sourcepub fn with_security_schemes(self, schemes: Value) -> Self
pub fn with_security_schemes(self, schemes: Value) -> Self
Set the security schemes advertised on the card.
Sourcepub fn with_interfaces(self, interfaces: Value) -> Self
pub fn with_interfaces(self, interfaces: Value) -> Self
Set the interfaces advertised on the card.
Sourcepub fn with_supported_interface(self, interface: AgentInterface) -> Self
pub fn with_supported_interface(self, interface: AgentInterface) -> Self
Advertises a typed v1.0.1 interface.
Sourcepub fn negotiate(
&self,
transport: A2ATransport,
client_versions: &[&str],
) -> Result<AgentInterface, String>
pub fn negotiate( &self, transport: A2ATransport, client_versions: &[&str], ) -> Result<AgentInterface, String>
v1.0.1 negotiation: picks the protocol version of the first supported
interface whose transport matches transport and whose
protocol_version is in client_versions (order = card priority).
Errors when nothing matches.
Sourcepub fn is_v101(&self) -> bool
pub fn is_v101(&self) -> bool
Whether the card is v1.0.1-shaped (has at least one typed interface).
Sourcepub fn with_provider(self, provider: impl Into<String>) -> Self
pub fn with_provider(self, provider: impl Into<String>) -> Self
Set the provider/organization name.
Sourcepub fn with_documentation_url(self, url: impl Into<String>) -> Self
pub fn with_documentation_url(self, url: impl Into<String>) -> Self
Set the documentation URL.
Sourcepub fn with_authentication(self, schemes: Vec<String>) -> Self
pub fn with_authentication(self, schemes: Vec<String>) -> Self
Set the authentication schemes.
Sourcepub fn with_signature(self, signature: impl Into<String>) -> Self
pub fn with_signature(self, signature: impl Into<String>) -> Self
Set the digital signature over the card content (P1-3).
Sourcepub fn with_data_class(self, class: impl Into<String>) -> Self
pub fn with_data_class(self, class: impl Into<String>) -> Self
Set the data classification of this agent (P2-8).
Sourcepub fn with_jurisdiction(self, jurisdiction: impl Into<String>) -> Self
pub fn with_jurisdiction(self, jurisdiction: impl Into<String>) -> Self
Set the jurisdiction(s) this agent operates under (P2-8).
Sourcepub fn with_capability(self, capability: impl Into<String>) -> Self
pub fn with_capability(self, capability: impl Into<String>) -> Self
Advertise an optional protocol capability (P2-8).