Skip to main content
The AdStellar MCP server and REST API support two credentials:
  1. OAuth 2.1 (recommended for interactive MCP clients like Claude and ChatGPT)
  2. API keys (recommended for your own agents and scripts)
Both resolve to the same team + scopes; every tool runs as your team with full tenant isolation.

OAuth 2.1

MCP-aware clients walk the flow automatically the first time they connect to https://app.adstellar.ai/api/mcp:
  1. The server answers 401 with a WWW-Authenticate header pointing at the discovery metadata (/.well-known/oauth-protected-resource).
  2. The client registers itself via Dynamic Client Registration (RFC 7591) at /api/oauth/register.
  3. You’re redirected to the AdStellar consent screen: pick the team and the scopes to grant.
  4. The client exchanges the resulting code for an access + refresh token pair (PKCE, S256-only) at /api/oauth/token.
Access tokens live 1 hour; refresh tokens 30 days and rotate on every use. Nothing needs to be configured by hand — just paste the MCP URL into your client. Endpoints:

API keys

For unattended agents, create a team-scoped key (ast_live_...) in Settings → Developers or via the management API (owner/admin):
The plaintext key is returned exactly once — only its SHA-256 hash is stored.

Scopes

Tools you don’t have the scope for are hidden from tools/list and rejected with a clear error.

Use the credential

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.
  • create_launch_draft never publishes ads — launching real campaigns (spend) stays a human action in the dashboard.
  • Revoke API keys anytime (DELETE /api/settings/api-keys/<id>?teamId=...); OAuth grants expire with their refresh tokens.