Feason Proof API

The Proof API from Feason — 4 operation(s) for proof.

GitHub OpenAPI

Operations 4

POST /api/proof/publish Publish a canonical Ed25519-signed claim proof #
POST /api/proof/verify Verify a Signed Proof V2 envelope and optional log receipt #
GET /api/proof/records/{proofId} Get a public signed proof and current inclusion receipt #
GET /api/proof/transparency Get the current public proof-log Merkle checkpoint #

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/feason-com:feason-com-proof-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

feason-com-proof-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Feason Context REST Proof API
  version: 1.4.0
  description: Source-grounded theological research plus public Signed Proof V2 publishing, verification, key discovery, and transparency receipts.
servers:
- url: https://www.feason.com
security:
- bearerAuth: []
tags:
- name: Proof
paths:
  /api/proof/publish:
    post:
      operationId: publishSignedClaimProof
      summary: Publish a canonical Ed25519-signed claim proof
      description: Accepts only claims that map to the curated registry. The server rebuilds from canonical registry wording, signs the complete artifact, and appends an immutable public transparency entry. Arbitrary submitted wording is not persisted.
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClaimProofRequest'
      responses:
        '200':
          description: Existing canonical signed proof and a current receipt
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SignedProofRecord'
        '201':
          description: Newly appended canonical signed proof and receipt
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SignedProofRecord'
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '422':
          description: Claim does not map to the curated public registry.
        '429':
          $ref: '#/components/responses/RateLimited'
        '503':
          description: Issuer signing or transparency storage is not configured.
      tags:
      - Proof
  /api/proof/verify:
    post:
      operationId: verifySignedClaimProof
      summary: Verify a Signed Proof V2 envelope and optional log receipt
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SignedProofVerificationRequest'
      responses:
        '200':
          description: Layered artifact
          issuer: null
          and transparency verification result.: null
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '413':
          description: Artifact exceeds the 2 MB verifier limit.
        '429':
          $ref: '#/components/responses/RateLimited'
      tags:
      - Proof
  /api/proof/records/{proofId}:
    get:
      operationId: getPublishedSignedProof
      summary: Get a public signed proof and current inclusion receipt
      security: []
      parameters:
      - in: path
        name: proofId
        required: true
        schema:
          type: string
          pattern: ^proof_[a-f0-9]{20}$
      responses:
        '200':
          description: Signed canonical proof record
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SignedProofRecord'
        '404':
          description: Proof not found.
        '503':
          description: Transparency storage is unavailable.
      tags:
      - Proof
  /api/proof/transparency:
    get:
      operationId: getProofTransparencyCheckpoint
      summary: Get the current public proof-log Merkle checkpoint
      security: []
      responses:
        '200':
          description: Current tree size
          Merkle root: null
          observation time: null
          and recent safe metadata.: null
        '503':
          description: Transparency storage is unavailable.
      tags:
      - Proof
components:
  schemas:
    SignedProofRecord:
      type: object
      required:
      - envelope
      - receipt
      properties:
        envelope:
          $ref: '#/components/schemas/SignedClaimProofEnvelope'
        receipt:
          $ref: '#/components/schemas/ProofTransparencyReceipt'
        publicUrl:
          type: string
          format: uri
        created:
          type: boolean
        sequence:
          type: integer
          minimum: 1
        publishedAt:
          type: string
          format: date-time
    SignedProofVerificationRequest:
      oneOf:
      - $ref: '#/components/schemas/SignedClaimProofEnvelope'
      - type: object
        required:
        - envelope
        properties:
          envelope:
            $ref: '#/components/schemas/SignedClaimProofEnvelope'
          receipt:
            $ref: '#/components/schemas/ProofTransparencyReceipt'
    ClaimProofArtifact:
      type: object
      required:
      - proofId
      - proofVersion
      - generatedAt
      - corpusVersion
      - claim
      - graph
      - obligations
      - result
      - validation
      - methodology
      - caveats
      - integrity
      properties:
        proofId:
          type: string
          pattern: ^proof_[a-f0-9]{20}$
        proofVersion:
          const: feason-claim-proof-v1
        generatedAt:
          type: string
          format: date-time
        corpusVersion:
          type: string
        claim:
          type: object
          required:
          - submitted
          - normalizedSlug
          - label
          - description
          properties:
            submitted:
              type: string
            normalizedSlug:
              type:
              - string
              - 'null'
            label:
              type:
              - string
              - 'null'
            description:
              type:
              - string
              - 'null'
        graph:
          type: object
          required:
          - nodes
          - edges
          properties:
            nodes:
              type: array
              items:
                type: object
                additionalProperties: true
            edges:
              type: array
              items:
                type: object
                additionalProperties: true
        obligations:
          type: array
          items:
            type: object
            required:
            - obligationId
            - label
            - passed
            - detail
            properties:
              obligationId:
                type: string
              label:
                type: string
              passed:
                type: boolean
              detail:
                type: string
        result:
          type: object
          required:
          - status
          - label
          - explanation
          - confidence
          - evidenceCounts
          - representedTraditions
          properties:
            status:
              enum:
              - corpus_supported
              - corpus_supported_with_qualifications
              - corpus_disputed
              - corpus_opposed
              - insufficient_evidence
            label:
              type: string
            explanation:
              type: string
            confidence:
              type: number
              minimum: 0
              maximum: 1
            evidenceCounts:
              type: object
              additionalProperties:
                type: integer
                minimum: 0
            representedTraditions:
              type: array
              items:
                type: string
        validation:
          type: object
          required:
          - valid
          - meaning
          - checks
          properties:
            valid:
              type: boolean
            meaning:
              type: string
            checks:
              type: array
              items:
                type: object
                additionalProperties: true
        methodology:
          type: string
        caveats:
          type: array
          items:
            type: string
        integrity:
          type: object
          required:
          - scheme
          - rootDigest
          - commitmentCount
          - commitments
          - authenticity
          - verifies
          - limitation
          properties:
            scheme:
              const: sha256-merkle-v1
            rootDigest:
              type: string
              pattern: ^[a-f0-9]{64}$
            commitmentCount:
              type: integer
              minimum: 1
            commitments:
              type: array
              items:
                type: object
                additionalProperties: true
            authenticity:
              const: unsigned
            verifies:
              type: string
            limitation:
              type: string
    ProofPublicKeyJwk:
      type: object
      required:
      - kty
      - crv
      - x
      properties:
        kty:
          const: OKP
        crv:
          const: Ed25519
        x:
          type: string
          pattern: ^[a-zA-Z0-9_-]+$
    SignedClaimProofEnvelope:
      type: object
      required:
      - envelopeVersion
      - proofId
      - artifact
      - signature
      properties:
        envelopeVersion:
          const: feason-signed-claim-proof-v2
        proofId:
          type: string
          pattern: ^proof_[a-f0-9]{20}$
        artifact:
          $ref: '#/components/schemas/ClaimProofArtifact'
        signature:
          type: object
          required:
          - algorithm
          - keyId
          - signedAt
          - artifactDigest
          - value
          - publicKeyJwk
          properties:
            algorithm:
              const: Ed25519
            keyId:
              type: string
            signedAt:
              type: string
              format: date-time
            artifactDigest:
              type: string
              pattern: ^[a-f0-9]{64}$
            value:
              type: string
              pattern: ^[a-zA-Z0-9_-]+$
            publicKeyJwk:
              $ref: '#/components/schemas/ProofPublicKeyJwk'
    ProofTransparencyReceipt:
      type: object
      required:
      - logVersion
      - sequence
      - leafIndex
      - treeSize
      - leafDigest
      - rootDigest
      - inclusionPath
      - observedAt
      properties:
        logVersion:
          const: feason-proof-transparency-log-v1
        sequence:
          type: integer
          minimum: 1
        leafIndex:
          type: integer
          minimum: 0
        treeSize:
          type: integer
          minimum: 1
        leafDigest:
          type: string
          pattern: ^[a-f0-9]{64}$
        rootDigest:
          type: string
          pattern: ^[a-f0-9]{64}$
        inclusionPath:
          type: array
          items:
            type: object
            required:
            - position
            - digest
            properties:
              position:
                enum:
                - left
                - right
              digest:
                type: string
                pattern: ^[a-f0-9]{64}$
        observedAt:
          type: string
          format: date-time
    ClaimProofRequest:
      type: object
      required:
      - claim
      properties:
        claim:
          type: string
          minLength: 3
          maxLength: 4000
        limitPerStance:
          type: integer
          minimum: 1
          maximum: 6
          default: 4
    Error:
      type: object
      required:
      - error
      properties:
        error:
          type: string
        issues:
          type: array
          items:
            type: object
            properties:
              path:
                type: string
              message:
                type: string
  responses:
    RateLimited:
      description: Per-client request limit exceeded.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    InvalidRequest:
      description: Request validation failed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: OAuth access token or Feason MCP key
      description: Credential must include the context:read scope.