Week of October 4 – October 11, 2026
MCP Gave Discovery to the AI Catalog
By Kin Lane · Sent October 12, 2026
This is the tenth issue of The Specification Layer.
This newsletter window: October 4 through October 11. Thirty-four specification repositories and twenty-five feeds, all read clean for the tenth consecutive week — no source errored. 124 pull requests merged. 7 releases cut. 33 posts published. Eleven of the thirty-four specifications did not move. The two release-path dependencies merged nothing.
Two registry changes, both promised last week, both made. CALM’s row now reads finos/calm-schema, the specification, instead of finos/architecture-as-code, the tooling — so CALM went from 63 merges last week to one, and that is not a collapse, it is the correction. And x402 joins, reported alongside the established thirty like MCP, with a caution I explain in the financial section.
That 124 is down 83 on last week, and most of the drop is the CALM correction. Like for like — the established specifications without CALM’s tooling — merges went from 104 to 86.
Predictions from last week, graded:
| Prediction | Result |
|---|---|
| MCP’s SEP-3398 passes, and there is no December MCP release | Open. The core maintainers moved it to a vote on October 7. No result is on the record yet. |
| FDC3’s 3.0 board reaches 50/50 by October 18 | Right, early. The board grew by two and closed at 52/52 by October 8, and v3.0.0-beta.1 shipped October 7. |
| The OpenAPI security proposal gets its complete OpenAPI description example before its first approval | Open. sig-security #54 has not moved since September 25. |
| Arazzo 1.2 by mid-November | Still one of four. #556, #567 and #568 are open; Arazzo merged nothing this week. |
CALM’s row points at calm-schema, and x402 joins the registry |
Done. |

The Lead: MCP Gave Discovery to the AI Catalog
SEP-2127, “MCP Server Cards — HTTP Server Discovery,” merged on October 6 with its status set to Final. It was opened in January, moved over from an earlier proposal, and drew review from three working groups before @tadasant and @kurtisvg approved and @dsp-ant merged it. It is an Extensions Track SEP — the extension identifier is io.modelcontextprotocol/server-card — and its normative wire format lives in its own repository, ext-server-card, not in the SEP.
A Server Card is a static document describing a remote MCP server before anyone connects to it: its name, version and description, its transport endpoints, and the protocol versions it supports. Cards can live at any unreserved URI; <streamable-http-url>/server-card is the recommended location.
The line I want every API provider to read is the one about discovery. The SEP does not define a well-known location for MCP. It hands that job to someone else:
“For domain-level discovery, an AI Catalog can link to or embed the relevant Server Cards.”
And the example is explicit: a restaurant “would advertise the two relevant Server Cards in an AI Catalog at restaurant-a.com/.well-known/ai-catalog.json.” The AI Catalog is the A2A project’s specification — a different working group, a different repository, and, as of this week, pushing for a 0.9 release candidate before AgentCon. MCP is building on it rather than beside it: “leaving the catalog responsible for domain-level discovery and the Server Card responsible for MCP-specific identity and connection details.”
That is two Linux Foundation-hosted agent protocols agreeing on who owns which layer of discovery, in a merged, Final document. I have been arguing for a single front door for a provider’s machine-readable surface since APIs.json. This is the first time I have seen two of the agent protocols put it in writing.
The card is static on purpose
The second thing worth reading slowly is what the card leaves out. It does not advertise capabilities or extension support:
“capabilities and extensions describe negotiated runtime behavior and can depend on the client, identity, configuration, and deployment state. They remain available through live protocol negotiation.”
supportedProtocolVersions tells a client whether to try. What the server will actually do, it tells you when you connect. I heard the same principle argued for OpenAPI on Thursday’s community call, and wrote it up afterwards: when a description and the runtime disagree, the most dynamic source wins, and a value you write into a document is a cache that can go stale. MCP has now designed a discovery document around exactly that limit. I think it is the right call, and I think every description format in this newsletter is going to have to decide where its own line is.
The rest of MCP’s week
- SEP-3398, the release cycle, moved to a vote. The October 7 core maintainer notes: one comment, approving, no objections — “@kurtisvg opens the vote.” No result by Sunday.
- SEP-3371, consistent SDK extension points, was not voted. Same notes: the authors return with a transport-layer middleware proposal and a versioning path. The open question is whether middleware sits at the JSON-RPC layer or the transport — auth and Server Cards being the HTTP-only cases. I sat in on the Files working group’s filesystems track the same day, and its plan waits on this SEP.
- Pluggable transports: no vote, data model first. The maintainers split it into three proposals — describe MCP’s data model independently of JSON-RPC, decide whether custom transports must still carry JSON-RPC, then a tier-one transport interface. “Protobuf over gRPC is not MCP today even with the same data model.”
- The Files working group consolidation was abandoned. Last week I noted #3389, merging the File Uploads and Filesystems groups, as decided but not done. On October 11 it was closed: “We’re actually going to abandon this, per discussion in Discord, and keep the WGs separate for now.”
- A Governance Working Group was chartered — #3423, from @sarahnovotny, a single home for revising MCP’s governance documentation and an advisory channel to the core maintainers.
MCP merged six this week, five by people.

Overlay 1.2, Now Reported
In issue #08 I pulled the Overlay 1.2 release out of the lead at the working group’s request, and I have held it since. The group is ready, it is published, and here it is.
- Released — Overlay 1.2.0, September 22 at 15:29 UTC. The Release 1.2 board is 7/7.
- Published — the 1.2.0 specification is live on spec.openapis.org, and the publishing site merged #141, “Overlay - publish schema iterations,” on October 6.
- In SchemaStore — @baywet’s #6465 added the Overlay 1.2 schema on October 8, alongside #6466 (updated OpenAPI 3.x schemas) and #6467 (Arazzo 1.1). Editors that validate through SchemaStore now know about all three.
The headline features are $self and a components section for reusable actions. The repository itself merged two housekeeping changes this week from @baywet, the schema-publishing workflow triggers and contributing-branch guidance. The 1.3 board is at 0/3 and 2.0 at 4/7.
There is also a live argument about what Overlays are for, in discussion #412. I took part, and wrote up my position — an overlay is a layer, not a diff — so read that as a participant’s view, not this newsletter’s.

🎙 From the Room: Sixteen Sessions, Six Outcomes
Sixth week of this section. Fourteen sessions are in the groups’ own public recordings and notes, and I sat in on three calls — the OpenAPI community call, the A2A AI Catalog, and MCP’s Files working group — two of which have no public record. Same rule as always: outcomes only, each checked against the repository.
| Room | Outcome | On the record |
|---|---|---|
| MCP core maintainers (Wed) | SEP-3398 to a vote; SEP-3371 sent back; pluggable transports split into three SEPs | #3421, Oct 7 |
| MCP Progressive Disclosure (Mon) | Problem statement and tool-search analysis ratified | the group’s notes |
| A2A AI Catalog (Thu) | #119 merged during the call — only the Go and Rust SDKs stay listed as official implementations | recording, Oct 8 |
| CloudEvents / xRegistry (Thu) | xRegistry pagination changes accepted and merged the same day | xregistry #738, Oct 8 |
| OpenTelemetry Semantic Conventions (Mon) | The v2 migration marking identifying attributes on entities landed its first pieces — OS and CPU, container, deployment | #4165, #4164, #4167, Oct 6–11 |
| Envoy AI Gateway (Mon) | The release discussed shipped as v1.2.0 — the first under the Agent Router name; envoyproxy/ai-gateway now redirects to theagentrouter/agent-router |
Oct 7 |
| OpenAPI community call (Thu) | Companion specifications will be versioned per special interest group | my notes; no public recording |
On the AI Catalog, what is coming rather than what landed. The group set its sights on a 0.9 release candidate before AgentCon, with the self-contained trust-manifest change, #117, as the one change planned for 0.9 — still open. It also agreed to start an “awesome AI catalogs” repository: a catalog of catalogs, linted, with a large disclaimer. Read the lead with that in mind. MCP just pointed its discovery at a specification that has not shipped 0.9.
Announced, not landed by Sunday: A2A #2270, clarifying terminal versus interrupted task states, approved for the 1.1 branch on the TSC call and still open — A2A is still at v1.0.1. xRegistry #741, header handling, “conditionally approved.” The remaining semantic-conventions entity migrations. Envoy’s quota-aware load balancing (#47805). OpenTelemetry GenAI’s #571, with naming pushed to a later session.
No outcome: the OpenTelemetry Specification SIG (no agenda, adjourned early), OSV (two attendees), the two GenAI sessions beyond the above, OpenFeature (updates only), and OCI (a review-queue walkthrough; nothing merged).
The split
| Who merged it | Count | Share |
|---|---|---|
copybara-service[bot] |
39 | 31% |
dependabot[bot] |
18 | 15% |
renovate[bot] |
5 | 4% |
mintlify[bot] |
2 | 2% |
claude[bot] |
1 | 1% |
| All bots | 65 | 52% |
| Actual people | 59 | 48% |
Ten readings: 59% machine, 54%, 72%, 59%, 36%, 41%, 41%, 47%, 43%, 52%.
| Merges | Human | Human share | |
|---|---|---|---|
| TRACE + PDPP | 23 | 13 | 57% |
| MCP + x402 (newest rows) | 14 | 11 | 79% |
| The established thirty | 87 | 35 | 40% |
| All thirty-four | 124 | 59 | 48% |
The established layer was 40% human, up from last week’s honest 31. Protocol Buffers merged 32, every one imported by copybara; gRPC merged eight, one by a person. SPDX (10), FDC3 (10 of 11) and the Overlay, JSON Schema, OpenAPI, OCI Runtime, TUF and CALM merges were people.
A counting note I owe you. Bot attribution here has always been by login: an account ending in [bot], or copybara. Three accounts this week merged work that a machine did under an ordinary user login — PhilBot402 in x402, described on its own profile as “PhilBot by @phdargen,” plus prombot and renovate-bot. Five merges between them. The login rule counts them as people, and I have kept it so this week compares with the last nine. Counted as machines, the split is 56% machine. I will decide next week whether to change the rule, and say so if I do.

📐 The Description Layer
MCP and Overlay — above.
JSON Schema restored a definition it had broken by accident. #1786 from @Kaileshwar16 returns the uri format to “a valid URI according to RFC 3986.” During the move from URI to IRI terminology it had been changed to RFC 3987, which made uri identical to iri. A specification bug fix — in the development draft, not the published 2020-12. #1782 removed stale changelog entries. JSON Schema’s first merges in five weeks.
OpenAPI merged one template fix and holds two boards: v3.3.0 at 19/39 for a seventh week. The real work is in the special interest groups, where the companion-specification approach decided on Thursday’s call has to be written down next.
gRPC cut v1.85.0-pre1 on October 9 — a pre-release; v1.84.0 is still the newest stable. Protocol Buffers merged 32, all copybara, including conformance-test fixtures and a --source_code_info_out compiler flag.
AsyncAPI recorded a board and maintainer update (#3643) and posted its September community update; the specification repository merged nothing for a fourth week. Arazzo, GraphQL and Moonwalk merged nothing. Moonwalk: tenth consecutive week, last merge March 31, 2025. There is still no OpenAPI 4.

📡 Events, Telemetry and the Data Plane
OpenTelemetry mapped systemd’s journal. #4995 from @bachp adds an example mapping of journald fields to the OpenTelemetry log data model, with a Collector prototype behind it. Two spec-compliance matrix updates (JavaScript logs, .NET) and two dependency bumps made five. The blog previewed the Java agent 3.0, targeted for October, with 2.32.0 as its release candidate.
Envoy shipped four patch releases on October 6 — v1.39.3, v1.38.6, v1.37.8 and v1.36.12 — tracked here for releases only. And its AI gateway is now Agent Router, shipping v1.2.0 under the new name.
OTLP merged two dependency bumps, OpenMetrics one synced file. CloudEvents and xDS merged nothing — CloudEvents is stable at 1.0.2, finished, not dead; its weekly call did its work in xRegistry this week.

🔐 Identity, Policy, Supply Chain
TUF released v1.0.37 with one normative clarification. #327 from @cyphar: the spec’s wording implied a client should keep a global list of roles walked and never walk into the same role twice, even down different delegation paths — which was meant only to stop cycles. Skipping silently “could potentially allow a delegated role A to mask entries from a different delegated role B.” Unlikely to be practical, the author says, “but it’s better to be safe than sorry.” Now roles are skipped only when they recur in the same path.
OCI Runtime relaxed a rule to match reality. #1324 from @kolyshkin allows delete of a container in the created state — which runc and crun have both done since before runtime-spec 1.0.0 — while keeping the old behaviour, an error, valid. A specification catching up with its implementations, years later.
SPDX 2.3.1 is one issue from done. Ten merges, all from people, nearly all release preparation — title, version numbers, contributor list, a “Differences between V2.3.1 and V2.3” annex, and a publish workflow defaulting to v2.3.1. The 2.3.1 board went from 48/56 to 55/56. 3.1-rc2 is at 36/49, two weeks past its due date. SPDX’s blog counted four new SPDX tools in five weeks.
TRACE merged 20, 12 by people, including #477, a normative section on what a matching platform measurement actually covers on a measured-boot platform. PDPP extended its public review to October 26 (#399) because “several people said their comments are coming”; the v0.1.0 lock moves with it. OpenFeature now cuts specification releases with release-please (#440), the base of a provider-conformance stack.
SLSA, OSV Schema and Sigstore protobuf-specs merged only dependency bumps. SPIFFE, OCI Image, OCI Distribution, in-toto and Notary Project merged nothing.

💹 Financial Services Data Standards
FDC3 3.0 closed its board and shipped a beta. The 3.0 milestone reached 52/52, and v3.0.0-beta.1 went out on October 7 with 3.0 branding and a versioned website. A beta, not 3.0. Ten of eleven merges were human. The one I want to flag: #2204 adds a StartPayment intent and an fdc3.payment context “to support standardized institutional payments and blockchain settlement,” bridging to ISO 20022. Payments arriving in a desktop interoperability standard is new.
x402 joins the count — with a warning. The x402 Foundation is the Linux Foundation’s home for “the neutral open standard for internet-native payments,” and x402-foundation/x402 is now a registry row. But it is a monorepo: the specification lives under specs/, beside TypeScript, Python, Go and Java SDKs, contracts, examples and documentation. That is the CALM mistake waiting to happen again, so the rule is in the registry: a merge there is a specification change only if it touches specs/. This week, of eight merges, one did — #3666 from @phdargen adds facilitator-authored settlement metadata (m) to the builder-code extension, with deterministic CBOR encoding and a 65,535-byte limit. The rest were SDK and documentation work.
CALM, now read correctly. finos/calm-schema merged one change: #35, the project’s badge updated from Incubating to Graduated, plus a Cyber Resilience Act notice. No schema change — the schema is still the 1.2 published to npm on August 7. The tooling repository made the same Graduated change (#3282), shipped CLI 1.61.0, and is no longer counted here.
🏛 From the Foundations
The Linux Foundation released the OpenChain Automotive SBOM Framework 1.0 — a sector framework built on the SBOM standards this newsletter tracks. And OSERA reported that major banks back it, with “an open standard for AI-scale remediation and attestation of vulnerabilities” within its first 100 days. I have not yet found that standard’s repository; until I do, it is a claim in a press release, not a row in my registry.
AWS became a Platinum member of the Linux Foundation, and OVHcloud of the CNCF. The LF launched OpenGrid for electric-grid infrastructure. OpenSSF added four members, JetBrains among them, and released CRA resources; the Cyber Resilience Act showed up in the repositories too, as CRA sections added to CALM’s security files. OpenChain welcomed KushBitx to its conformance community.
The CNCF blog asked the question this newsletter keeps circling: “Don’t give AI agents root. Make them propose the next system state.”

🤫 The Quiet Ones
Eleven of thirty-four — 12, 19, 16, 13, 15, 19, 14, 15, 14, now 11.
Finished, not dead — stable, shipped, carrying load: CloudEvents (1.0.2, February 2022), OCI Image and OCI Distribution (v1.1.1), Notary Project, xDS, in-toto.
Quiet and worth watching: Arazzo, with three feature pull requests open for 1.2. AsyncAPI, fourth silent week in the specification repository. GraphQL, after installing release tooling last week. SPIFFE.
Silence that is the answer to the question I get asked most: Moonwalk. Tenth consecutive week.
📡 Channel Health
All twenty-five working feeds returned for the tenth consecutive week. Volume: 33 items, from 25.
AsyncAPI and SPDX are off the dormancy list — AsyncAPI posted its September community update, SPDX its tools roundup. The OpenAPI Initiative’s feed has been silent since July 22 — twelve weeks, in the week Overlay 1.2 reached SchemaStore. The news is happening; the channel is not carrying it.
Unchanged since issue one: Sigstore publishes no feed on any path, Envoy’s blog host does not resolve, and OpenSSF’s working feed remains /feed/.
The dormancy leaderboard, longest first: in-toto (May 2023) · CloudEvents (July 2024) · Notary Project (June 2025) · OCI (April 2026) · SLSA (May 2026) · gRPC (June 2026) · GraphQL (June 2026) · OpenAPI Initiative (July 2026) · OpenFeature (August 2026) · SPIFFE (August 2026) · FINOS (September 3) · Prometheus (September 21) · Protocol Buffers (September 22) · LF Edge (September 28) · LF Decentralized Trust (September 29) · LF Networking (October 1).
How This Was Made
Every number above came from one harvest run against the GitHub REST and GraphQL APIs and twenty-five feeds, over October 4 to October 11, 2026. Merged pull requests are counted by merged_at inside the window. Bot attribution is by author login — [bot] accounts and copybara — which counts claude[bot] as a bot and counts machine accounts with ordinary logins as people; this week that is five merges, disclosed in the split. Milestone values are GitHub’s own, read live and stored week over week.
The registry is now thirty-four specifications. CALM’s row moved from the tooling repository to finos/calm-schema, so week-over-week CALM numbers are not comparable with issues #01–#09. x402 was added with a dated probe note and a rule that only merges touching specs/ are reported as specification changes. MCP, x402, TRACE and PDPP are reported alongside the established thirty, never inside them.
Where this issue makes a claim about what a pull request did, I opened it and read its body. The lead quotes are from the merged text of SEP-2127 itself, not its pull-request description. The MCP governance items are from the core maintainers’ published notes of October 7 and the pull requests they name. The Overlay facts are from the release, the spec site and the SchemaStore pull requests.
Meetings. I attended three calls this week; two have no public recording, and from those I report only what I have also written about publicly. From every room I report outcomes only — something decided, merged, released or published — each checked against the repository or the group’s own published notes. Discussion, plans a group has not yet carried out, and personal remarks are left out.
Standing rules, applied throughout: a merge to a specification repository is not a change to a published specification — say draft when it is a draft (this week: JSON Schema’s uri fix, SPDX 2.3.1). Milestones and planning boards are project news, never specification news. The registry is a source of findings, never a boundary on them. Report the specifications’ dependencies as well — OAI/build-infra and specinfra/specref merged nothing. A claim repeated every issue gets re-verified every issue.
Predictions on the record: SEP-3398 passes and there is no December MCP specification release (carried). FDC3 3.0 final, not beta, by the end of November. SPDX 2.3.1 publishes by October 25. The A2A AI Catalog ships its 0.9 release candidate before AgentCon. The OpenAPI security proposal gets its complete example before its first approval (carried). Arazzo 1.2 by mid-November (carried).
