- OAuth 2.1 (recommended for interactive MCP clients like Claude and ChatGPT)
- API keys (recommended for your own agents and scripts)
OAuth 2.1
MCP-aware clients walk the flow automatically the first time they connect tohttps://app.adstellar.ai/api/mcp:
- The server answers
401with aWWW-Authenticateheader pointing at the discovery metadata (/.well-known/oauth-protected-resource). - The client registers itself via Dynamic Client Registration (RFC 7591) at
/api/oauth/register. - You’re redirected to the AdStellar consent screen: pick the team and the scopes to grant.
- The client exchanges the resulting code for an access + refresh token pair (PKCE, S256-only) at
/api/oauth/token.
OpenID Connect
The authorization server is also an OpenID Connect provider, so clients that need a verified identity (for example ChatGPT Enterprise domain restrictions) can request theopenid and email scopes alongside the tool scopes.
- Discovery:
https://app.adstellar.ai/.well-known/openid-configuration - Signing keys:
https://app.adstellar.ai/.well-known/jwks.json(RS256) - UserInfo:
GET https://app.adstellar.ai/api/oauth/userinfowith the access token as a Bearer header
openid is granted, the token response includes an id_token with sub, aud, iss, exp, iat, the request nonce if one was sent, and, with the email scope, email and email_verified: true. Every AdStellar account has a verified email, so the claim is always true. The openid and email scopes grant no tool access and are not available for API keys.
API keys
For unattended agents, create a team-scoped key (ast_live_...) in Settings → Developers or via the management API (owner/admin):
Scopes
Tools you don’t have the scope for are hidden from
tools/list and rejected with a clear error.
Use the credential
initialize, ping and tools/list answer unauthenticated so a client can read every tool and its securitySchemes before linking an account. With a credential, tools/list narrows to the tools that credential’s scopes allow. tools/call always requires one.
Rate limits
120 requests per minute per credential, per endpoint.429 responses include a Retry-After header.
Security notes
- Keys and tokens are never logged; only hashes are stored.
- Generation tools deduct credits from your team’s balance exactly as if you’d run them in the app.
- Every tool that changes a live ad, spends credits, or creates a rule is two-step: called without
confirmationTokenit returns a preview plus a short-lived token (10 minutes, bound to the credential, tool and exact arguments); the change only happens when the tool is called again with that token. Agents must show the preview and get explicit approval in between. launch_campaignpublishes paused by default; passstatus: "active"to start delivery immediately. It costs the same AI credits as launching in the app.- Write scopes can only be granted by team owners/admins on the consent screen.
- Revoke API keys anytime (
DELETE /api/settings/api-keys/<id>?teamId=...); OAuth grants expire with their refresh tokens.