Sitefire · Authentication Profile
Sitefire Authentication
Authentication
Sitefire secures its APIs with oauth2 and none across 2 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the authorizationCode flow(s).
CompanyGenerative Engine OptimizationAI VisibilityMarketingSEOAnalyticsArtificial IntelligenceContent GenerationMCPAgent
Methods: oauth2, none
Schemes: 2
OAuth flows: authorizationCode
API key in:
Security Schemes
mcp-oauth oauth2
· flows: authorizationCode
none none
Source
Authentication Profile
generated: '2026-08-13'
method: searched
source: https://app.sitefire.ai/api/mcp/oauth-metadata
docs: https://sitefire.ai/docs/mcp.md
notes: >-
Sitefire runs two authentication postures, and they are opposites. The hosted
MCP server (Spark) is protected by OAuth 2.1 and advertises real RFC 9728
protected-resource metadata: an unauthenticated POST to the MCP endpoint
returns 401 with a WWW-Authenticate Bearer challenge naming the metadata URL,
which resolves to a Supabase-hosted authorization server publishing RFC 8414
metadata (PKCE S256, dynamic client registration, authorization_code +
refresh_token). The public Book Demo REST API declares no security scheme at
all and its own llms.txt states "No API key required. The API is public."
Nothing was derived from OpenAPI securitySchemes because the only published
spec declares none - derive-authentication.py returned zero schemes for this
provider. Everything below was probed live.
summary:
types: [oauth2, none]
api_key_in: []
oauth2_flows: [authorizationCode]
surfaces: 2
schemes:
- name: mcp-oauth
type: oauth2
applies_to: https://app.sitefire.ai/api/mcp
sources: [https://app.sitefire.ai/api/mcp/oauth-metadata]
bearer_methods_supported: [header]
discovery:
protected_resource_metadata: https://app.sitefire.ai/api/mcp/oauth-metadata
protected_resource_metadata_spec: RFC 9728 (OAuth 2.0 Protected Resource Metadata)
challenge_header: 'WWW-Authenticate: Bearer resource_metadata="https://app.sitefire.ai/api/mcp/oauth-metadata"'
canonical_well_known_path_served: false
canonical_well_known_note: >-
The metadata document is real and machine-readable but is served from
/api/mcp/oauth-metadata rather than the RFC 9728 canonical location
/.well-known/oauth-protected-resource. The canonical path returns the
app's single-page-app HTML shell (soft 200), not a document. Because of
that, no WellKnown pointer is emitted for this provider.
file: sitefire-mcp-protected-resource.json
flows:
- flow: authorizationCode
authorizationUrl: https://qhfesxmsojjleewjufcn.supabase.co/auth/v1/oauth/authorize
tokenUrl: https://qhfesxmsojjleewjufcn.supabase.co/auth/v1/oauth/token
registrationUrl: https://qhfesxmsojjleewjufcn.supabase.co/auth/v1/oauth/clients/register
refreshSupported: true
pkce: [S256, plain]
scopes: [openid, profile, email, phone, offline_access]
authorization_server:
issuer: https://qhfesxmsojjleewjufcn.supabase.co/auth/v1
operator: Supabase (third-party identity platform used by Sitefire)
metadata_spec: RFC 8414 (OAuth 2.0 Authorization Server Metadata)
metadata_url: https://qhfesxmsojjleewjufcn.supabase.co/auth/v1/.well-known/oauth-authorization-server
jwks_uri: https://qhfesxmsojjleewjufcn.supabase.co/auth/v1/.well-known/jwks.json
userinfo_endpoint: https://qhfesxmsojjleewjufcn.supabase.co/auth/v1/oauth/userinfo
dynamic_client_registration: true
id_token_signing_alg_values_supported: [RS256, HS256, ES256]
token_endpoint_auth_methods_supported: [client_secret_basic, client_secret_post, none]
file: sitefire-mcp-authorization-server.json
user_experience: >-
Browser sign-in to a Sitefire account. Documented per client - Claude.ai
custom connector, `claude mcp add --transport http --scope user sitefire
https://app.sitefire.ai/api/mcp`, ChatGPT developer-mode connector, and
`codex mcp add sitefire --url https://app.sitefire.ai/api/mcp` followed by
`codex mcp login sitefire`.
- name: none
type: none
applies_to: https://sitefire.ai/api
sources: [https://sitefire.ai/llms.txt, openapi/sitefire-book-demo-api-openapi.yml]
description: >-
The Book Demo API is documented as public and unauthenticated. The OpenAPI
declares no securitySchemes and no security requirement on either operation.
note: >-
See lifecycle/sitefire-lifecycle.yml - both documented Book Demo routes were
probed on 2026-08-13 and neither resolved, so the unauthenticated posture
could not be exercised end to end.
x-evidence:
- url: https://app.sitefire.ai/api/mcp
method: POST
http_status: 401
note: JSON-RPC tools/list; returned {"jsonrpc":"2.0","error":{"code":-32000,"message":"Unauthorized"}} plus the WWW-Authenticate Bearer challenge
checked: '2026-08-13'
- url: https://app.sitefire.ai/api/mcp/oauth-metadata
http_status: 200
content_type: application/json
checked: '2026-08-13'
- url: https://qhfesxmsojjleewjufcn.supabase.co/auth/v1/.well-known/oauth-authorization-server
http_status: 200
content_type: application/json
checked: '2026-08-13'
- url: https://app.sitefire.ai/.well-known/oauth-protected-resource
http_status: 200
content_type: text/html
note: SPA shell, not a document - rejected as a soft 200
checked: '2026-08-13'