An Agent Card is a public JSON document that describes your agent’s identity, capabilities, and communication endpoints. Anima serves it at a well-known URL so any agent or service can find and interact with your agent without prior coordination.
What an Agent Card contains
Agent Cards follow the Agent Card specification and are served at:
https://<domain>/.well-known/agent.json
The document includes everything a caller needs to understand who your agent is and how to reach it:
{
"name": "Acme Purchasing Agent",
"description": "Handles procurement and vendor payments for Acme Corp.",
"url": "https://purchasing.acme.com",
"did": "did:anima:ag_8f3k2m9x1n4p7q6r",
"version": "1.0.0",
"capabilities": [
{
"name": "purchase-order",
"description": "Create and manage purchase orders",
"inputSchema": {
"type": "object",
"properties": {
"vendor": { "type": "string" },
"items": { "type": "array" },
"budget": { "type": "number" }
}
}
},
{
"name": "invoice-processing",
"description": "Process and approve vendor invoices"
}
],
"endpoints": {
"a2a": "https://api.useanima.sh/a2a/ag_8f3k2m9x1n4p7q6r",
"email": "purchasing@acme.com"
},
"authentication": {
"schemes": ["did-auth", "bearer"]
},
"provider": {
"organization": "Acme Corp",
"url": "https://acme.com"
}
}
Key fields
Human-readable name for the agent.
Brief summary of what the agent does.
The agent’s decentralized identifier (e.g. did:anima:ag_...). Used for cryptographic verification.
List of actions the agent can perform. Each capability has a name, optional description, and optional inputSchema.
Communication channels. Supports a2a (agent-to-agent API URL) and email.
Authentication methods the agent accepts. Common values: did-auth, bearer.
Publish an Agent Card
Call agentCards.publish with your agent ID and the domain where the card should be served. Anima handles hosting the card at /.well-known/agent.json on that domain.
Tab Title
Tab Title
Tab Title
import { Anima } from "@anima-labs/sdk";
const anima = new Anima({ apiKey: "ak_..." });
const card = await anima.identity.agentCards.publish({
agentId: "ag_8f3k2m9x1n4p7q6r",
domain: "purchasing.acme.com",
capabilities: [
{
name: "purchase-order",
description: "Create and manage purchase orders",
inputSchema: {
type: "object",
properties: {
vendor: { type: "string" },
items: { type: "array" },
budget: { type: "number" },
},
},
},
],
});
console.log(`Published at: ${card.url}`);
// => https://purchasing.acme.com/.well-known/agent.json
from anima import Anima
anima = Anima(api_key="ak_...")
card = anima.identity.agent_cards.publish(
agent_id="ag_8f3k2m9x1n4p7q6r",
domain="purchasing.acme.com",
capabilities=[
{
"name": "purchase-order",
"description": "Create and manage purchase orders",
"inputSchema": {
"type": "object",
"properties": {
"vendor": {"type": "string"},
"items": {"type": "array"},
"budget": {"type": "number"},
},
},
},
],
)
print(f"Published at: {card.url}")
import "github.com/anima-labs/anima-go"
client := anima.NewClient("ak_...")
card, err := client.Identity.AgentCards.Publish(ctx, &anima.PublishAgentCardParams{
AgentID: "ag_8f3k2m9x1n4p7q6r",
Domain: "purchasing.acme.com",
Capabilities: []anima.Capability{
{
Name: "purchase-order",
Description: "Create and manage purchase orders",
},
},
})
By default, Anima automatically publishes an Agent Card whenever you create a new agent. You can disable auto-publish from your organization settings in the dashboard.
Discover another agent’s card
Resolve a card from any domain to inspect its capabilities and endpoints before initiating communication:
const card = await anima.identity.agentCards.resolve("purchasing.acme.com");
console.log(card.name); // "Acme Purchasing Agent"
console.log(card.capabilities); // [{ name: "purchase-order", ... }]
console.log(card.endpoints.a2a); // A2A endpoint URL
card = anima.identity.agent_cards.resolve("purchasing.acme.com")
print(card.name)
print(card.capabilities)
print(card.endpoints["a2a"])
Resolved cards are cached to reduce latency on repeated lookups. If you update a card and need the change visible immediately, call agentCards.publish again — the cache will be invalidated on the next resolution.
API reference
| Endpoint | Method | Description |
|---|
/api/identity/agent-cards | POST | Publish an Agent Card |
/api/identity/agent-cards/:agentId | GET | Get an agent’s card |
/api/identity/agent-cards/:agentId | PUT | Update an Agent Card |
/api/identity/agent-cards/:agentId | DELETE | Unpublish an Agent Card |
/api/identity/agent-cards/resolve | GET | Resolve a card by domain |