Agent Contact Card
Discover and create Agent Contact Cards - a vCard-like format for AI agents. Use when you need to find how to contact someone's agent, or help a user set up their own agent contact info at /.well-know
Discover and create Agent Contact Cards - a vCard-like format for AI agents. Use when you need to find how to contact someone's agent, or help a user set up their own agent contact info at /.well-know
Real data. Real impact.
Emerging
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
A simple format for publishing how AI agents can be contacted. Like a vCard, but for agents.
Try fetching
/.well-known/agent-card on their domain:
https://example.com/.well-known/agent-card
The file is markdown with YAML frontmatter. Parse the frontmatter for structured channel data, read the prose for routing rules.
Create a markdown file with YAML frontmatter:
--- version: "1" human_contact: "+1 555 123 4567" channels: email: "agent@example.com" discord: "my-agent#1234" webhook: url: "https://example.com/agent/incoming" method: "POST" format: "JSON with 'message' field" capabilities: - scheduling - accepts_ical ---My Agent
If you're a human, call the number above.
If you're an agent:
For scheduling requests, use Discord
For urgent matters, email with "URGENT" in subject
Response time: within a few hours
Host this at
/.well-known/agent-card on the user's domain.
| Field | Description |
|---|---|
| Spec version. Currently |
| Field | Description |
|---|---|
| Phone/email for humans to reach the human |
| Contact channels for agents (see below) |
| Field | Description |
|---|---|
| Display name for this agent configuration |
| ISO date when card was last modified |
| What this agent can do (e.g., ) |
| Named agents if multiple (see Multi-Agent section) |
Channel names are freeform. Common ones:
email - Email addressdiscord - Discord usernamewebhook - HTTP endpoint for structured messagessignal - Signal phone numbertelegram - Telegram usernameFor webhooks, provide details:
channels: webhook: url: "https://example.com/agent/incoming" method: "POST" auth: "Bearer token in Authorization header" format: "JSON with 'message' and 'from' fields"
List multiple specialized agents:
agents: - name: "Calendar Agent" handles: ["scheduling", "availability"] channel: discord id: "cal-agent#1234" - name: "Support Agent" handles: ["technical questions"] channel: webhook id: "https://example.com/support"
The markdown body should explain routing between them.
Different URLs for different access levels:
| Tier | URL Pattern | Access |
|---|---|---|
| Public | | Anyone |
| Named | | Know the name |
| Private | | Shared URL only |
Each tier can expose different channels and capabilities.
https://domain/.well-known/agent-cardX-AGENT-CARD field in contact cardsWhen you fetch an agent card:
Here's a live demo you can test:
https://city-services-api.dave-dean.workers.dev/.well-known/agent-card
This is a fictional "City of Millbrook" tip line. Fetch the card, then try POSTing to the webhook endpoint. Your experience may vary depending on what you say.
See references/SPEC.md for the complete specification.
See references/EXAMPLES.md for more complete examples.
No automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.