What happens
At current main, the Python Flower Shop's /.well-known/ucp profile advertises four transports for dev.ucp.shopping, but only REST is actually served:
| advertised transport |
endpoint in profile |
observed behavior |
rest |
/ |
✅ works |
mcp |
/mcp |
tools/call returns -32000 "tools/call is not yet implemented on this sample's MCP endpoint; use the REST transport…" |
a2a |
/.well-known/agent-card.json |
HTTP 404 |
embedded |
null |
endpoint is literally None in the profile |
Verified by booting the server from main and probing each advertised endpoint.
Why this matters
Agents select a transport from the discovery profile — that's the point of discovery. A profile that advertises transports the server doesn't serve sends conformant agents into dead ends (e.g. an MCP-first agent picks /mcp and can never check out). It also makes the sample a misleading reference for the discovery contract itself: implementers copy this profile shape. (Related signal: #101's author was specifically trying to build against the MCP transport.)
Possible resolutions (maintainers' call)
- Trim the profile to what's served (smallest change): advertise
rest only until other transports are implemented — the profile becomes truthful today.
- Implement the advertised transports (most valuable):
tools/call for MCP would unlock MCP-transport conformance testing; happy to help here if useful.
- Some combination (e.g. trim
a2a/embedded, finish mcp).
Happy to send a PR for whichever direction you prefer.
What happens
At current
main, the Python Flower Shop's/.well-known/ucpprofile advertises four transports fordev.ucp.shopping, but only REST is actually served:rest/mcp/mcptools/callreturns-32000"tools/call is not yet implemented on this sample's MCP endpoint; use the REST transport…"a2a/.well-known/agent-card.jsonembeddednullNonein the profileVerified by booting the server from
mainand probing each advertised endpoint.Why this matters
Agents select a transport from the discovery profile — that's the point of discovery. A profile that advertises transports the server doesn't serve sends conformant agents into dead ends (e.g. an MCP-first agent picks
/mcpand can never check out). It also makes the sample a misleading reference for the discovery contract itself: implementers copy this profile shape. (Related signal: #101's author was specifically trying to build against the MCP transport.)Possible resolutions (maintainers' call)
restonly until other transports are implemented — the profile becomes truthful today.tools/callfor MCP would unlock MCP-transport conformance testing; happy to help here if useful.a2a/embedded, finishmcp).Happy to send a PR for whichever direction you prefer.