Skip to content

Client Compatibility

Jm Rohmer edited this page Jul 18, 2026 · 2 revisions

Client Compatibility

This page tracks client-facing expectations. Treat live client behavior as drift-prone and re-test before claiming support after OAuth or discovery changes.

Current Client Targets

Client Expected behavior
Claude.ai custom connector OAuth + MCP discovery; a client with the write scope should see the full write/build/admin tool set after authenticated reconnect
Claude Desktop Connects to https://mcp.arleo.eu/mcp with MCP-compatible discovery
ChatGPT custom connector OAuth flow and scoped tool access
Le Chat custom connector OAuth flow and scoped tool access, same 2-scope (read/write) model as the other clients
MCP Inspector Anonymous read-only MCP inspection

Since #450 there is no separate "admin" scope — a client either has read (auto-registered, no secret) or write (registered client, implies read plus every build/admin/diagnostic tool). See Scope and Tool Matrix.

URLs to Configure

Use the MCP endpoint for MCP clients:

https://mcp.arleo.eu/mcp

OAuth issuer:

https://mcp.arleo.eu

Do not configure the MCP endpoint as https://mcp.arleo.eu unless a client explicitly expects the issuer/base URL. /mcp is the JSON-RPC MCP endpoint.

Claude.ai Notes

If Claude connects but only shows anonymous/read-only tools:

  1. Remove and recreate the connector to clear client-side cache.
  2. Confirm the OAuth flow grants the intended scope.
  3. Confirm tools/list is called with Authorization: Bearer ....
  4. Confirm /mcp responses include cache controls that prevent an anonymous tool list from being reused for an authenticated request.
  5. Confirm admin tools are gated by the token scope, not by client_id alone.

Useful headers for /mcp:

Cache-Control: no-store
Vary: Authorization
WWW-Authenticate: Bearer ...

ChatGPT Notes

ChatGPT redirect URI handling is strict. Do not allow arbitrary redirect URIs to fix a client issue.

Expected policy:

  • accepted: known HTTPS callbacks for ChatGPT
  • rejected: HTTP, similar malicious hosts, unknown domains, wrong paths
  • unknown DCR clients: no write/admin escalation

Interop Smoke

Run:

SMOKE_LIVE=1 ./scripts/smoke-agent-interop.sh

Optional bearer-token checks should be provided via environment variables and must never be printed in logs:

READ_BEARER=REDACTED ADMIN_BEARER=REDACTED SMOKE_LIVE=1 ./scripts/smoke-agent-interop.sh

Before sharing output publicly, redact any bearer token, authorization code, client secret, or cookie.

Clone this wiki locally