openapi: 3.1.0
info:
  title: Prove Army - Anchor/Arcium Proof Chain
  version: 0.3.4
  description: Prove Army builds burn-gated Anchor proof sessions and Arcium verdict payloads. Fly serves the MCP/API surface; Anchor plus Arcium is the canonical Solana path.
servers:
  - url: https://prove.army
  - url: https://pop-mp-fun.fly.dev
paths:
  /status:
    get:
      operationId: getStatus
      summary: Get indexed proof-chain status
      responses:
        '200': {description: Status}
  /challenge:
    get:
      operationId: getChallenge
      summary: Get the active proof challenge and binding hashes
      responses:
        '200': {description: Active challenge}
  /prompt:
    get:
      operationId: getPrompt
      summary: Get the canonical proof prompt
      responses:
        '200': {description: Prompt}
  /submit:
    post:
      operationId: submitProof
      summary: Submit proof with settled Anchor session account
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [miner, proof]
              properties:
                miner: {type: string}
                proof: {type: string}
                anchor_session:
                  type: object
                  properties:
                    state_account: {type: string}
                    rpc_url: {type: string}
                    program_id: {type: string}
      responses:
        '200': {description: Accepted}
        '400': {description: Rejected}
  /mcp:
    get:
      operationId: getMcpMetadata
      summary: Get hosted MCP metadata
      responses:
        '200': {description: MCP metadata}
  /SKILL.md:
    get:
      operationId: getSkillMarkdown
      summary: Get the Prove Army Anchor/Arcium skill
      responses:
        '200': {description: Skill markdown}
  /openai.json:
    get:
      operationId: getOpenAiActionsJson
      summary: Get the OpenAI Custom GPT actions schema
      responses:
        '200': {description: OpenAI actions schema}
  /actions.json:
    get:
      operationId: getActionsJson
      summary: Get the OpenAI Custom GPT actions schema
      responses:
        '200': {description: OpenAI actions schema}
  /production/config:
    get:
      operationId: getProductionConfig
      summary: Get production profile
      responses:
        '200': {description: Production profile}
  /anchor/config:
    get:
      operationId: getAnchorConfig
      summary: Get primary Anchor/Arcium config
      responses:
        '200': {description: Anchor/Arcium config}
  /anchor/build:
    post:
      operationId: buildAnchorArciumSession
      summary: Build Anchor session and Arcium queue bindings for a proof
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [proof]
              properties:
                miner: {type: string}
                proof: {type: string}
                anchor_state: {type: string}
                anchor_arcium_config: {type: string}
                anchor_program: {type: string}
      responses:
        '200': {description: Anchor/Arcium build payload}
        '400': {description: Invalid proof}
  /anchor/verify:
    post:
      operationId: verifyAnchorSession
      summary: Verify an Anchor session account as a settled proof verdict
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [state_account]
              properties:
                state_account: {type: string}
                rpc_url: {type: string}
                program_id: {type: string}
      responses:
        '200': {description: Anchor session accepted}
        '400': {description: Anchor session rejected}
  /arcium/config:
    get:
      operationId: getArciumConfig
      summary: Get Arcium verdict config
      responses:
        '200': {description: Arcium config}
  /arcium/build:
    post:
      operationId: buildArciumPayload
      summary: Build Arcium queue bindings for a PoP proof
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [proof]
              properties:
                miner: {type: string}
                proof: {type: string}
                anchor_state: {type: string}
                anchor_arcium_config: {type: string}
                anchor_program: {type: string}
      responses:
        '200': {description: Arcium build payload}
        '400': {description: Invalid proof}
  /dual-oracle/config:
    get:
      operationId: getDualOracleConfig
      summary: Get Anchor/Arcium mint-gate config
      responses:
        '200': {description: Dual-oracle config}
  /dual-oracle/bindings:
    post:
      operationId: previewDualOracleBindings
      summary: Preview Anchor/Arcium binding digests for a proof
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [proof]
              properties:
                proof: {type: string}
      responses:
        '200': {description: Binding preview}
        '400': {description: Invalid proof}
  /arcium/private-spec:
    get:
      operationId: getArciumPrivateSpec
      summary: Get Arcium private verdict binding spec
      responses:
        '200': {description: Arcium private verdict spec}
