Feason Context API

The Context API from Feason — 7 operation(s) for context.

GitHub OpenAPI

Operations 7

GET /api/context/v1/manifest Get the active immutable corpus manifest #
POST /api/context/v1/contextualize Build an LLM-ready Christian context package #
POST /api/context/v1/evaluate-claim Evaluate a theological claim against curated passage stances #
POST /api/context/v1/claim-proof Build a proof-carrying theological claim evaluation #
POST /api/context/v1/search Search exact, source-backed theological passages #
POST /api/context/v1/evidence-packet Build a multi-category evidence packet #
POST /api/context/v1/verify-citation Verify a passage or exact quote against an immutable release snapshot #

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-context-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-context-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Feason REST Context 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: Context
paths:
  /api/context/v1/manifest:
    get:
      operationId: getCorpusManifest
      summary: Get the active immutable corpus manifest
      responses:
        '200':
          description: Active corpus counts and verification status distribution.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CorpusManifest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
      tags:
      - Context
  /api/context/v1/contextualize:
    post:
      operationId: contextualize
      summary: Build an LLM-ready Christian context package
      description: Returns a token-budgeted evidence block, stable citation labels, and explicit tradition coverage limits. It does not generate a theological verdict.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContextualizeRequest'
      responses:
        '200':
          description: Prompt-ready context with citation and coverage metadata.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContextPackage'
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
      tags:
      - Context
  /api/context/v1/evaluate-claim:
    post:
      operationId: evaluateClaim
      summary: Evaluate a theological claim against curated passage stances
      description: Groups retrieved passages as supporting, contradicting, qualifying, contextual, or unclassified. Only explicit curated opposing annotations count as contradiction; silence and missing coverage do not.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EvaluateClaimRequest'
      responses:
        '200':
          description: Deterministic claim normalization and evidence grouped by curated stance.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClaimEvaluation'
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
      tags:
      - Context
  /api/context/v1/claim-proof:
    post:
      operationId: buildClaimProof
      summary: Build a proof-carrying theological claim evaluation
      description: Builds a deterministic evidence graph with disclosed inference rules, explicit abstention, validation checks, and an unsigned SHA-256 Merkle commitment. The result is bounded to represented corpus evidence and is not a universal theological verdict.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClaimProofRequest'
      responses:
        '200':
          description: Proof graph, bounded result, validation checks, and Merkle integrity commitments.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClaimProofArtifact'
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
      tags:
      - Context
  /api/context/v1/search:
    post:
      operationId: searchSources
      summary: Search exact, source-backed theological passages
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchRequest'
      responses:
        '200':
          description: Ranked evidence with source provenance and an opaque next cursor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResponse'
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
      tags:
      - Context
  /api/context/v1/evidence-packet:
    post:
      operationId: buildEvidencePacket
      summary: Build a multi-category evidence packet
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - question
              properties:
                question:
                  type: string
                  minLength: 3
                traditions:
                  type: array
                  maxItems: 10
                  items:
                    type: string
                limit:
                  type: integer
                  minimum: 3
                  maximum: 40
                  default: 20
      responses:
        '200':
          description: Categorized evidence, tradition positions, findings, and provenance.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EvidencePacket'
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
      tags:
      - Context
  /api/context/v1/verify-citation:
    post:
      operationId: verifyCitation
      summary: Verify a passage or exact quote against an immutable release snapshot
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - passageId
              properties:
                passageId:
                  type: string
                  minLength: 1
                  maxLength: 200
                quote:
                  type: string
                  minLength: 1
                  maxLength: 20000
                corpusVersion:
                  type: string
                  minLength: 1
                  maxLength: 200
      responses:
        '200':
          description: Exact, normalized, hash-only, or mismatch verification result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CitationVerification'
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
      tags:
      - Context
components:
  schemas:
    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
    ContextPackage:
      type: object
      required:
      - query
      - corpusVersion
      - context
      - citations
      - coverage
      - usage
      - instructions
      properties:
        query:
          type: string
        corpusVersion:
          type: string
        context:
          type: string
          description: Token-budgeted Markdown intended to be inserted into a model prompt.
        citations:
          type: array
          items:
            $ref: '#/components/schemas/ContextCitation'
        coverage:
          type: object
          required:
          - requestedTraditions
          - representedTraditions
          - missingTraditions
          - caveats
          properties:
            requestedTraditions:
              type: array
              items:
                type: string
            representedTraditions:
              type: array
              items:
                type: string
            missingTraditions:
              type: array
              items:
                type: string
            caveats:
              type: array
              items:
                type: string
        usage:
          type: object
          required:
          - maxTokens
          - estimatedTokens
          - includedEvidence
          - availableEvidence
          - truncated
          properties:
            maxTokens:
              type: integer
            estimatedTokens:
              type: integer
            includedEvidence:
              type: integer
            availableEvidence:
              type: integer
            truncated:
              type: boolean
        instructions:
          type: array
          items:
            type: string
    SearchResponse:
      type: object
      required:
      - query
      - mode
      - filters
      - results
      - retrievalMetadata
      - page
      properties:
        query:
          type: string
        mode:
          enum:
          - lexical
          - semantic
          - hybrid
        filters:
          $ref: '#/components/schemas/SourceFilters'
        results:
          type: array
          items:
            $ref: '#/components/schemas/EvidenceItem'
        retrievalMetadata:
          type: object
          additionalProperties: true
        page:
          type: object
          required:
          - limit
          - offset
          - nextCursor
          properties:
            limit:
              type: integer
            offset:
              type: integer
            nextCursor:
              type:
              - string
              - 'null'
    CorpusManifest:
      type: object
      required:
      - corpusVersion
      - sourceCount
      - passageCount
      - entityCount
      - relationshipCount
      - traditionPositionCount
      - claimCount
      - verificationStatuses
      properties:
        corpusVersion:
          type: string
        sourceCount:
          type: integer
        passageCount:
          type: integer
        entityCount:
          type: integer
        relationshipCount:
          type: integer
        traditionPositionCount:
          type: integer
        claimCount:
          type: integer
        verificationStatuses:
          type: object
          additionalProperties:
            type: integer
    ContextCitation:
      type: object
      required:
      - label
      - passageId
      - sourceId
      - sourceTitle
      - canonicalReference
      - sourceUrl
      - traditions
      - verificationStatus
      properties:
        label:
          type: string
        passageId:
          type: string
        sourceId:
          type: string
        sourceTitle:
          type: string
        canonicalReference:
          type: string
        sourceUrl:
          type: string
          format: uri
        traditions:
          type: array
          items:
            type: string
        verificationStatus:
          enum:
          - unverified
          - machine_checked
          - curated
          - scholarly_reviewed
    ClaimEvaluation:
      type: object
      required:
      - claim
      - normalizedClaim
      - claimDefinition
      - supportingEvidence
      - contradictingEvidence
      - qualifyingEvidence
      - contextualEvidence
      - unclassifiedEvidence
      - confidence
      - methodology
      - negativeEvidencePolicy
      - caveats
      properties:
        claim:
          type: string
        normalizedClaim:
          type:
          - string
          - 'null'
        claimDefinition:
          oneOf:
          - $ref: '#/components/schemas/ClaimDefinition'
          - type: 'null'
        supportingEvidence:
          type: array
          items:
            $ref: '#/components/schemas/EvidenceItem'
        contradictingEvidence:
          type: array
          items:
            $ref: '#/components/schemas/EvidenceItem'
        qualifyingEvidence:
          type: array
          items:
            $ref: '#/components/schemas/EvidenceItem'
        contextualEvidence:
          type: array
          items:
            $ref: '#/components/schemas/EvidenceItem'
        unclassifiedEvidence:
          type: array
          items:
            $ref: '#/components/schemas/EvidenceItem'
        confidence:
          type: number
          minimum: 0
          maximum: 1
        methodology:
          type: string
        negativeEvidencePolicy:
          type: string
        caveats:
          type: array
          items:
            type: string
    SourceFilters:
      type: object
      properties:
        sourceTypes:
          type: array
          items:
            enum:
            - scripture
            - creed
            - council
            - patristic
            - historical
            - confession
            - lexicon
        traditions:
          type: array
          items:
            type: string
        authors:
          type: array
          items:
            type: string
        dateFrom:
          type: integer
        dateTo:
          type: integer
        verificationStatuses:
          type: array
          items:
            enum:
            - unverified
            - machine_checked
            - curated
            - scholarly_reviewed
    ClaimDefinition:
      type: object
      required:
      - label
      - description
      properties:
        label:
          type: string
        description:
          type: string
    EvaluateClaimRequest:
      type: object
      required:
      - claim
      properties:
        claim:
          type: string
          minLength: 3
          maxLength: 4000
        limitPerStance:
          type: integer
          minimum: 1
          maximum: 10
          default: 5
    EvidenceItem:
      type: object
      required:
      - passageId
      - sourceId
      - sourceTitle
      - sourceType
      - tradition
      - canonicalReference
      - text
      - confidence
      - provenance
      - retrieval
      properties:
        passageId:
          type: string
        sourceId:
          type: string
        sourceTitle:
          type: string
        author:
          type:
          - string
          - 'null'
        sourceType:
          enum:
          - scripture
          - creed
          - council
          - patristic
          - historical
          - confession
          - lexicon
        tradition:
          type: array
          items:
            type: string
        canonicalReference:
          type: string
        text:
          type: string
        relationship:
          type:
          - string
          - 'null'
        confidence:
          type: number
          minimum: 0
          maximum: 1
        provenance:
          type: object
          required:
          - sourceUrl
          - license
          - licenseNotes
          - verificationStatus
          properties:
            sourceUrl:
              type: string
              format: uri
            translation:
              type:
              - string
              - 'null'
            translator:
              type:
              - string
              - 'null'
            edition:
              type:
              - string
              - 'null'
            license:
              type: string
            licenseNotes:
              type: string
            verificationStatus:
              enum:
              - unverified
              - machine_checked
              - curated
              - scholarly_reviewed
        retrieval:
          type: object
          required:
          - score
          - matchedBy
          properties:
            score:
              type: number
            matchedBy:
              type: array
              items:
                enum:
                - lexical
                - semantic
                - ontology
    EvidencePacket:
      type: object
      required:
      - question
      - primarySources
      - scripture
      - historicalContext
      - patristicSources
      - councilSources
      - interpretivePositions
      - areasOfConsensus
      - areasOfDisagreement
      - sourceProvenance
      - retrievalMetadata
      - confidence
      properties:
        question:
          type: string
        primarySources:
          type: array
          items:
            $ref: '#/components/schemas/EvidenceItem'
        scripture:
          type: array
          items:
            $ref: '#/components/schemas/EvidenceItem'
        historicalContext:
          type: array
          items:
            $ref: '#/components/schemas/EvidenceItem'
        patristicSources:
          type: array
          items:
            $ref: '#/components/schemas/EvidenceItem'
        councilSources:
          type: array
          items:
            $ref: '#/components/schemas/EvidenceItem'
        doctrinalConnections:
          type: array
          items:
            type: object
            additionalProperties: true
        interpretivePositions:
          type: array
          items:
            type: object
            additionalProperties: true
        areasOfConsensus:
          type: array
          items:
            type: string
        areasOfDisagreement:
          type: array
          items:
            type: string
        relevantTerms:
          type: array
          items:
            type: object
            additionalProperties: true
        sourceProvenance:
          type: array
          items:
            type: object
            additionalProperties: true
        retrievalMetadata:
          type: object
          additionalProperties: true
        confidence:
          type: number
          minimum: 0
          maximum: 1
    SearchRequest:
      type: object
      required:
      - query
      properties:
        query:
          type: string
          minLength: 2
        mode:
          enum:
          - lexical
          - semantic
          - hybrid
          default: hybrid
        filters:
          $ref: '#/components/schemas/SourceFilters'
        limit:
          type: integer
          minimum: 1
          maximum: 50
          default: 10
        cursor:
          type: string
          description: Opaque nextCursor from a prior response.
    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
    ContextualizeRequest:
      type: object
      required:
      - query
      properties:
        query:
          type: string
          minLength: 3
          maxLength: 4000
        traditions:
          type: array
          maxItems: 10
          items:
            type: string
            minLength: 1
            maxLength: 100
        maxTokens:
          type: integer
          minimum: 512
          maximum: 8000
          default: 2000
        maxSources:
          type: integer
          minimum: 3
          maximum: 24
          default: 12
    CitationVerification:
      type: object
      required:
      - verified
      - matchKind
      - passageId
      - verificationPolicy
      properties:
        verified:
          type: boolean
        matchKind:
          enum:
          - passage_hash
          - exact_quote
          - normalized_quote
          - mismatch
        corpusVersion:
          type: string
        passageId:
          type: string
        sourceId:
          type: string
        canonicalReference:
          type: string
        contentHash:
          type: string
        quoteOffset:
          type:
          - integer
          - 'null'
        locator:
          type: object
          additionalProperties: true
        citation: {}
        reason:
          type: string
        verificationPolicy:
          type: string
  responses:
    Unauthorized:
      description: Missing, invalid, or insufficiently scoped bearer credential.
      headers:
        WWW-Authenticate:
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    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.