> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getmcpulse.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Provision Account

> Creates everything a newly verified person needs: the account, their membership, the sample MCP, then a Polar customer and the billing row carrying its id — the customer before the row, so a billing row is never written without one.

An invitation short-circuits all of it: an address somebody already invited joins that account instead, with the role it was given.

Called by the dashboard the moment a magic link produces a session, which is the only moment a verified user exists and has not yet been settled. Supabase has no "email verified" hook, and this is the closest honest thing to one: nothing can reach it without a verified session.

Idempotent. Somebody who already has an account gets their context back unchanged, so a second link, a refresh or a stale tab costs one query.



## OpenAPI

````yaml https://api.getmcpulse.com/docs/openapi.json post /v1/account/provision
openapi: 3.1.0
info:
  title: MCPulse API
  version: 1.0.0
  description: >-
    Analytics for MCP servers.


    The API is the product — the dashboard is one client and an MCP server will
    be another. Every number here is computed server-side so that both get the
    same answer.


    **Two kinds of auth.** Ingest uses an MCP API key (`mp_live_…`). Everything
    else uses a Supabase access token from the browser session.
servers:
  - url: https://mcpulse-production.up.railway.app
    description: MCPulse API
security: []
tags:
  - name: ingest
    description: What the customer's server sends
  - name: mcps
    description: MCPs and ownership
  - name: metrics
    description: Everything the dashboard reads
  - name: keys
    description: Ingest API keys
  - name: account
    description: Account, team and usage
paths:
  /v1/account/provision:
    post:
      tags:
        - account
      summary: Provision Account
      description: >-
        Creates everything a newly verified person needs: the account, their
        membership, the sample MCP, then a Polar customer and the billing row
        carrying its id — the customer before the row, so a billing row is never
        written without one.


        An invitation short-circuits all of it: an address somebody already
        invited joins that account instead, with the role it was given.


        Called by the dashboard the moment a magic link produces a session,
        which is the only moment a verified user exists and has not yet been
        settled. Supabase has no "email verified" hook, and this is the closest
        honest thing to one: nothing can reach it without a verified session.


        Idempotent. Somebody who already has an account gets their context back
        unchanged, so a second link, a refresh or a stale tab costs one query.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                nullable: true
        '401':
          description: Invalid or missing token
        '403':
          description: Your role does not permit this

````