Brooklinen · Authentication Profile
Brooklinen Authentication
Authentication
Brooklinen secures its APIs with oauth2, openIdConnect, and none across 4 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the authorizationCode flow(s).
ecommerceretaildirect-to-consumerhome-goodsbeddingshopifyagentic-commerceuniversal-commerce-protocolmcpagent-nativecatalogcheckout
Methods: oauth2, openIdConnect, none
Schemes: 4
OAuth flows: authorizationCode
API key in:
Security Schemes
none none
ucp-agent-profile agentIdentity
· in: header ()
shopify-customer-account-oauth2 oauth2
· flows: authorizationCode
shopify-customer-account-oidc openIdConnect
Source
Authentication Profile
generated: '2026-08-02'
method: probed
source:
- https://www.brooklinen.com/.well-known/oauth-authorization-server
- https://www.brooklinen.com/.well-known/oauth-protected-resource
- https://ucp.dev/2026-04-08/services/shopping/mcp.openrpc.json
summary:
types: [oauth2, openIdConnect, none]
api_key_in: []
oauth2_flows: [authorizationCode]
pkce: [S256]
bearer: header
note: >-
Brooklinen runs no developer API key program. Two distinct authentication postures exist: the read-only
storefront JSON surface is fully anonymous, and the transactional UCP/MCP surface is gated by agent
identity (a resolvable UCP agent profile) with customer authorization handled by Shopify's OAuth 2.0 /
OIDC customer account issuer.
schemes:
- name: none
type: none
applies_to: openapi/brooklinen-storefront-openapi.yml
description: >-
The documented read-only storefront JSON endpoints (/products.json, /products/{handle}.json,
/collections/{handle}/products.json, /search/suggest.json, /cart.js) require no credential. Confirmed by
anonymous HTTP 200 on each, 2026-08-02.
- name: ucp-agent-profile
type: agentIdentity
in: header
parameter_name: UCP-Agent
request_property: meta.ucp-agent.profile
required: true
applies_to: https://www.brooklinen.com/api/ucp/mcp
description: >-
The MCP endpoint requires the calling agent to identify itself with a URI pointing at its own UCP profile
document, which the merchant fetches. This is agent identity, not user authorization — it gates
tools/list as well as tool invocation. An anonymous or unresolvable profile returns HTTP 422 with
JSON-RPC error -32001 (`invalid_profile_url`).
sources: [https://ucp.dev/2026-04-08/services/shopping/mcp.openrpc.json]
- name: shopify-customer-account-oauth2
type: oauth2
applies_to: https://www.brooklinen.com
description: >-
OAuth 2.0 authorization code flow with PKCE against Shopify's customer account issuer for this shop,
fronted on Brooklinen's own account subdomain. Covers customer account data and the customer account MCP
API.
issuer: https://shopify.com/authentication/9517126
flows:
- flow: authorizationCode
authorizationUrl: https://account.brooklinen.com/authentication/oauth/authorize
tokenUrl: https://account.brooklinen.com/authentication/oauth/token
scopes:
openid: OpenID Connect authentication.
email: Access to the customer's email address.
customer-account-api:full: Full access to the Shopify Customer Account API for this shop.
customer-account-mcp-api:full: Full access to the Customer Account MCP API for this shop.
grant_types_supported: [authorization_code, refresh_token, 'urn:ietf:params:oauth:grant-type:jwt-bearer']
code_challenge_methods_supported: [S256]
token_endpoint_auth_methods_supported: [client_secret_basic]
end_session_endpoint: https://account.brooklinen.com/authentication/logout
sources: [https://www.brooklinen.com/.well-known/oauth-authorization-server]
- name: shopify-customer-account-oidc
type: openIdConnect
applies_to: https://www.brooklinen.com
description: >-
The same issuer advertises OpenID Connect metadata — JWKS, RS256 id_token signing, and standard claims —
though no /.well-known/openid-configuration is served at the store origin.
jwks_uri: https://account.brooklinen.com/authentication/.well-known/jwks.json
id_token_signing_alg_values_supported: [RS256]
subject_types_supported: [public]
response_types_supported: [code]
claims_supported: [iss, sub, aud, exp, iat, nonce, sid, email, email_verified]
sources: [https://www.brooklinen.com/.well-known/oauth-authorization-server]
protected_resource:
resource: https://www.brooklinen.com
authorization_servers:
- https://account.brooklinen.com
- https://shopify.com/authentication/9517126
bearer_methods_supported: [header]
spec: RFC 9728
sources: [https://www.brooklinen.com/.well-known/oauth-protected-resource]
human_in_the_loop:
required_for: [complete_checkout]
policy: >-
Brooklinen's /agents.md and /robots.txt both state that checkout, payment and order placement must not be
completed automatically. Agents must obtain explicit, contemporaneous human approval at the moment of
payment, or route the purchase through Shop Pay via https://shop.app/SKILL.md.
x-evidence:
fetched: '2026-08-02'
probes:
- {url: 'https://www.brooklinen.com/.well-known/oauth-authorization-server', http_status: 200}
- {url: 'https://www.brooklinen.com/.well-known/oauth-protected-resource', http_status: 200}
- {url: 'https://www.brooklinen.com/.well-known/openid-configuration', http_status: 404}
- {url: 'https://www.brooklinen.com/products.json?limit=1', http_status: 200, auth: none}
- {url: 'https://www.brooklinen.com/api/ucp/mcp', http_status: 422, auth: none}