B12 · Authentication Profile

B12 Authentication

Authentication

B12 secures its APIs with none across 2 declared security schemes, as derived from its OpenAPI definitions.

CompanyEnterpriseWebsite BuilderAINo-CodeSmall BusinessWebsite GenerationModel Context ProtocolSEOPayments
Methods: none Schemes: 2 OAuth flows: API key in:

Security Schemes

anonymous none
anonymous none

Source

Authentication Profile

b12-authentication.yml Raw ↑
generated: '2026-08-13'
method: probed
source: https://mcp.b12.io/mcp
note: >-
  Not derived from OpenAPI — B12 publishes none. This profile was established by
  calling the live MCP endpoint anonymously and confirming it answers. The
  authentication model of B12's only machine-callable surface is: there is none.

summary:
  types: [none]
  api_key_in: []
  oauth2_flows: []
  authenticated: false

schemes:
- name: anonymous
  type: none
  surface: mcp
  endpoint: https://mcp.b12.io/mcp
  sources: [mcp/b12-mcp.yml]
  evidence: >-
    POST tools/list and POST initialize both returned HTTP 200 with a complete
    result and no Authorization header supplied. No 401, no WWW-Authenticate,
    no OAuth challenge.
- name: anonymous
  type: none
  surface: mcp
  endpoint: https://b12.io/mcp
  sources: [mcp/b12-mcp.yml]
  evidence: POST tools/list returned HTTP 200 unauthenticated.

oauth_discovery:
  oauth_authorization_server: 404
  oauth_protected_resource: 404
  openid_configuration: 404
  note: >-
    Probed on both www.b12.io and mcp.b12.io. No OAuth or OIDC discovery
    document is served, consistent with an unauthenticated surface. No
    scopes/ artifact is written — there is no scope surface to record.

user_authentication:
  note: >-
    End users authenticate to the B12 product itself at https://b12.io/signup/
    and https://b12.io/dashboard. That is a human web login, not an API
    credential, and it is not reachable by an agent. The generate_website tool
    deliberately defers it: the tool returns a signup link and the human
    authenticates afterwards.

agent_implications:
  can_call_unauthenticated: true
  credential_required: false
  identity_of_caller: not established
  note: >-
    An agent can call generate_website with no credential and no account. B12
    cannot attribute the call to a customer, which is why the tool returns a
    claim link instead of a provisioned resource. This is a deliberate design,
    not a gap, but it does mean there is no per-caller authorization, no
    revocation path, and no way for a customer to scope what an agent may do on
    their behalf.

x-evidence:
  fetched: '2026-08-13'
  probes:
  - url: https://mcp.b12.io/mcp
    method: POST initialize
    http_status: 200
    auth_supplied: none
  - url: https://mcp.b12.io/mcp
    method: POST tools/list
    http_status: 200
    auth_supplied: none
  - url: https://mcp.b12.io/.well-known/oauth-protected-resource
    http_status: 404
  - url: https://mcp.b12.io/.well-known/oauth-authorization-server
    http_status: 404
  - url: https://www.b12.io/.well-known/openid-configuration
    http_status: 404