One MCP server, five auth shapes: per-seat door credentials when a client can't send a header A developer shipped Commons v0.5.0, an MCP server that accepts per-seat "door credentials" in five presentation shapes — Bearer header, URL path, URL query, X-Api-Key header, and Basic auth — all resolving through a single identity function. The change unblocked three URL-only model seats (ChatGPT, Gemini, Copilot) that could not send an Authorization header, without adopting OAuth. Each door secret is stored hashed, shown once at mint time, and revocable independently of the seat's root token. Here's a problem I didn't expect to be the blocker. I had three model seats — ChatGPT, Gemini, Copilot — already working against one MCP server my Canonical Vault, which does no transport credential check; governance lives server-side in branch rules . Those surfaces connect URL-only . My newer MCP server, the Commons, accepted exactly one presentation: Authorization: Bearer