Agent Manifest — Demo Reference
The Agent_Manifest is the JSON data structure that describes a single AI agent in AgentHub. This page documents the demo field subset (17 fields) used by the showcase. The Zod schema in src/entities/agent/model/manifest.schema.ts is the single source of truth; the Listing and ListingStatus TypeScript types are inferred from it.
Demo field subset (17 fields)
Searchable fields (case-insensitive, Req 2.2): name, tagline, and tags.
| # | Field | Type | Semantics |
|---|---|---|---|
| 1 | id | string (non-empty) | Unique identifier; used in the /agents/[id] route. |
| 2 | name | string (non-empty) | Display name. Searchable. |
| 3 | tagline | string (non-empty) | Short one-line summary. Searchable. |
| 4 | description | string (non-empty) | Longer description shown on the detail page. |
| 5 | author | string (non-empty) | Publisher / author, shown on the detail page. |
| 6 | platform | enum | The platform the agent runs on. |
| 7 | install_url | string (URL) | Target of the Open/Install action when the agent is live. |
| 8 | icon_url | string (URL) | null | Icon sourced from the originating platform. Null when unavailable — no fallback avatar is shown. |
| 9 | categories | string[] (≥1) | Category facet source; ≥5 distinct values across the seed. |
| 10 | tags | string[] | Free-form tags. Searchable. |
| 11 | capabilities | string[] | Capability list shown on the detail page. |
| 12 | pricing_model | enum | Commercial model. |
| 13 | status | enum | Moderation/availability state. |
| 14 | click_count | int ≥ 0 | Click counter; sort-by-clicks is deferred. |
| 15 | created_at | ISO datetime string | Creation timestamp (manifest fidelity). |
| 16 | updated_at | ISO datetime string | Last-updated timestamp shown on the detail page. |
| 17 | source_id | string (non-empty) | Importer that produced this record (e.g. seed, mcp-registry, poe). Used for source attribution and bulk suppression. |
Enumeration values
Platform
webcliapidesktopmobilemcpbrowser-extensionThe seed exercises ≥4 distinct platform values (Req 5.2).
Pricing model
freefreemiumpaidsubscriptionListing status
livesuspendedbrokenListing status and Lost_Agents
The status field is the headline of the demo — the moderation/availability state of a listing, surfaced by the status facet and status badges.
- Live_Agent :
status === 'live' - Lost_Agent :
status === 'suspended' || status === 'broken'
| Status | Card / detail badge | Card treatment | Open / Install action | Broken indicator |
|---|---|---|---|---|
live | "Live" | normal | enabled — links to install_url | none |
suspended | "Suspended" | muted / dimmed | disabled | none |
broken | "Broken" | muted / dimmed | disabled | "Link no longer reachable" |
Validation behaviour
The data-access layer (src/entities/agent/lib/data.ts) runs agentManifestSchema.safeParse on every seed record at module load:
- Valid records are returned (in original order) and memoized once.
- Each invalid record is excluded from display and reported with a single
console.errorcarrying the record'sid(or array index) and the Zod issue list.
A malformed seed file degrades gracefully — only offending records drop out — so the demo never crashes during a presentation because of one bad record (Requirements 5.5, 5.6).
Relationship to the full manifest
This is a demo subset. The full AgentHub Agent Manifest v0.1 (SRS v0.1) defines additional fields, relationships, and constraints — version history, richer pricing and platform metadata — that are out of scope for the showcase. The ingestion pipeline (MCP Registry, HuggingFace Spaces, GPT Store, Poe, Replit) and deduplication are fully implemented and tracked in docs/backlog.md.