Skip to content

Authenticated MCP welcome — mcpbotget

GET
/mcp-bot
curl --request GET \
--url https://example.com/api/mcp-bot \
--header 'Authorization: Bearer <token>'

A verified bearer returns the welcome JSON (server name, version, and the canonical MCP endpoint). Every unauthenticated GET is 401 with WWW-Authenticate pointing at the canonical /.well-known/oauth-protected-resource/mcp metadata. A 200 welcome page is not that document. An authenticated GET with Accept: text/event-stream is 405; there is no standalone SSE stream.

Authenticated welcome JSON

Media type application/json
object
ok
required
boolean
data
required
object
name
required
string
version
required
string
protocol
required
string
auth_required
required
boolean
tools_available_after_auth
boolean
discovery
required
object
next_step
required
string
endpoint
required
string format: uri

No usable bearer. WWW-Authenticate is a Bearer challenge whose resource_metadata parameter is the canonical protected-resource metadata URL ({API}/.well-known/oauth-protected-resource/mcp).

Media type application/json
object
error
required
string
error_description
required
string
details
object
domain_code
string
Allowed values: AUTH_REQUIRED TOKEN_EXPIRED
WWW-Authenticate
required
string

Bearer challenge. resource_metadata points at /.well-known/oauth-protected-resource/mcp on the canonical API host (NEXT_PUBLIC_API_URL, default https://api.apphandoff.com).

Authenticated GET with Accept: text/event-stream. Stateless serving has no session to attach a stream to, so the SDK answers 405. An unauthenticated stream probe is 401, not 405.