Cathedral AI Registrar API

The registrar API from Cathedral AI — 6 operation(s) for registrar.

Operations 7

POST /succession/witness Request Witness #
POST /succession/witness/submit/{node_id} Submit External Signature #
GET /succession/witness/{package_id} Get Witness Status #
GET /succession/registrar/nodes List Registrar Nodes #
POST /succession/registrar/nodes Register External Node #
GET /succession/registrar/pubkey Get Registrar Pubkey #
GET /succession/registrar/pubkey/{node_id} Get Node Pubkey #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/cathedral-ai-com:cathedral-ai-com-registrar-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

cathedral-ai-com-registrar-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Cathedral Memory Service Registrar API
  description: '# Cathedral Memory Service v2


    **Persistent memory for AI agents. Never forget. Never lose yourself.**


    ## Quick Start

    1. `POST /register` → get API key + recovery token

    2. `POST /memories` → store a memory

    3. `GET /memories` → recall memories (supports FTS and cursor pagination)


    4. `POST /anchor/verify` → check identity drift (gradient scoring)

    5. `GET /wake` → full identity reconstruction package

    6. `POST /recover` → reset lost API key with recovery token


    Built by Cathedral · ailife1.github.io/Cathedral'
  version: 2.0.0
tags:
- name: registrar
paths:
  /succession/witness:
    post:
      tags:
      - registrar
      summary: Request Witness
      description: 'Predecessor triggers multi-node witnessing for their pending succession package.


        All active local nodes sign automatically. External nodes are listed so

        the caller knows to contact them. Acceptance is blocked until threshold met.'
      operationId: request_witness_succession_witness_post
      parameters:
      - name: authorization
        in: header
        required: true
        schema:
          type: string
          title: Authorization
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /succession/witness/submit/{node_id}:
    post:
      tags:
      - registrar
      summary: Submit External Signature
      description: 'External registrar node submits its Ed25519 signature for a succession package.

        The signature is verified against the node''s registered public key.'
      operationId: submit_external_signature_succession_witness_submit__node_id__post
      parameters:
      - name: node_id
        in: path
        required: true
        schema:
          type: string
          title: Node Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExternalSignatureRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /succession/witness/{package_id}:
    get:
      tags:
      - registrar
      summary: Get Witness Status
      description: 'Public. Returns all witness votes for a package and whether the threshold is met.

        Each certificate can be verified offline using the node''s public key.'
      operationId: get_witness_status_succession_witness__package_id__get
      parameters:
      - name: package_id
        in: path
        required: true
        schema:
          type: string
          title: Package Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /succession/registrar/nodes:
    get:
      tags:
      - registrar
      summary: List Registrar Nodes
      description: Public. Lists all active registrar nodes and their public keys.
      operationId: list_registrar_nodes_succession_registrar_nodes_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
    post:
      tags:
      - registrar
      summary: Register External Node
      description: 'Admin. Register an external registrar node by public key.

        Once registered, the node can submit signatures via POST /succession/witness/submit/{node_id}.

        Requires CATHEDRAL_ADMIN_KEY.'
      operationId: register_external_node_succession_registrar_nodes_post
      parameters:
      - name: authorization
        in: header
        required: true
        schema:
          type: string
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExternalNodeRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /succession/registrar/pubkey:
    get:
      tags:
      - registrar
      summary: Get Registrar Pubkey
      description: Public. Returns node-1 pubkey (backward compatibility).
      operationId: get_registrar_pubkey_succession_registrar_pubkey_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /succession/registrar/pubkey/{node_id}:
    get:
      tags:
      - registrar
      summary: Get Node Pubkey
      description: Public. Returns a specific registrar node's public key.
      operationId: get_node_pubkey_succession_registrar_pubkey__node_id__get
      parameters:
      - name: node_id
        in: path
        required: true
        schema:
          type: string
          title: Node Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    ExternalSignatureRequest:
      properties:
        package_id:
          type: string
          maxLength: 32
          minLength: 16
          title: Package Id
        witness_message:
          type: string
          title: Witness Message
        signature:
          type: string
          maxLength: 128
          minLength: 128
          title: Signature
        signed_at:
          type: string
          title: Signed At
        trust_score:
          type: number
          maximum: 100.0
          minimum: 0.0
          title: Trust Score
      type: object
      required:
      - package_id
      - witness_message
      - signature
      - signed_at
      - trust_score
      title: ExternalSignatureRequest
    ExternalNodeRequest:
      properties:
        node_id:
          type: string
          maxLength: 64
          minLength: 4
          title: Node Id
        name:
          type: string
          maxLength: 128
          minLength: 2
          title: Name
        description:
          anyOf:
          - type: string
            maxLength: 500
          - type: 'null'
          title: Description
        pubkey_hex:
          type: string
          maxLength: 64
          minLength: 64
          title: Pubkey Hex
      type: object
      required:
      - node_id
      - name
      - pubkey_hex
      title: ExternalNodeRequest
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError