| Bearer token |
Requests without the exact token get 401. The comparison runs in constant time. |
| OAuth 2.1 |
/mcp supports OAuth with PKCE (S256) and dynamic client registration. Approving a client requires the access key. Access tokens last 1 hour; refresh tokens rotate. Grants are stored in the 911cpb-mcp-oauth KV namespace. |
| Bearer token / API key |
X-API-Key: <token> is accepted as an alternative header for the same token. |
| Path check |
Only /mcp, /api/* and the public /openapi.json are served; everything else returns 404. |
| Statement checks |
One read-type statement per call; transaction control and SET are rejected (details). |
READ ONLY transaction |
Postgres refuses writes, including writes hidden in CTEs. |
| Aurora reader endpoint |
Connects to a read replica, which can’t write to tables at all. |
| Database permissions |
The skye role lacks write grants on at least some tables. |
| Timeout & row cap |
15 s per statement, 500 rows per response. |