Skip to content

Discovery

Find the MCP server from the domain.

Read the AI Catalog, then the server card, then connect. Markdown: /docs/discovery.md · MCP guide.

From the domain to the server

A client that only knows cooperemail.com reads the AI Catalog, then the MCP Server Card, then connects. GET https://cooperemail.com/.well-known/ai-catalog.json returns AI Catalog spec 1.0 with Content-Type application/ai-catalog+json. The entry identifier is urn:air:cooperemail.com:mcp:cooper-email and its type is application/mcp-server-card+json. The entry url is https://cooperemail.com/mcp/server-card.

GET that url with Accept: application/mcp-server-card+json. The card name is com.cooperemail/cooper-email. remotes lists one streamable-http endpoint, https://cooperemail.com/mcp. supportedProtocolVersions is the set the MCP route accepts. The card does not list tools, resources, or prompts. Call tools/list after you connect.

How to connect

Sign in with OAuth 2.1 and PKCE. The protected-resource metadata is https://cooperemail.com/.well-known/oauth-protected-resource and the authorization server is https://cooperemail.com/.well-known/oauth-authorization-server. A script can send Authorization: Bearer coop_live_… instead. That header is optional on the card. cooper_onboard and POST /api/v1/onboard mint a key.

The older registry cards stay at https://cooperemail.com/.well-known/mcp.json and https://cooperemail.com/.well-known/mcp/server-card.json. Their JSON bodies are unchanged. /.well-known/cooper-email.json lists the new URLs next to those paths.

Caching and CORS

Both new URLs send Access-Control-Allow-Origin: *, Access-Control-Allow-Methods: GET, HEAD, OPTIONS, Access-Control-Allow-Headers: Content-Type, If-None-Match, and Access-Control-Expose-Headers: ETag. OPTIONS returns 204. Cache-Control is public, max-age=3600. A strong ETag is the SHA-256 of the body. If-None-Match with that ETag returns 304. HEAD returns the same headers and an empty body. A browser or curl with no Accept header still receives JSON.

curl

These commands read the catalog, the card, and then open the MCP endpoint.

curl -sS -D - https://cooperemail.com/.well-known/ai-catalog.json -o /tmp/ai-catalog.json
curl -sS -D - -H "Accept: application/mcp-server-card+json" https://cooperemail.com/mcp/server-card -o /tmp/server-card.json
curl -sS -D - -X POST https://cooperemail.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer coop_live_YOUR_KEY" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'