Connecting from claude.ai (custom connector)
-
In claude.ai, go to Settings → Connectors → Add custom connector and enter:
- Click Connect. Your browser opens Shipstar’s consent page (sign in first if needed).
- Pick the project the connection should operate on — every authorization is scoped to exactly one Shipstar project — and approve.
- You’re returned to claude.ai with the 23 Shipstar tools available in any chat.
Prefer a static token for scripts or CI? Dashboard API tokens work as plain bearer tokens on the same endpoint — see the MCP overview.
Discovery
Standard metadata at themcp.shipstar.ai domain root, also served with the resource path appended (RFC 8414 / RFC 9728 path-insertion):
https://api.shipstar.ai/oauth/...), as advertised in the metadata — both hostnames are served by the same backend, so the documents resolve on either.
Endpoints: /oauth/authorize, /oauth/token, /oauth/register, /oauth/revoke. Unauthenticated requests to /mcp return 401 with a WWW-Authenticate challenge pointing at the protected-resource metadata, so spec-compliant clients bootstrap the flow from a bare URL.
Client registration
Dynamic client registration (RFC 7591) is open —POST /oauth/register with your client metadata (rate-limited per IP). Redirect URIs must match exactly at authorization time. Public clients (token_endpoint_auth_method: "none", the default) are supported for native/desktop apps; confidential clients receive a client_secret (stored hashed, client_secret_expires_at: 0 = non-expiring). Client auth at /token is accepted as form parameters or HTTP Basic.
Authorization
- PKCE S256 is required on every authorization request (
code_challenge_method=S256;plainis rejected). /oauth/authorizedoes not itself log the user in: it validates the request, then redirects to Shipstar’s consent page (app.shipstar.ai/oauth/authorize), which is login-gated. The consent page shows your client’s name and logo and asks the user to select a project — the minted grant is scoped to that project.- On approval the user agent returns to your redirect URI with
code+state; denial returnserror=access_denied. - Consent tickets expire after 10 minutes; authorization codes expire after 10 minutes and are single-use.
Scope
A single scope:mcp. It is granted by default when unspecified and covers all 23 tools. Effective access control is the per-project grant chosen at consent — a token can only ever see the one project it was authorized for.
Tokens
Tokens are opaque (not JWTs) and stored hashed server-side. Refresh rotation is strict with replay detection: each refresh revokes the old pair and issues a new one, and presenting an already-revoked refresh token revokes the entire token chain for that grant. Store the new pair from every refresh response.
Revocation
RFC 7009POST /oauth/revoke — always returns 200, even for unknown tokens. Expect calls to start failing with 401 at any time (user revocation, chain revocation after replay); re-run the authorization flow to reconnect.