Skip to content

AI Catalog Specification proposal#27

Merged
mindpower merged 9 commits into
mainfrom
ai-catalog-spec
Apr 8, 2026
Merged

AI Catalog Specification proposal#27
mindpower merged 9 commits into
mainfrom
ai-catalog-spec

Conversation

@muscariello

@muscariello muscariello commented Apr 1, 2026

Copy link
Copy Markdown
Member

Summary

This PR brings the AI Catalog specification proposal onto the upstream repository branch ai-catalog-spec and adds a reproducible publication flow for the spec site.

Included changes

  • add the AI Catalog and Trust Manifest specification draft and examples
  • add a GitHub Pages workflow to publish the spec site from ai-catalog-spec
  • add a repo-owned HTML builder for the specification
  • add a simple local uv-based build command via ./build-spec.sh

Validation

  • ./build-spec.sh
  • GitHub Actions workflow Publish Specification completed successfully on ai-catalog-spec

Github Page

https://agent-card.github.io/ai-card/

darrelmiller and others added 7 commits March 31, 2026 16:16
Introduces the AI Catalog specification (application/ai-catalog+json)
with typed, nestable entries for discovering heterogeneous AI artifacts.
Includes Trust Manifest extension for verifiable identity, attestation,
and provenance. Adds ReSpec-rendered HTML, CDDL schema, Mermaid diagram,
and XML output.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename Catalog Entry fields per AI Actor Naming Standard (PR #19):
- id -> identifier (globally unique logical address)
- name -> displayName (human-readable label)

Updated in: field definitions, CDDL schema, Mermaid diagram,
multi-version rules, trust identity binding, conformance levels,
all JSON examples, and OCI/MCP/Claude mapping tables.

HostInfo, Publisher, CollectionRef, and TrustSchema retain their
existing id/name fields (not agent naming fields).

Also updated publish-spec skill to reference renamed markdown file
(draft-ai-card.md -> ai-catalog.md).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Extend naming alignment to HostInfo, Publisher, CollectionRef, and
TrustSchema — not just CatalogEntry. All objects now use identifier
for machine-readable IDs and displayName for human-readable labels.

Updated: field definitions, CDDL schema, Mermaid diagram, verification
procedures, OCI annotations, mapping tables, and all JSON examples.

Also simplified publish-spec skill (removed static render step).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Skill entry: use application/ai-skill media type with .zip URL
- MCP entry: use /.well-known/mcp/server-card.json path
- A2A entry: simplify URL (remove .well-known)
- Add edDraftURI linking to PR #18

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Comment thread specification/respec-config.json Outdated
specification provides two complementary mechanisms for structuring
catalogs at scale: **bundles** and **collections**. They serve
fundamentally different purposes and appear in different parts of
the document.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When reading through this my immediate thought was that these concepts seem to be reversed i.e. it seems natural from a recursive discovery perspective that a catalog could contain a reference to another catalog by catalog media type. But then thinking further it seems confusing that if I hold a catalog object in my hand, I need to know where it came from in the parent to know if its a bundle or collection.

I would look at removing "collections" from the top level catalog, and instead allow catalogs to reference recursive catalogs as entries, and for dependencies handle them at the catalog entry level. For example:

CatalogEntry = {
  identifier: text,
  ....
  ? dependencies: CatalogEntry
}

This would map well into OCI too without a major change to your proposal, Catalog = OCI Image Index, and Catalog Entry = Image Manifest, config carries metadata, layer[0] can be the "real" card reference, and new part: dependencies maps into layers[1+].

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As discussed during the call. I suggest we leave out bundles as we only care about medaTypes to allow for serialization of the specific card which can be securely referenced in a collection.
Avoid to define dependencies among cards as there is not enough experience on this concept or use in practice.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. Based on our discussion, let's remove the bundle concept and dependencies from the spec for now. As you both noted, dependencies are better managed at the individual AI service level, keeping the AI Catalog cleanly focused on discovery.

@muscariello - To align this PR with those notes, we just need to:

  1. Remove bundles and dependencies.
  2. Change the inline data fields to data (as discussed in our meeting).

Do you want to push these updates to this branch, should I push a commit, or we can merge this as-is and handle those two tweaks in a quick follow-up PR? I'm happy to do whatever gets this baseline locked in the fastest!

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mindpower @ToddSegal Can you please approve?
We intend to merge this to main and create new PRs to address comments.

@jdamick

jdamick commented Apr 7, 2026

Copy link
Copy Markdown

I realize this is likely a file somewhere, but in the case that it's generated dynamically, would allowing pagination the entries make sense?

@mindpower mindpower merged commit fe8809f into main Apr 8, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

5 participants