2026-05-18 Commonalities MCP Enablement Program Minutes
Community Attendees:
@Rafal Artych @Herbert Damker @Sébastien Dewet @ABOUCHI, Aziz @Jan Friman @Masaharu Hattori @Surajj Jaggernath @Leo Chely @Ben Hepworth @Mark Cornall @Nick Venezia
Community Attendees:
@Jesús Peña García-Oliva @pedro.diezgarcia@telefonica.com @Pierre Close Neeraj Dahiya (Tanla) @diego.gonzalezmartinez Mayumi Ohsugi - NTT, Yannick Le Saout (Orange)
LF Staff:
Agenda
The project's Antitrust Policy is linked from the LF and project websites. The policy is important when multiple companies, including potential industry competitors, are participating in meetings. Please review it, and if you have any questions, please contact your company’s legal counsel. Members of the LF may contact Andrew Updegrove at the firm Gesmer Updegrove LLP, which provides legal counsel to the LF.
API Design Guide Enhancements
Tool Definition Guide
Security & Consent Guidance
Minutes
API Design Guide Enhancements
https://github.com/camaraproject/Commonalities/issues/587
Good operationIds
https://github.com/camaraproject/Commonalities/issues/623
All operationIds must follow the
verbNounpattern in lowerCamelCaseWhen two operations share the same
verbNoun, a qualifier must be inserted between verb and noun asverbQualifierNoun orverbNounQualifier
Use only verbs from the approved list?
Should OperationIds must be unique across all OpenAPI documents that will be merged into a single MCP server?
operationId length < 64 chars (48 chars name +16 chars prefix)
# | Severity | Rule | Affected today |
|---|---|---|---|
1 | MUST |
| 5 KYC operations |
2 | SHOULD |
| 10 subscription-related operations |
3 | MUST |
| ~14 operations (eSIM, NumberVerification, KYC, verb-only |
4 | MUST | No HTTP-method prefix on the verb (excluding | 4 operations ( |
5 | MUST | No version marker ( | 0 — pure future-protection |
6 | SHOULD | One read verb per document (within-spec consistency) | 7 specs mix |
7 | SHOULD | Unique within document | 1 spec (WebRTC reuses an op name for its callback) |
Decent Descriptions
https://github.com/camaraproject/Commonalities/issues/624
The operation
descriptionMUST NOT be the verbatim string identical to the operationsummary
# | Severity | Rule | Affected today |
9 | MUST | Operation | 18 operations |
10 | MUST | Operation | 26 operations |
11 | MUST | Operation | Most mature APIs |
(existing) | MUST | Property | 1,674 properties |
12 | SHOULD | Enum descriptions enumerate per-value semantics when values aren't self-evident, using the markdown-bullet format already used by 14.6% of the cohort | 345 enums |
Clean Schemas
Examples
```markdown
## 10. AI and MCP consumer considerations
The rules in §5.7.2 and §5.8 above include several requirements that
originate from how AI agents — particularly clients of the Model
Context Protocol (MCP) — consume OpenAPI specifications. This section
explains the reasoning. It is informative; the normative rules are
in the referenced sections.
### 10.1 What an MCP client sees
When an OpenAPI document is exposed via an MCP server, each operation
typically becomes one "tool" in a flat catalog the LLM can choose from.
The tool's name is derived from `operationId`. The tool's description
is derived from `summary` and/or `description` (varies by bridge). The
tool's input schema is derived from the flattened union of path / query /
header / body parameters with all `$ref`s inlined. `info.description`
is generally NOT surfaced.
### 10.2 Why operationId shape matters
Tool names that look structurally similar (e.g. `getX` next to
`retrieveX` for similar resources) make the LLM less reliable at
picking the correct one. The within-spec consistency rule and the
verbNoun shape requirement address this.
Tool names also have hard ceilings imposed by vendor APIs (64 chars on
Anthropic and OpenAI; effectively less after client prefixing). The
length limits in §5.7.2 reflect those ceilings.
### 10.3 Why description content matters
A tool description is the LLM's only signal for selecting the operation.
Descriptions that paraphrase the summary, or that lean on `info.description`
for content, lose that signal at the bridge boundary. The content
checklist in §5.7.2 helps ensure each description is sufficient by itself.
### 10.4 What lives where
| Information | Location | Reaches MCP client? |
|---|---|---|
| Operation purpose | Operation `description` | Yes |
| Parameter meaning | Parameter `description` | Yes |
| Format constraint | Schema `description` (often via `$ref`) | Yes (bridges inline) |
| Enum value meanings | Schema `description` of the enum | Yes |
| Result branching | Response schema property `description` | Yes |
| Authentication overview | `info.description` § Authorization | No (deployment-specific) |
| Additional error responses | `info.description` § Additional errors | No (deployment-specific) |
| Multi-SIM, identification-from-token rules | `info.description` — but MUST also be reflected on the operations they affect | Yes, if mirrored to operations |Tool Definition Guide
https://github.com/camaraproject/Commonalities/issues/588
Security & Consent Guidance
https://github.com/camaraproject/IdentityAndConsentManagement/issues/347
AOB
Concern | Human-only API docs | MCP-targeted |
|---|---|---|
Cross-tool disambiguation | Implicit (humans read the section header / TOC) | Must be inline in description — e.g. "use this when…; if you only need IDs, use |
When NOT to use | Rarely written | Anthropic explicitly recommends this be in every description (Define tools) |
Discovery hints between tools | A human reads the spec linearly | Tool needs to explicitly say "to obtain an X, first call Y" because the LLM doesn't browse (Speakeasy example) |
Negative / boundary constraints | "ticker must be valid" | "ticker must be a valid symbol for a publicly traded company on a major US stock exchange like NYSE or NASDAQ" (Claude docs example) — explicit, exhaustive |
Param-name precision | "user" might be fine in context |
|
Length budget | No hard cap | 64-char combined name budget after client prefixing; descriptions consume scarce input tokens (Claude tool-use overview) |
Auth flows | Detailed in | Invisible to the LLM unless surfaced in description |
Response post-conditions | Tested by humans | "What you can rely on the tool returning" should be in the description so the LLM knows whether to chain another call |
Implicit conventions | OK to assume context | Stated explicitly — e.g. "default unit is meters", "date format is RFC 3339" — folded into description text rather than only in |