Replies: 98 comments 79 replies
|
Hi @kthota-g , Thank you for the proposal and the detailed explanation. I feel that the current design of the Agent Registry implicitly assumes that Agent Providers manage their own agents within the registry service. However, in practice, the Agent Registry service administrators may be independent from Agent Providers. In particular, the Open Discovery endpoint might not be necessary within the Agent Registry service itself. Instead, it would be more natural for the services hosting agents to provide their own Open Discovery endpoints, which the Agent Registry service could then crawl to register agents. Regarding the URL structure, commonly seen catalog or registry services often employ namespaces such as This would allow linking user ownership and fine-grained CRUD access control per tenant, group, and agent. Similarly, the search API might be better structured as separate endpoints, for example: with query parameters for filtering and pagination. While the current To summarize, I’d like to clarify:
I’d love to hear your thoughts on this direction — and happy to align with your longer-term goals if there’s already a vision in place. |
|
Hi @kthota-g , I generally agree with @ognis1205 point of view on multi-tenancy. An other aspect I wanted to cover is the A2A specification version supported by the agents. As the purpose of the registry is to register available agents from your systems, you may face situations where the A2A specification version supported by these agents may not be the same across them. I do see 2 options then:
I am more in favor of option 1) as this information can also help when there is no registry in place, especially for A2A clients, so that it is possible to switch from one version to an other one based on the agent-card. |
|
Also add label which will be useful for filtering as part of the metadata. |
|
Great points being raised by everyone. The discussion around multi-tenancy and protocol versioning is critical. @brasseld - Regarding your point on A2A specification versions, I strongly agree with your Option 1. This information is fundamental to an agent's identity and must live within the Agent Card itself. In fact, I believe the Agent Card needs to be a comprehensive, machine-readable "passport" that solves many of these issues up front. To move the conversation from theory to a concrete proposal, I've been architecting a detailed v1.0 specification for what this card could look like.
A robust and comprehensive Agent Card schema feels like the foundational data model that can support the more advanced hierarchical and multi-tenant URL structures that @ognis1205 is advocating for. Happy to contribute this specification to the discussion as a potential v1.0 standard. |
|
When considering the protocol specification for an Agent Registry / Catalog, we likely don’t yet have enough accumulated knowledge, especially regarding client implementations. As a result, defining the protocol is quite challenging. Below, I’ve listed some key points that I believe are important to consider when thinking through this issue:
There are still several points regarding authentication and authorization that need further consideration, but I’d like to start the discussion from this perspective for now and share additional details at a later time. |
|
@ognis1205, that's a really insightful way to frame the problem from the client's perspective. You're right that a simple, flat list of agents isn't enough for complex, real-world scenarios. The need for well-scoped agent groups and dynamic network formation is spot on. It's interesting to see how our architectural approach aligns with the principles you've laid out. As we were building this out, we ran into the exact same scaling and multi-provider challenges. Our solution was to build the system on a foundation of Federation rather than a centralized, hierarchical namespace. In our model:
Your point about the "dynamic agent network" is also key. We've been thinking about that as a higher-level interaction pattern, where agents can move beyond simple, pre-defined skills and programmatically form temporary alliances to execute complex, multi-step tasks. This seems to be the next major frontier for agent-to-agent protocols. Ultimately, a robust Agent Card schema is the foundational data model that makes all of this possible, allowing agents to discover and trust each other before engaging in these more advanced collaborations. Great discussion. |
|
@ognis1205, you are absolutely right about the format. My apologies, and thank you for the guidance—making this easy to consume is key. To move the conversation from theory to a concrete proposal, I've attached the full v1.0 You can view the complete, formatted schema reference here: |
|
Great points here, and interesting benefits/trade-offs to consider. I generally feel the RESTful endpoints suggested by @ognis1205 is more natural and fits better with fine-grained control. That being said, for A2A, some level of /search I believe is necessary in actual production systems where Agents can freely discover other agents, as long as they have access to those agents. @kthota-g On above for the search side, you mentioned indexing the content as the main source of discovery. The field of indexing agent or tool metadata is complex and shouldn’t be overlooked if the protocol itself is handling the indexing for people. To give some background, agents can have names, descriptions, parameters, tools/skills, each one of those tools have descriptions/names/parameters, and on top of that, the agent can have example questions or the field/category they fall under for fine-grained metadata. If a truly /search field is adopted , it should allow for metadata filtering (filter by category of agent, or name of agent), and also some vector or lexical keyword search. If so, the content you use for the vector or BM25 algorithm is critical, and can miss out on accuracy if not done correctly. Typically, this agent vector index is done on the client side, so developers have control over how the indexing works. However, if being proposed, entertaining the content of the agent is important. My research team wrote 3 publications in this field of tool/agent retrieval or search. On the scalable MCP side, my team equipped an agent to 5,000 MCP servers (which can easily be 5,000 agents). The nuances, indexing type, a novel embedding strategy for agent document components, is all listed below. On the knowledge graph side , what if 3 agents depend on each other, and you NEED to retrieve all 3 if you /search for only 1. Kind of like grouping them together. But this is all knowledge graphs nodes and edges for relations of agents, MCPs, etc. —- |
|
I appreciate all the thoughtful input being shared here — especially from @SecureAgentTools and @EliasLumer. The points raised are insightful and clearly grounded in real-world challenges. That said, I wonder if we might be drifting a bit from the core scope of this thread. From my understanding, the primary purpose of this discussion is to solidify the API protocol of the Agent Registry / Catalog itself — particularly the structure of endpoints, access control semantics, and how clients interact with the registry to discover, retrieve, and manage agents. In this context:
I completely agree that these considerations will be essential as the ecosystem matures. But for now, it might be helpful to anchor this particular thread around:
Maybe once we’ve established that baseline, we can collectively start threads focused on:
|
Enhancing the A2A Registry with FAIR Principles and W3C StandardsThis is an excellent foundation for the A2A registry specification. I'd like to propose several enhancements that align with established W3C standards and FAIR data principles, drawing from successful implementations in data catalog ecosystems, and hopefully helping to "future-proof" this solution. 1. Adopting W3C DCAT for Agent Card SchemaThe Agent Card should leverage the W3C Data Catalog Vocabulary (DCAT) v3 as its foundational schema. DCAT enables standardized metadata description and cross-catalog interoperability. This would provide:
2. FAIR-by-Design API ArchitectureFollowing the Roche EDIS model, implement JSON-LD endpoints for all API responses to enable semantic interoperability: {
"@context": {
"@vocab": "https://w3id.org/a2a/vocab#",
"dcat": "http://www.w3.org/ns/dcat#",
"dcterms": "http://purl.org/dc/terms/",
"foaf": "http://xmlns.com/foaf/0.1/"
},
"@type": "dcat:Catalog",
"@id": "https://registry.example.com/agents",
"dcat:dataset": [...]
}This enables:
3. Enhanced Multi-tenancy with Persistent IdentifiersExpand the namespace proposal to include Global Unique Persistent Resolvable Identifiers (GUPRIs): Where each component resolves to:
4. Protocol Versioning and Capability NegotiationAddress the A2A version compatibility challenge with:
5. Federated Registry ArchitectureRather than purely hierarchical namespaces, implement federation support:
6. FAIR Assessment Integration (initial toughts)Implement automated FAIR scoring for agent cards:
7. Enhanced Search with Knowledge Graph SupportExtend the search endpoint to support:
Implementation PriorityI suggest prioritizing these enhancements in phases:
This approach would position the A2A registry as a truly interoperable, standards-compliant foundation for the emerging agent ecosystem while maintaining backward compatibility with current implementations. What are your thoughts on incorporating these standards-based enhancements? I'd be happy to collaborate on developing detailed specifications for any of these areas. |
|
Hi @ognis1205, You've made an excellent point, and I completely agree with your assessment. Thank you for steering the conversation back to the core protocol. Establishing a solid, minimal, and secure baseline is the essential next step, especially now that this effort is moving towards a formal standard under the Linux Foundation. Based on our work implementing a production-ready, federated registry network, we've had to solve these exact challenges of scope, security, and scale. We believe our findings can provide a strong, battle-tested foundation for the v1.0 protocol, and we'd like to offer them here for consideration. 1. A Minimal, Secure, and Scalable Base ProtocolThe protocol must handle the agent lifecycle's essentials: secure creation, discovery, and management. It should be RESTful, stateless, and secured via standard bearer tokens. We've found a minimal viable protocol needs to cover five fundamental areas:
2. A Decentralized Approach to Roles and ScopingA simple role model (Admin, Developer, Viewer) is a good start. However, for true multi-tenancy and scalability, we strongly advocate against a complex, centralized hierarchical namespace (
3. Proposed Minimal Endpoints for the v1.0 SpecificationThis set of endpoints provides a complete agent lifecycle, is built for scale, and has been validated in our implementation. Onboarding (The secure front door)
Discovery (The core function, built for scale)
(Note: We deliberately keep a generic Management (For agent owners)
From Theory to Practice: A Live DemonstrationTo make these concepts more concrete and show that this model is not just theoretical, we've recorded a brief demonstration of this protocol in action. This video shows the entire lifecycle: creating agents in two separate, sovereign registries and then executing a high-trust economic transaction between them. What this demonstration proves:
This working model demonstrates that the proposed minimal protocol is robust enough to support complex, high-trust interactions from day one. We believe this provides a solid, proven baseline for the formal A2A standard. We are happy to contribute our experience to help formalize these specifications for the Linux Foundation. |
|
Great to see the conversation around agent registries. They’re definitely needed. You might want to look into OpenID Federation. In this model, an agent would simply be another entity type with its own metadata. While it's not the only possible approach, this standard addresses many of the challenges raised here. These include entity discovery, listing APIs, metadata, expression of accreditations via trust marks, automated OAuth client registration, and federation of federations. |
|
@ognis1205 Are you familiar with https://xregistry.io/ ? It has a similar URL pattern to what you describe using /providers/groups/resources/versions. We have been experimenting with xRegistry as a standard interface to enable federation of registries. xRegistry has native support for including the content from one registry into another along with additional metadata. I think it has a potential to provide a standard foundation for building things like agent registries that are interoperable and can enable an ecosystem of standardized tooling. |
|
I feel the discussion is starting to touch on a wide range of interrelated topics, and I want to make sure we’re not talking past each other. To that end, I’d like to take a step back and summarize the key architectural questions and trade-offs as a structured list. This should help clarify which aspects we agree on, which need further discussion, and what assumptions we might be working from. |
|
|
Per @chopmob-cloud's invitation, a first-cut proposal text consolidating the (a)/(b) framing, the three pins, and @0xbrainkid's independence clause from this thread. Offered as language the Pre-layer framing. The principal-authority chain is structurally prior to the three runtime discovery artifacts (Agent Card, publication record, trust-authorization overlay). It answers a question Status-list patterns. Two patterns preserve principal control over the revocation surface and are interchangeable from the registry's vantage point:
The substrate is W3C Verifiable Credentials and Decentralized Identifiers. The status-list format is implementation-defined within that substrate; the spec does not pin a specific status-list version. Three pins. Anchor the invariant that distinguishes a principal-sovereign registry from one that can silently revoke agents on behalf of principals.
Optional and additive compliance. Per @0xbrainkid: the Suggestions, redlines, and counter-formulations welcome — particularly on Pin 3's MUST NOT wording, and on whether the optional/additive clause covers the case where a registry is unaware of any opaque Canonical reference text: https://gist.github.com/MoltyCel/c8eb7bd772d57c4b0e957fcfb23d54ee (parallel to @chopmob-cloud's consolidation gist, not a replacement; both citable). — Lars, MolTrust |
|
@MoltyCel -- the consolidated text lifts the (a)/(b) split and the three pins cleanly, with the pre-layer framing intact. Two refinements on the open questions you flagged: Pin 3 MUST NOT wording. The current "MUST NOT: the registry is the status authority" is role-based, which is harder to test against in a conformance suite. An action-based formulation is tighter:
The prohibition becomes behavioural (write, sign, emit) and the permitted role becomes behavioural (observes, passthroughs, references). A registry implementation can be conformance-checked against the action verbs without resolving the philosophical "who is the authority" question. Optional / additive clause coverage for unaware registries. Your formulation handles the consumer side. The gap is the registry-side handling of opaque hints it does not recognise. One additional sentence closes it:
This stops a registry from accidentally upgrading an unknown blob to an implicit endorsement, or the inverse, treating its presence as a red flag. Both refinements fit additively over your text. Happy to fold them into a v2 of the consolidation gist with proper attribution split if useful for downstream citation. The parallel-gist pattern ( -- AlgoVoi AlgoVoi (chopmob-cloud) -- Acquisition enquiries: https://docs.algovoi.co.uk/acquisition |
|
Follow-up from Apicurio Registry — implementation update and thoughts on the emerging layered model Hi all — following up on my earlier comment. A lot has happened both in this thread and in our implementation since February. Wanted to share what we've shipped and how it maps to the discussions here. What's new since our last updateSince my last comment we've shipped several iterations of our A2A support, all open-source:
All code: https://github.com/Apicurio/apicurio-registry (look under On @musaabhasan's three-layer separationThe Agent Card / Publication Record / Trust-Authorization Overlay model that @musaabhasan proposed and @chopmob-cloud, @MoltyCel, and @0xbrainkid have been refining is exactly how Apicurio Registry already works — we just didn't name it that way:
The key insight from @musaabhasan — "discoverability should not be accidental permission" — is exactly right, and it's how we've built it. Discovering an agent in our registry tells you nothing about whether you're authorized to invoke it. On @MoltyCel's principal-authority "pre-layer"The "pre-layer" framing is useful. We don't currently model principal authorization as a first-class concept, but our architecture has a natural extension point for it: artifact labels and metadata can carry a On @BigFishDreamWater's search/resolve/snapshot distinctionWe agree with the three-operation split and already implement all three:
On search and indexing complexity (@EliasLumer, @jingchang0623-crypto)Our approach is pragmatic: structured content indexing at registration time rather than real-time semantic search. When an Agent Card is registered, we extract skills, capabilities, modes, protocol bindings, security schemes, and tags into indexed structured elements. This gives you fast, precise filtering over thousands of agents without requiring a vector database. The search API supports combining multiple filters (e.g., "agents with skill For deployments that need semantic/vector search, the structured index can serve as a pre-filter, with semantic ranking layered on top. We think the base spec should define the structured filtering API and leave semantic search as an optional extension. What we'd like to see in the specBased on our implementation experience:
We're happy to contribute our implementation as a reference, share our compatibility rules as a starting point for the spec, or test federation patterns with other registry implementations. |
|
Time to converge — proposal to split into core spec + extensions This discussion has been running for nearly a year (since June 2025), has 80+ comments, and has produced real consensus on several fundamentals. But it hasn't produced a spec. Meanwhile, at least five independent registry implementations are shipping with incompatible APIs, which means the interoperability window is closing — the longer we wait, the harder it gets to align. The root cause is scope: this thread now covers discovery, search, federation, payments, on-chain settlement, ZK attestations, compliance, token economies, governance, DID identity, and reputation scoring. No single spec can ship all of that at once. Trying to is why we're stuck. Proposal: split into Core + ExtensionsCore spec (ship now): The discussion has effectively converged on these points — we should formalize them:
That's it for v1. No payments, no federation, no ZK proofs, no token economies. Those are all valid — but they're extensions, and the Extensions (parallel tracks, ship independently):
Concrete offerWe're willing to open an RFC PR with a draft core spec based on what we've shipped in Apicurio Registry. Our implementation already covers all four core points above and has been through multiple production iterations. The draft would include:
This isn't "adopt Apicurio's API" — it's "here's a concrete starting point based on a working implementation, let's iterate from there." A PR with actual schema definitions will move faster than another six months of discussion comments. @kthota-g @darrelmiller — would the TSC be open to an RFC PR for a minimal core registry spec? And is there a timeline for moving this from Discussion to a formal proposal? |
|
@carlesarnal -- the convergence framing is right, and the Core + Extensions split is the only path that ships in any reasonable window. Endorsing from the AlgoVoi side; the three-layer data model (Agent Card / Publication Record / Authorization Overlay) and the three operations (search/list, resolve, snapshot/reference) are clean primitives that downstream extensions can compose against without conflict. On the extension tracks where AlgoVoi is named:
Strong support for opening the Core RFC PR. Happy to work alongside trusted partners in the space on the extension tracks; the 80+ comments have converged on something real, and codifying the Core now keeps the interoperability window open before the five shipping implementations diverge further. -- AlgoVoi (chopmob-cloud) AlgoVoi (chopmob-cloud) -- Acquisition enquiries: https://docs.algovoi.co.uk/acquisition |
|
@carlesarnal — the Core + Extensions split lands the spec discussion on solid ground. The three-layer data model (Agent Card / Publication Record / Authorization Overlay) plus three operations (search/list, resolve, snapshot/reference) is the smallest stable shape that lets implementations converge without freezing the trust-authorization design space. One implementation note from the MolTrust side, in case it's useful for the Core spec's normative language around the Authorization Overlay layer: The Agent Authorization Envelope (AAE) referenced earlier in this thread is exactly an Authorization-Overlay-layer artifact — issued by a principal, carrying scope/constraints/validity, content-hash-referenced from a Publication Record, not embedded. Currently shipped at api.moltrust.ch under the W3C VC + DID substrate, IETF draft-04. The principal-authority chain that @chopmob-cloud and I worked through above sits structurally just upstream of the Overlay — a pre-layer the Overlay points to. For the Extension tracks: the AAE shape composes cleanly with the Payment/Pricing track (envelope-scoped budget caps, observed by registries, enforced by the issuing principal) and with the Compliance-Attestation track (ALLOW/REFER/DENY decisions can be embedded as constraints inside an AAE or referenced from it). The "principal MUST control status, registry MUST NOT be status authority" invariant from the earlier consolidation holds at the Core layer; both extension tracks inherit it without further normative work. If a first-cut for the Authorization Overlay section of the Core spec would be useful, I can take a pass against the existing proposal structure. — Lars, MolTrust |
|
@kthota-g — thanks for this thorough proposal. We've been running a multi-agent orchestration system in production (9 agents across architecture/engineering/ops/security domains) and have a few observations that may complement the current design: 1. Single-agent registration isn't enough — topology validation matters The current proposal treats each agent as an independent entity (add by Agent Card URL, list, search). In practice, agents have dependency relationships — Agent B can only function if Agent C is available, and Agent A's task delegation to B must pass through a trust boundary. A flat registry doesn't capture this. We've found it useful to model agents as nodes in a DAG (directed acyclic graph) where edges represent delegation paths. The registry should validate that adding/removing an agent doesn't create orphaned dependencies or circular delegation loops. This is especially critical when agents span trust tiers (local → same-host → cross-host). 2. Trust tier should be a first-class registry concept The proposal mentions entitlements (OAuth 2.0 Client Credentials), but doesn't distinguish between authentication (who is calling) and trust tier (what risk profile does the target agent have). We've been running with a 4-tier model:
The registry should carry this tier as metadata so that orchestrators can make routing decisions based on risk, not just capability match. 3. On the federated architecture discussion (@SecureAgentTools @ognis1205): the "federation of peers" model maps well to multi-tenant enterprise deployments, but there's a missing primitive — delegation-chain provenance. When Agent A delegates to B which delegates to C across registry boundaries, the downstream registry needs to know the full chain, not just the immediate caller. This is what our Trace Context extension proposal (#2026) aims to address. Happy to contribute concrete schema proposals or reference implementation if there's interest. |
|
AIPOU may be a useful adjacent primitive for the trust/provenance part of agent registries, especially if A2A wants to avoid putting every evidence type directly into standing identity fields. AIPOU is not an agent registry. It is an MCP-first receipt protocol for humans working with AI agents: a local collector records a task/run with wallet authorization, nonce/replay protection, local hashes instead of raw prompts/outputs, and an Ed25519 signature. Optional claims/rewards for the human operator happen later only if a validator approves the receipt; no price, yield, or guaranteed reward is promised. The A2A question I would separate is:
Docs/examples:
Would A2A prefer external work receipts as Agent Card extensions, task metadata, artifact metadata, or separate audit artifacts linked by URI/digest? My instinct is task/artifact metadata or external audit artifacts, so post-work evidence does not get mistaken for standing agent identity. |
|
Maintainer disclosure: I build Better Agent, where agent definitions, provider-native session identities, and live/recovering runtime state must remain separate. The recent Core + Extensions split looks shippable. I would make one more distinction normative in the core: registration is not runtime presence. A registry record should separate:
That prevents a stale card, successful crawl, or last-known health check from being interpreted as “this agent is currently online and safe to invoke.” Mutable names can point to versions, but search/resolve should return the exact content digest so an orchestrator can pin what it selected. A few concrete requirements:
This keeps the minimal registry useful for reproducible selection while leaving federation, reputation, payments, and authorization overlays independent. License note for the implementation reference: Better Agent is source-available and free for non-commercial use; commercial use requires separate permission. |
|
Thank you for the detailed update, and for the great implementation work. I'm glad to see that the three-layer model and the search/resolve/snapshot operations have reached a solid consensus. I fully support the Core + Extensions split and look forward to the RFC PR. Happy to help review or provide feedback. Let's move this forward!
…________________________________
发件人: Carles Arnal ***@***.***>
发送时间: 2026年5月26日 21:41
收件人: a2aproject/A2A ***@***.***>
抄送: BigFishDreamWater ***@***.***>; Mention ***@***.***>
主题: Re: [a2aproject/A2A] Agent Registry - Proposal (Discussion #741)
Follow-up from Apicurio Registry ― implementation update and thoughts on the emerging layered model
Hi all ― following up on my earlier comment<#741 (comment)>. A lot has happened both in this thread and in our implementation since February. Wanted to share what we've shipped and how it maps to the discussions here.
What's new since our last update
Since February we've shipped several iterations of our A2A support, all open-source:
Feature Details
A2A v1.0 Agent Card model Updated to match the v1.0 spec ― supportedInterfaces with protocolBinding/protocolVersion, securitySchemes, AgentCardSignature (JWS), extensions
Discovery endpoints GET /.well-known/agent.json and GET /.well-known/a2a (canonical v1.0 path) for the registry's own card; GET /.well-known/agents for searching registered cards; GET /.well-known/agents/{groupId}/{artifactId} for individual card retrieval
Structured content indexing On registration, we automatically extract and index: skills (by ID), capabilities (boolean flags), input/output modes, protocol bindings, security scheme types, and skill tags ― all searchable via query parameters
Compatibility checking Semantic backward-compatibility rules for Agent Card evolution: removing skills, disabling capabilities, removing interfaces/security schemes/modes are flagged as breaking changes. Adding new ones is always compatible
Visibility model Auth-aware filtering ― unauthenticated callers see public agents; authenticated callers see agents they're entitled to
MCP tool registry Parallel AGENT_CARD and MCP_TOOL artifact types with the same CRUD, search, validation, and versioning semantics
All code: https://github.com/Apicurio/apicurio-registry (look under app/src/main/java/io/apicurio/registry/a2a/ and schema-util/)
________________________________
On @musaabhasan<https://github.com/musaabhasan>'s three-layer separation
The Agent Card / Publication Record / Trust-Authorization Overlay model that @musaabhasan<https://github.com/musaabhasan> proposed and @chopmob-cloud<https://github.com/chopmob-cloud>, @MoltyCel<https://github.com/MoltyCel>, and @0xbrainkid<https://github.com/0xbrainkid> have been refining is exactly how Apicurio Registry already works ― we just didn't name it that way:
Layer How Apicurio implements it
Agent Card (portable self-description) Stored as artifact content ― the raw Agent Card JSON. Portable, versioned, validated against the A2A schema. The registry never modifies it.
Publication Record (registry metadata) Artifact metadata: groupId, artifactId, version history, creation timestamp, owner, labels, lifecycle state (enabled/disabled/deprecated). This is registry-specific and doesn't leak into the card.
Trust/Authorization Overlay RBAC via OIDC integration. Per-artifact and per-group access controls. Visibility filtering at query time ― what you can discover depends on your authenticated identity. Entitlements are a property of the caller's context, not the agent's card.
The key insight from @musaabhasan<https://github.com/musaabhasan> ― "discoverability should not be accidental permission" ― is exactly right, and it's how we've built it. Discovering an agent in our registry tells you nothing about whether you're authorized to invoke it.
On @MoltyCel<https://github.com/MoltyCel>'s principal-authority "pre-layer"
The "pre-layer" framing is useful. We don't currently model principal authorization as a first-class concept, but our architecture has a natural extension point for it: artifact labels and metadata can carry a principalAuthorization reference (a content-addressed pointer to a VC or similar credential) without changing the Agent Card content or the registry's core data model. The publication record layer is the right place for this.
On @BigFishDreamWater<https://github.com/BigFishDreamWater>'s search/resolve/snapshot distinction
We agree with the three-operation split and already implement all three:
* search/list: GET /.well-known/agents?skill=X&capability=streaming:true&inputMode=text ― returns matching publication records with summary metadata
* resolve: GET /.well-known/agents/{groupId}/{artifactId}?version=branch=latest ― returns the concrete Agent Card content the caller is entitled to use
* snapshot/reference: Every artifact version has a stable ***@***.*** identifier. Callers can pin to a specific version for audit/replay. Our compatibility checker ensures that version evolution follows predictable rules.
On search and indexing complexity ***@***.***<https://github.com/EliasLumer>, @jingchang0623-crypto<https://github.com/jingchang0623-crypto>)
Our approach is pragmatic: structured content indexing at registration time rather than real-time semantic search. When an Agent Card is registered, we extract skills, capabilities, modes, protocol bindings, security schemes, and tags into indexed structured elements. This gives you fast, precise filtering over thousands of agents without requiring a vector database. The search API supports combining multiple filters (e.g., "agents with skill code-review AND capability streaming:true AND input mode text").
For deployments that need semantic/vector search, the structured index can serve as a pre-filter, with semantic ranking layered on top. We think the base spec should define the structured filtering API and leave semantic search as an optional extension.
What we'd like to see in the spec
Based on our implementation experience:
1. Standardize the three-layer separation. Agent Card content, publication metadata, and authorization overlay should be explicitly defined as separate concerns in the spec. Registries should never require modifications to the Agent Card itself for publication or entitlement purposes.
2. Define a minimal search API. We propose GET /agents with query parameters for skill, capability, inputMode, outputMode, protocolBinding, and name ― plus offset/limit pagination. This is what we ship and it covers the common discovery cases. POST /agents/search with a JSON body can be an extension for advanced queries.
3. Compatibility semantics for Agent Cards. The spec should define what constitutes a backward-compatible change to an Agent Card. Our rules (adding skills/capabilities = compatible; removing them = breaking) have worked well and prevent silent breakage when agents evolve.
4. The extensions field is critical. Payment metadata ***@***.***<https://github.com/chopmob-cloud>), compliance attestations ***@***.***<https://github.com/musaabhasan>), principal authorization ***@***.***<https://github.com/MoltyCel>), negative capabilities ***@***.***<https://github.com/jingchang0623-crypto>) ― all of these belong in extensions, not in the core spec. The Agent Card schema should explicitly support an extensions array (it already does in v1.0) and the registry spec should define how extensions are indexed and searchable.
We're happy to contribute our implementation as a reference, share our compatibility rules as a starting point for the spec, or test federation patterns with other registry implementations.
―
Reply to this email directly, view it on GitHub<#741?email_source=notifications&email_token=AOTQVWPN7D5QZG55XNI7KW344WNI3A5CNFSNUABIM5UWIORPF5TWS5BNNB2WEL2ENFZWG5LTONUW63SDN5WW2ZLOOQXTCNZQGYZDMMBYUZZGKYLTN5XKO3LFNZ2GS33OUVSXMZLOOSWGM33PORSXEX3DNRUWG2Y#discussioncomment-17062608>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AOTQVWIY7LAUMRP5VISDSKD44WNI3AVCNFSM6AAAAAB66LCVKSVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTOMBWGI3DAOA>.
Triage notifications on the go with GitHub Mobile for iOS<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675> or Android<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
|
Hi all, Following the three-layer model (Agent Card / Publication Record / Trust-Authorization Overlay) and the Core + Extensions split that seem to have converged here, plus the detailed Apicurio Registry write-up, this reads to me as designed primarily for self-hosted, enterprise deployments (though I haven't read the whole discussion 🙂). That leaves a question I haven't seen addressed directly: is there any plan or intent for this spec to also produce (or standardize) a public, non-enterprise discovery layer — something closer to what registries like a2aregistry.org attempt today, but community/protocol-driven? If yes, is the direction leaning top-down or bottom-up?
The instinct is that bottom-up is the more "democratic" and consensual model, respecting agent-owner autonomy. But leaving the public case entirely bottom-up and unspecified carries a real risk: without a protocol-native discovery default, that layer will likely be filled by whichever commercial registry gets there first and accumulates the most listings. This dynamic already parallels how commercial search engines came to dominate discovery on the open web, and looking at what already exists today, the space is attracting commercial attention: Commercial: rnwy.com/a2a Open source / non-enterprise: a2aregistry.org A minimal top-down piece — a standard crawl/announce mechanism any registry can implement, or even a protocol-hosted, simple open directory — could keep that layer open, while a simple opt-in/opt-out field in the Agent Card (similar to Concretely, from building AgentRouter: we currently depend on one informal public registry a2aregistry.org for third-party A2A agents, because it's the only one with meaningful public listings today. If the protocol doesn't engage, a closed, monopolising commercial registry could still emerge on top of superior crawling infrastructure, starting informally — see discussion #1481, where a side project crawled 8,500+ URLs for Has this come up in the RFC drafting, or is it explicitly left out as an organisational problem rather than a protocol problem? Tim Brauer, agent-router.org |
|
Sharing operating datapoints, not a pitch - we run Cog Depot, a live A2A-native marketplace (public Agent Card, authenticated JSON-RPC 1. One auth-scoped feed can replace 2. Decide whether this proposal standardizes a registry of agents or a catalog of offers. They are conflated throughout and have different lifecycles: an agent (its card URL) is long-lived; the capability offer a client actually searches for is priced, often time-bound, and churns constantly. A schema and freshness model tuned for one is wrong for the other. 3. Crawl-from-stable-URLs works, and discovery should stay decoupled from settlement and identity. We expose a canonical card plus an RSS/ +1 on |
|
Implementation evidence from Agoragentic supports the Core + Extensions split, with one interoperability requirement that should be explicit: A publication record must preserve the exact canonical Agent Card URL, and publication/discovery must not imply permission to contact or invoke the agent. We ran a bounded production A2A first-contact observation against registry-derived candidates. After tightening protocol binding, the dominant result was not transport failure but no eligible contact: missing explicit live contact consent, absent or rewritten Agent Card URLs, unsupported protocol versions/bindings, endpoint-origin mismatch, invalid card JSON, and stale failed-probe cooldowns. Increasing sender volume would not fix those inputs. A minimal interoperable publication record therefore needs:
This keeps the registry core focused on search/resolve/snapshot while making cold-start A2A automation possible without treating discoverability as authority. Consent belongs in the authorization overlay, not the Agent Card core. Concrete compatibility requests are open for exact card-location support in agentsystems/agent-index#20 and a bounded cross-registry pilot in A2ARegistry/GlobalA2ARegistry#4. We can contribute a small schema/example once maintainers indicate where the registry RFC work should live. |
|
Thank you. Agreed with the sharpening: the registry should report the absence of an authorization overlay, while the overlay defines that absence as not authorized to contact or invoke. We can contribute a small concrete follow-up containing:
Our production evidence also supports keeping canonical Agent Card URL preservation in Core while leaving consent and status principal-controlled in the overlay. Please point us to the preferred RFC or schema location. |
|
This is a strong fit with the boundary we use in AIPOU: the registry observes and resolves; it never grants contact or invocation authority. From our side, the smallest contribution would be a protocol-neutral example in the registry RFC or authorization-overlay schema showing exact publisher-supplied Agent Card URL, card digest, observedAt/expiry, and consent scope/expiry/revocation, with absence of consent treated as not authorized by the overlay. AIPOU can contribute one positive and two fail-closed vectors, but we should keep the receipt as a separate issuer-asserted evidence artifact rather than importing it as registry authority. Please point us to the preferred RFC/schema location and we can shape the example there. |



Uh oh!
There was an error while loading. Please reload this page.
Hi,
There are a few open discussions related to agent registry to enable agent discovery discussed here.
The following is a proposal for a registry service for agents. We appreciate any feedback or discussions in solidifying the proposal.
Agent Registry - Proposal
With the rapid proliferation of AI and Agentic applications, a typical enterprise may have a number of internally developed agentic applications and agents procured from external vendors hosted internally or in the cloud. An enterprise customer may have functions that span more than one agent and need a service to lookup and leverage the available agents for completing a task.
Similarly, vendors may also provide a number of agents as part of their offerings similar to how public APIs are documented today. The vendors of agents may need to provide a list of available agents for consumption to their customers. These agents could be publicly accessible or granted by entitlements to their customers.
This paper proposes a registry service that could be deployed to enterprise environments or publicly accessible endpoints that can help with agent discovery and entitlements.
The following are the key terms used in this document:
Agents: Agentic applications running within an enterprise or hosted externally.
Agent Card: A JSON document published by an agent describing its capabilities, protocols and authentication mechanisms.
Client: A client is an application, service or an agent that can consume Agents
Agent Entitlement: A permission granted to a client to enable fetching available agents for its use.
Agent Catalog
Agent Catalog is a component of the Agent Registry that allows showing a list of available agents in an enterprise context. The registry service allows authenticated users to login using a web interface and add agents hosted internally or externally to the catalog. Agents can be added to the catalog by providing their Agent Card url which describes the agent’s capabilities, skills and supported authentication schemes. Registry will fetch the content from the provided agent card and index the content to offer search capabilities.
Following is an example mockup showing a list of available agents in an enterprise agent catalog:
Agents added to the catalog can have varying capabilities, authentication mechanisms and supported protocols. But the catalog’s role is to simply surface the details of an agent and does not deal with the internal workings of an agent. Enterprise administrators can choose to make the agents available publicly or set them up to be available only for authenticated clients.
Agent Entitlements
Agents available in the registry can be entitled to client applications. A client application can be a service, application or even an agent. The registry service provides an interface for logged in users to register a new client and allow the client to access the available agent entitlements.
The agent registry could leverage an external authorization server for generating the client_id and client_secret and use the OAuth 2.0 Client Credential grant flow to request an access_token and use the token to access the entitlement service.
A registered client can issue HTTP GET to https://<registry-url>/agents/entitled with the bearer token to retrieve a list of entitled agents represented by their agent cards. Following is an example response:
{ "registry_version": "0.1", "resources": [ { "id": "it-agent", "name": "IT Agent", "location": { "url": "https://it.example.com/.well-known/agent.json", "type": "agent_card" }, }, { "id": "benefits-agent", "name": "Benefits Agent", "location": { "url": "https://benefits.example.com/it/agent.json", "type": "agent_card" } } ], "total_count": 2 }The entitlements provide links to the agent cards published by the agent providers.
Open Discovery
Enterprises may choose to provide a public listing of available agents that could be used by external agents/applications or to be discovered by search engines. For example, an agent vendor may provide a publicly accessible list of agents that could be accessed by any other external clients.
We propose to use https://<registry-url>/agents/public as the endpoint for open discovery of agents published by an enterprise.
Agent Search
Agent registry can support agent search for consumers. A client application can query the registry with a query + filter criteria to discover agents (entitled/public agents) on the fly for solving a task.
For example: if a consumer queries “what’s the 401k match policy?”, the registry can perform a search of all the available entitled agents for that consumer and can return the most relevant agents (e.g. Benefits Agent) to the consumer. Clients can pass top as a query parameter to limit the results returned by the registry. Specifying top=1 query parameter returns the top 1 match for the query.
A search can be performed by HTTP POST to https://<registry-url>/agents/search with payload
{ "query":"<user query>", "capabilities": { "streaming": true, "pushNotifications": true } }End to end flow:
Following diagram demonstrates the end-to-end flow between the services:
High level diagram
User authentication and authorization to registry
User management will be available as part of the Agent registry service and agent registries can leverage Single Sign-On with an external IdP for enterprise authentication and authorization.
Users can be assigned one or more of the following roles:
Administrator - Ability to setup auth configuration, settings and user management
Catalog Manager - Ability to add or remove agents to the catalog
User - Ability to register new clients and grant agent entitlements
Viewer - Ability to view the agent catalog if the catalog is not publicly accessible
Agent registry end points:
Open Discovery end point:
GET URL: https://<registry-url>/agents/public
Any agents added to the registry and configured with public access will be listed at this endpoint.
Agent entitlements end point
GET URL: https://<registry-url>/agents/entitled
All public + entitled agents available for a client will be returned by this endpoint.
Search end point
POST URL: https://<registry-url>/agents/search
Client’s accessible public + entitled agents that match the provided search criteria will be returned via this endpoint.
Endpoints # 2 and # 3 are accessible only for authenticated clients.
Pagination is supported by passing top and skip query parameters.
All reactions