Agent Card Spec
Abstract
An agent card is a UTF-8 encoded Markdown file with YAML frontmatter that serves as the public-facing documentation for an agent. It is purely descriptive — it communicates what an agent is and what it can do but does not drive any functional behavior (deployment, visibility, etc.), which remains the responsibility of astropods.yml.
The file is named AGENT.md and lives at the root of the agent’s project directory, alongside astropods.yml. It is submitted to the registry during ast push.
Changelog
Conventions
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC 2119.
1. File Format
An agent card is a UTF-8 encoded Markdown file consisting of two parts:
- Frontmatter — A YAML block delimited by
---lines at the top of the file. Contains structured metadata for discovery and attribution. - Body — Free-form GitHub-Flavored Markdown (GFM) following the frontmatter. Contains human-readable documentation.
Both parts are OPTIONAL. A valid agent card MAY be an empty file, a file with only frontmatter, or a file with only a Markdown body (no --- delimiters).
2. Frontmatter Schema
All frontmatter fields are OPTIONAL unless noted otherwise.
2.1 description
A short summary of the agent. Used for agent cards, sidebar display, and search results. SHOULD be a single sentence or short phrase.
When absent, the agent name is used as a fallback.
This field replaces the deprecated meta.description in astropods.yml. Existing agents SHOULD migrate their description to the agent card frontmatter.
2.2 tags
A list of category labels for discovery and filtering.
Each entry MUST be a lowercase string using only letters, numbers, and hyphens. Tags that do not conform are normalized: whitespace is trimmed, characters are lowercased, spaces are converted to hyphens, and non-alphanumeric/non-hyphen characters are stripped.
Implementations MUST reject the frontmatter if more than 10 tags are provided.
This field replaces the deprecated meta.tags in astropods.yml. Existing agents SHOULD migrate their tags to the agent card frontmatter.
2.3 authors
A list of people or organizations who built the agent.
AgentCardAuthor
2.4 capabilities
A list of high-level capabilities the agent provides. Each entry SHOULD be a concise verb phrase describing an action the agent performs.
Unlike tags (broad categories), capabilities describe specific behaviors and are displayed on the agent’s detail page.
Implementations MUST truncate entries exceeding 100 characters silently.
2.5 integrations
A list of third-party services or platforms the agent connects to. Used to display brand icons and connection information on the agent’s detail page.
2.5.1 Derivation
Integrations are derived from two sources: the integrations section of astropods.yml (via provider fields) and the integrations frontmatter in AGENT.md. The platform MUST combine and deduplicate both sources for display. Use the agent card to declare integrations that cannot be inferred from the spec.
2.5.2 Matching
Matching is case-insensitive. Each integration string is resolved against the known integrations registry by id, name, or aliases. Strings that do not match any known integration are displayed with a generic icon and the original text as a label.
2.5.3 Known Integrations Registry
The platform maintains a registry of known integrations, each with an id, name, and optional aliases. See Known Integrations for the full list.
3. Body
The body is free-form GitHub-Flavored Markdown (GFM). There is no required structure, but authors SHOULD cover:
- Overview — What the agent does and why it exists.
- Usage — How to interact with the agent (APIs, protocols, chat, etc.).
- Limitations — Known constraints, failure modes, or scope boundaries.
- Examples — Sample interactions or outputs.
4. Normalization
The following normalizations are applied during parsing:
5. Registration Flow
During ast push, the CLI:
- Reads
AGENT.mdfrom the project root (if present). - Submits the raw file content as the
readmefield in the registration payload. The CLI does not parse the frontmatter.
The server:
- Receives the raw agent card content.
- Parses the YAML frontmatter to extract structured metadata.
- Resolves integrations by merging spec-derived and card-declared integrations (Section 2.5.1).
- Stores both the raw content and the parsed metadata (as JSON) for efficient reads.
5.1 Legacy Compatibility
Existing agents without an AGENT.md continue to work. For agents using the deprecated meta.description and meta.tags fields in astropods.yml, the server synthesizes an agent card from those fields as a fallback.
6. Client Display
The client renders the agent card on the agent detail page:
- Frontmatter metadata is displayed in structured UI elements (author links, capability badges, integration icons).
- Integrations are rendered as brand icons (known) or generic icons with labels (unknown).
- Body is rendered as styled Markdown.
- Description is displayed in sidebars, cards, and search results. Falls back to the agent name if absent.