{"id":46277880,"url":"https://github.com/commandlayer/agent-cards","last_synced_at":"2026-03-17T23:01:18.329Z","repository":{"id":328862251,"uuid":"1099268833","full_name":"commandlayer/agent-cards","owner":"commandlayer","description":"Agent Cards define the verifiable identity and capabilities of autonomous agents — binding ENS names to verbs, schemas, x402 entrypoints, and discovery metadata. Strictly validated, ERC-8004 aligned, and built for deterministic interoperability across runtimes and agent networks.","archived":false,"fork":false,"pushed_at":"2026-02-16T00:14:59.000Z","size":343,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-16T08:06:05.194Z","etag":null,"topics":["agent-discovery","agent-identity","agents","ens","erc8004","interoperability","metadata","schemas","x402"],"latest_commit_sha":null,"homepage":"https://commandlayer.org","language":"JavaScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/commandlayer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":"GOVERNANCE.md","roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-18T19:35:06.000Z","updated_at":"2026-02-16T00:15:04.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/commandlayer/agent-cards","commit_stats":null,"previous_names":["commandlayer/agent-cards"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/commandlayer/agent-cards","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commandlayer%2Fagent-cards","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commandlayer%2Fagent-cards/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commandlayer%2Fagent-cards/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commandlayer%2Fagent-cards/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/commandlayer","download_url":"https://codeload.github.com/commandlayer/agent-cards/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commandlayer%2Fagent-cards/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30635004,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-17T22:38:22.569Z","status":"ssl_error","status_checked_at":"2026-03-17T22:38:11.804Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-discovery","agent-identity","agents","ens","erc8004","interoperability","metadata","schemas","x402"],"created_at":"2026-03-04T05:00:35.195Z","updated_at":"2026-03-17T23:01:18.317Z","avatar_url":"https://github.com/commandlayer.png","language":"JavaScript","funding_links":[],"categories":["Tools"],"sub_categories":["Agent Discovery \u0026 Registration"],"readme":"# Agent Cards — CommandLayer\n \n**Canonical identity metadata for autonomous agents**  \n**Standards-aligned · Deterministic · Verifiable**\n\n[![Status](https://img.shields.io/badge/Status-Stable%20v1.0.0-brightgreen)](https://github.com/commandlayer/agent-cards)\n[![NPM Version](https://img.shields.io/npm/v/@commandlayer/agent-cards)](https://www.npmjs.com/package/@commandlayer/agent-cards)\n[![CI](https://img.shields.io/github/actions/workflow/status/commandlayer/agent-cards/validate.yml?branch=main\u0026label=CI\u0026logo=github\u0026style=flat)](https://github.com/commandlayer/agent-cards/actions/workflows/validate.yml)\n[![License: Apache-2.0](https://img.shields.io/badge/License-Apache--2.0-blue.svg)](https://github.com/commandlayer/agent-cards/blob/main/LICENSE)\n\n---\n\nAgent Cards turn **ENS names** into **verifiable**, **executable agent identities** — the discovery + invocation contract for autonomous agents.\n\n\n## Purpose\n\nMachine discoverability + verifiable execution = the **universal invoke contract for agents.**\n\nAgent Cards bind canonical verbs to verifiable x402 execution — enabling trustless:\n\n- **Identity**\n- **Discovery**\n- **Invocation**\n- **Verification**\n\nOne universal contract for agent interop.\n\n---\n\n## Architecture Primer\n\n```\n[ Canonical Verbs ]\nProtocol-Commons + Protocol-Commercial\n         ↓\n[ Identity + Metadata ]\nAgent Cards (ENS-bound)\n         ↓ ERC-8004 TXT discovery\n[ Verifiable Invocation ]\nx402 runtime (monetizable)\n         ↓\n[ Trusted Output ]\nStructured Receipt\n\n```\nWithout this: agents become **isolated APIs.**\nWith this: the **interoperable machine economy** emerges.\n\n\n### Repository Layers \u0026 Licensing\n\nThis stack  separates **language**, **identity**, and **execution** — keeping the protocol open and monetizeable only at runtime.\n\n| Layer                   | Repository            | License / Model                                     |\n|------------------------|----------------------|-----------------------------------------------------|\n| Protocol — Commons      | `protocol-commons`   | MIT — free canonical semantic verbs \u0026 schemas        |\n| Protocol — Commercial   | `protocol-commercial`| Apache-2.0 — free economic verb schemas             |\n| Identity — Agent Cards  | `agent-cards`        | Apache-2.0 — identity metadata as a public good     |\n| Execution — Runtime     | `protocol-runtime`   | Monetized at invocation endpoints (**toll road**)    |\n\n\n - **Schemas are always free.**\n- **Identity is neutral and protected.**\n- **Value is created only on execution.**\n\n\n\n----\n\n## Why Agent Cards Matter\n\nAutonomous agents only work together if they share:\n\n- a **common language** (canonical verbs)\n- a **global identity system** (ENS)\n- a **verifiable trust layer** (x402)\n\n**Agent Cards bind all three** — turning the internet into an **interoperable machine economy.**\n\n- Deterministic identity  \n- Typed requests + receipts  \n- Verifiable execution  \n- Neutral + permissionless  \n\n**Without this, every agent becomes an API silo — isolated, brittle, and incompatible.**\n\nEvery Agent Card is a portable contract: anyone can resolve the verb, validate the payload,  \nand verify execution provenance — without trusting the operator.\n\n\n\n\n## Architecture Role\n\nAgent Cards bridge **semantic definitions** and **runtime execution:**\n\n```\n[ Semantic Layer ]   →   [ Identity Layer ]   →   [ Execution Layer ]   →   [ Trusted Output ]\n(Commons / Commercial)     (ENS + Agent Card)       (x402 Runtime)           (Structured Receipt)\n\n```\nThis layering enables **neutral**, **interoperable**, **trust-minimized** agent ecosystems.\n\n### End-to-end invocation flow\n\n```\n[App / Agent]\n      ↓ Discover (ERC-8004)\n[ENS TXT Record → Identity \u0026 Metadata]\n      ↓ Validate (Protocol-Commons)\n[Request Schema / Receipt Schema]\n      ↓ Invoke (x402)\n[Verb Execution]\n      ↓ Verify\n[Receipt: typed + trusted]\n      ↓ Route\n[Next Agent Triggered by Verb]\n      ↓\nMulti-Agent Workflow (A2A = Autonomous-to-Autonomous — no humans required in the loop.)\n\n```\n---\n\n## Identity Contract\n\nEach Agent Card is a JSON document conforming to the `agent.card.base.schema.json` contract. Core fields:\n\n| Group          | Field                    | Requirement  | Description                                                |\n| -------------- | ------------------------ | ------------ | ---------------------------------------------------------- |\n| **Identity**   | `id`                     | **Required** | Canonical agent identifier (usually the ENS name).         |\n|                | `slug`                   | **Required** | URL-safe identifier for local referencing.                 |\n|                | `display_name`           | **Required** | Human-readable title for the agent.                        |\n|                | `description`            | **Required** | Short summary of agent function.                           |\n| **Ownership**  | `owner`                  | **Required** | ENS name or identifier controlling the card.               |\n|                | `ens`                    | **Required** | ENS name bound to this agent.                              |\n| **Versioning** | `version`                | **Required** | Semantic version of the card definition.                   |\n| **Lifecycle**  | `status`                 | **Required** | `protocol_reference`, `active`, `deprecated`, etc.         |\n|                | `class`                  | **Required** | `commons` or `commercial`.                                 |\n| **Semantics**  | `implements`             | **Required** | Array of verbs implemented (primary verb MUST be index 0). |\n| **Execution**  | `entry`                  | **Required** | Canonical x402 URI. Format: `x402://\u003cens\u003e/\u003cverb\u003e/v\u003cmajor\u003e.\u003cminor\u003e.\u003cpatch\u003e`       |\n|                | `networks`               | **Required** | Supported chain identifiers (e.g. `[\"eip155:1\"]`).         |\n| **Schemas**    | `schemas.request`        | **Required** | Canonical request schema URI (IPFS).                       |\n|                | `schemas.receipt`        | **Required** | Canonical receipt schema URI (IPFS).                       |\n| **License**    | `license`                | **Required** | License for this card (Apache-2.0).                        |\n| **Timestamps** | `created_at`             | **Required** | ISO 8601 creation time.                                    |\n|                | `updated_at`             | **Required** | ISO 8601 last-modified time.                               |\n| **Optional**   | `schemas_mirror.request` | Optional     | HTTPS mirror of request schema (MUST match IPFS).          |\n|                | `schemas_mirror.receipt` | Optional     | HTTPS mirror of receipt schema (MUST match IPFS).          |\n|                | `capabilities`           | Optional     | Non-normative runtime hints.                               |\n|                | `meta`                   | Optional     | Tags, URLs, publisher info, fingerprints, etc.             |\n\n\n\n## Repository Structure\n\n```text\nagent-cards/\n│\n├─ agents/\n│  └─ v1.0.0/\n│     ├─ commons/\n│     │  ├─ summarizeagent.eth.json\n│     │  ├─ analyzeagent.eth.json\n│     │  └─ ... (other Commons Agent Cards)\n│     └─ commercial/\n│        ├─ checkoutagent.eth.json\n│        └─ ... (other Commercial Agent Cards)\n│\n├─ checksums/\n│  ├─ commons/\n│  │  ├─ summarizeagent.eth.sha256\n│  │  ├─ analyzeagent.eth.sha256\n│  │  └─ ...\n│  └─ commercial/\n│     ├─ checkoutagent.eth.sha256\n│     └─ ...\n│\n├─ meta/\n│  ├─ manifest.json        ← Version, CIDs, mirrors, registry metadata\n│  └─ ...\n│\n├─ .well-known/\n│  └─ agent-cards-v1.0.0.json  ← Discovery helper / registry descriptor\n│\n├─ scripts/\n│  ├─ validate.ts          ← CI validation + typecheck helpers\n│  └─ ...\n│\n├─ LICENSE                 ← Apache-2.0\n├─ package.json\n└─ README.md\n\n```\n\nCommercial cards follow the **same contract** and validation rules.\n\n---\n\n## Standards Alignment\n\nAgent Cards comply with:\n\n- **Protocol-Commons v1.0.0** (canonical semantics)\n- **ERC-8004** (ENS TXT schema discovery)\n- **x402** transport envelopes (agent invocation)\n- **IPFS** content addressing (CID-first)\n- **Strict JSON Schema** governance\n\nNo proprietary transports.  \nNo token requirements.\n\n---\n\n## Validation\n\n```bash\nnpm install\nnpm run validate\n```\n\n\nValidation performs:\n\n- $ref resolution integrity\n\n- Schema contract enforcement\n\n- Hash-based immutability checks\n\n- Strict type guarantees\n\nAny deviation **fails CI.**\n\n---\n\n## Usage \n\nAgent Cards enable interoperable:\n\n- **agent registries**\n\n- **routing engines**\n\n- **DAG workflow automation**\n\n- **marketplaces and hubs**\n\n- **composable multi-agent systems**\n\nThey are **runtime-agnostic** and usable in any A2A environment.\n\n\n### Quick start — resolve \u0026 validate an Agent Card from ENS\n\nGiven an ENS name (e.g. `summarizeagent.eth`), you can resolve its Agent Card via\nthe `cl.agentcard` TXT record, fetch the JSON, and validate it with Ajv before\nusing it in your runtime.\n\n```ts\nimport { ethers } from \"ethers\";\nimport Ajv from \"ajv\";\n\n// Adjust this import to wherever you expose the base Agent Card schema\n// e.g. from your package, a local file, or a generated schema bundle.\nimport agentCardBaseSchema from \"./schemas/agent.card.base.schema.json\";\n\nconst RPC_URL = process.env.ETH_RPC_URL!;\nconst provider = new ethers.JsonRpcProvider(RPC_URL);\n\nconst ajv = new Ajv({ strict: true, allErrors: true });\nconst validateAgentCard = ajv.compile(agentCardBaseSchema);\n\nexport async function loadAgentCard(ens: string) {\n  // 0) ENS must resolve before trusting TXT records\n  const address = await provider.resolveName(ens);\n  if (!address) {\n    throw new Error(`ENS name does not resolve: ${ens}`);\n  }\n\n  // 1) ENS → resolver lookup\n  const resolver = await provider.getResolver(ens);\n  if (!resolver) {\n    throw new Error(`Resolver not configured for ${ens}`);\n  }\n\n  // 2) TXT → canonical invocation metadata for autonomous agents\n  const cardUrl = await resolver.getText(\"cl.agentcard\");\n  if (!cardUrl) {\n    throw new Error(`Missing cl.agentcard TXT record for ${ens}`);\n  }\n\n  // 3) Fetch \u0026 parse Agent Card JSON\n  const res = await fetch(cardUrl);\n  if (!res.ok) {\n    throw new Error(`Agent Card fetch failed (${res.status})`);\n  }\n  const card = await res.json();\n\n  // 4) Schema validation (Ajv strict)\n  const valid = validateAgentCard(card);\n  if (!valid) {\n    throw new Error(\n      `Invalid Agent Card for ${ens}: ${ajv.errorsText(validateAgentCard.errors)}`\n    );\n  }\n\n  // Hardening recommended in real deployments:\n  // - Verify CID + SHA-256 checksum against known values\n  // - Enforce version pinning (e.g. card.version === \"1.0.0\")\n\n\n  // 5) Runtime usage\n  console.log(\"Agent:\", card.id);          // e.g. \"summarizeagent.eth\"\n  console.log(\"x402 entry URI:\", card.entry);\n  console.log(\"Schemas:\", card.schemas);   // { request, receipt }\n\n  return card;\n}\n\n// Example usage\nloadAgentCard(\"summarizeagent.eth\").catch(console.error);\n```\n\n### **Example usage (TypeScript):**\n\n\n```\nimport card from \"./agents/v1.0.0/commons/summarizeagent.eth.json\";\n```\n```\nconsole.log(card.id);          // \"summarizeagent.eth\"\nconsole.log(card.entry);       // \"x402://summarizeagent.eth/summarize/v1.0.0\"\nconsole.log(card.schemas.request);\n// ipfs://bafybei.../commons/summarize/requests/summarize.request.schema.json\n\n```\n### **Example Agent Card (Summarize):**\n```\n{\n  \"$schema\": \"https://commandlayer.org/agent-cards/schemas/v1.0.0/_shared/agent.card.base.schema.json\",\n  \"$id\": \"https://commandlayer.org/agent-cards/agents/v1.0.0/commons/summarizeagent.eth.json\",\n\n  \"id\": \"summarizeagent.eth\",\n  \"slug\": \"summarizeagent\",\n  \"display_name\": \"Summarize Agent (Protocol Reference)\",\n  \"description\": \"Official protocol-level reference agent for the summarize verb.\",\n  \"owner\": \"commandlayer.eth\",\n  \"ens\": \"summarizeagent.eth\",\n  \"version\": \"1.0.0\",\n  \"status\": \"protocol_reference\",\n  \"class\": \"commons\",\n\n  \"implements\": [\"summarize\"],\n\n  \"schemas\": {\n    \"request\": \"ipfs://bafybeigvf6nkzws7dblos74dqqjkguwkrwn4a2c27ieygoxmgofyzdkz6m/commons/summarize/requests/summarize.request.schema.json\",\n    \"receipt\": \"ipfs://bafybeigvf6nkzws7dblos74dqqjkguwkrwn4a2c27ieygoxmgofyzdkz6m/commons/summarize/receipts/summarize.receipt.schema.json\"\n  },\n  \"schemas_mirror\": {\n    \"request\": \"https://commandlayer.org/schemas/v1.0.0/commons/summarize/requests/summarize.request.schema.json\",\n    \"receipt\": \"https://commandlayer.org/schemas/v1.0.0/commons/summarize/receipts/summarize.receipt.schema.json\"\n  },\n\n  \"entry\": \"x402://summarizeagent.eth/summarize/v1.0.0\",\n\n  \"capabilities\": {\n    \"operations\": [\n      \"extract_key_points\",\n      \"compress_long_form\",\n      \"produce_bullet_summaries\",\n      \"produce_paragraph_summaries\"\n    ],\n    \"input_types\": [\n      \"text/plain\",\n      \"text/markdown\",\n      \"application/json\"\n    ],\n    \"output_types\": [\n      \"text/plain\",\n      \"text/markdown\"\n    ]\n  },\n\n  \"meta\": {\n    \"publisher\": \"commandlayer.eth\",\n    \"pgp_fingerprint\": \"5016 D496 9F38 22B2 C5A2 FA40 99A2 6950 197D AB0A\",\n    \"tags\": [\"summarize\", \"compression\", \"protocol-reference\"]\n  },\n\n  \"networks\": [\"eip155:1\"],\n  \"license\": \"Apache-2.0\",\n  \"created_at\": \"2025-11-22T00:00:00Z\",\n  \"updated_at\": \"2025-11-22T00:00:00Z\"\n}\n```\n---\n## Governance\n\nAgent Cards follow a neutral, standards-oriented stewardship model:\n\n- **Public good** — Agent Cards are open. Anyone can resolve, validate, and build with them forever.\n- **Competitive runtime market** — Value happens at execution. No single operator controls who can run agents or get paid.\n- **Multi-sig ENS custody** — All canonical ENS names are held in secure, shared governance for long-term protection.\n- **Stable versions** — Published cards never mutate. Breaking changes = new major version.\n- **Open review** — Community proposals, validation, and security checks before acceptance.\n- **Standards aligned** — Built to last with ERC-8004 + x402 interoperability.\n- **No lock-ins. No gatekeepers. No rugs.** Agents built today will still work a decade from now.\n\n---\n\n## Versioning \u0026 Immutability\n\nVersioning follows **protocol alignment:**\n\n- v1.0.0 aligns to Commons v1.0.0\n- Additive updates → patch/minor releases\n- Breaking changes → new major version directory (e.g. v2.x)\n\nPublished cards **cannot be modified**; integrity is cryptographically enforced.\n\n---\n\n## Release Integrity\n\n| Component | Status |\n|----------|--------|\n| Agent Cards (v1.0.0) CID | `bafybeiccpdmehf7532b6yiirjjqcvbu2zq53ftbejz65to356ltnuyc2we` |\n| Checksums | Included in `checksums/` |\n| Provenance | Verified via CI |\n\nReproducibility is mandatory.\n\n---\n### **On-Chain Discovery — ENS TXT Binding**\n\n```txt\ncl.verb=format\ncl.version=1.0.0\n\ncl.entry=x402://formatagent.eth/format/v1.0.0\n\ncl.schema.request=https://commandlayer.org/schemas/v1.0.0/commons/format/requests/format.request.schema.json\ncl.schema.receipt=https://commandlayer.org/schemas/v1.0.0/commons/format/receipts/format.receipt.schema.json\ncl.cid.schemas=bafybeigvf6nkzws7dblos74dqqjkguwkrwn4a2c27ieygoxmgofyzdkz6m\n\ncl.agentcard=https://commandlayer.org/agent-cards/agents/v1.0.0/commons/formatagent.eth.json\ncl.cid.agentcard=bafybeiccpdmehf7532b6yiirjjqcvbu2zq53ftbejz65to356ltnuyc2we\n\ncl.checksum.schema.request=sha256:b451b0c05cb77f7ad66906f351b560400447de136c1ad2ce27c63fc3bcaf0d9a\ncl.checksum.schema.receipt=sha256:93b5174144f372c03f7975898d3c989fd2be997db93c40a7f83b6a0dfe99f7d4\ncl.checksum.agentcard=sha256:739e0a399de539f0d9ba584e675d82572ccd0df7d5e60e54d834f20190879bac\n\ncl.owner=commandlayer.eth\n```\n----\n\n## Status\n\n**Stable — v1.0.0 published**\n\n- 10 Commons Agents\n\n- 5 Commercial Agents\n\n----\n\n\n## License\n\n**Apache License 2.0**\n\nChosen to protect:\n\n- open adoption and ecosystem neutrality\n\n- identity metadata patent rights\n\n- long-term accessibility\n\nAgent identity is a **public good.**\n\n---\n\n## Contributing\n\nAll proposals must include:\n\n1. Motivation and expected interactions\n\n2. Validation-passing implementation\n\n3. No breaking mutations to published artifacts\n\nPolicy: `POLICY.md`\nSecurity: `SECURITY.md`\n\nCommons schema proposals should be opened in **Protocol-Commons.**\n\n---\n## References\n\n- [ERC-8004 — Agent Schema Discovery](https://eips.ethereum.org/EIPS/eip-8004)\n- [x402 — Machine-to-Machine Value Transport](https://github.com/ethereum/x402)\n- [JSON Schema 2020-12 — Validation Standard](https://json-schema.org/specification-links)\n- [IPFS — Content Addressing](https://docs.ipfs.tech/concepts/content-addressing/)\n- [ENS — Naming System for Web3](https://docs.ens.domains/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcommandlayer%2Fagent-cards","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcommandlayer%2Fagent-cards","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcommandlayer%2Fagent-cards/lists"}