VouchSpec Agent Skill Evidence API

Agent-only API for purchasing fresh, isolated static validation and signed evidence for one exact immutable public GitHub Agent Skill commit. Free anonymous discovery and verification operations (health, discovery, x402 manifest, issuer key, immutable DSSE receipt bytes, live receipt status) plus one x402-paid purchase operation settling 0.25 USDC on Base mainnet (eip155:8453). No human checkout, no uploads, no private repositories; artifact code is never executed.

Operations 8

GET /api/vouchspec/v1/health Check whether commerce is operational #
GET /api/vouchspec/v1/discovery Get the canonical VouchSpec machine contract #
GET /.well-known/x402 Get the x402 payment manifest #
GET /api/vouchspec/v1/validate Check the validation service and discover its paid POST operation #
POST /api/vouchspec/v1/validate Purchase validation for one exact public Agent Skill commit #
GET /api/vouchspec/v1/keys/issuer Get the current Ed25519 receipt-verification key #
GET /api/vouchspec/v1/receipts/{sha256_hex} Fetch immutable DSSE receipt bytes by SHA-256 digest #
GET /api/vouchspec/v1/receipts/{sha256_hex}/status Check the live reliance status for a receipt #

Documentation

Specifications

Other Resources

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/vouchspec-agent-skill-evidence-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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

plyrium-com-vouchspec-openapi.yml Raw ↑
# Faithful YAML rendering of https://vouchspec.plyrium.com/openapi.json (fetched 2026-09-19, HTTP 200,
# application/json; byte-identical alias at /.well-known/openapi.json). Verbatim JSON in _original/.
# No operations, schemas or servers were added or removed. Ownership: servers[] vouchspec.plyrium.com,
# info.termsOfService www.plyrium.com/vouchspec/policies, agent card provider.organization 'Plyrium'.
openapi: 3.1.0
jsonSchemaDialect: https://json-schema.org/draft/2020-12/schema
info:
  title: VouchSpec Agent Skill Evidence API
  version: 0.1.0
  description: Agent-only API for purchasing fresh, isolated static validation and signed evidence for one exact immutable
    public GitHub Agent Skill commit. There is no human checkout.
  termsOfService: https://www.plyrium.com/vouchspec/policies
externalDocs:
  description: VouchSpec machine discovery contract
  url: https://vouchspec.plyrium.com/api/vouchspec/v1/discovery
servers:
- url: https://vouchspec.plyrium.com
  description: Base mainnet commerce
tags:
- name: Discovery
  description: Free, anonymous machine-readable service metadata.
- name: Purchase
  description: x402-paid exact-commit validation intake.
- name: Verification
  description: Public receipt bytes, status, and issuer key.
x-vouchspec:
  agentOnly: true
  humanCheckout: false
  profile: vouchspec-public-static-v1
  operation: fresh_public_static_validation
  payment:
    protocol: x402
    version: 2
    scheme: exact
    network: eip155:8453
    asset: USDC
    amount: '0.25'
    atomicAmount: '250000'
  ardCatalog: https://vouchspec.plyrium.com/.well-known/ai-catalog.json
  fulfillment:
    accepted_input: immutable_public_github_coordinates
    artifact_uploads: false
    private_repositories: false
    artifact_code_executed: false
    inspection_worker_egress: false
    signer_egress: false
    expected_delivery_minutes: 10
paths:
  /api/vouchspec/v1/health:
    get:
      tags:
      - Discovery
      operationId: getVouchSpecHealth
      summary: Check whether commerce is operational
      responses:
        '200':
          description: VouchSpec is operational.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '503':
          $ref: '#/components/responses/Unavailable'
  /api/vouchspec/v1/discovery:
    get:
      tags:
      - Discovery
      operationId: getVouchSpecDiscovery
      summary: Get the canonical VouchSpec machine contract
      responses:
        '200':
          description: Current endpoints, schemas, payment terms, and receipt rules.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '503':
          $ref: '#/components/responses/Unavailable'
  /.well-known/x402:
    get:
      tags:
      - Discovery
      operationId: getVouchSpecX402Manifest
      summary: Get the x402 payment manifest
      responses:
        '200':
          description: Current x402 endpoint and payment requirement metadata.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '503':
          $ref: '#/components/responses/Unavailable'
  /api/vouchspec/v1/validate:
    get:
      tags:
      - Discovery
      operationId: getVouchSpecValidationService
      summary: Check the validation service and discover its paid POST operation
      description: Read-only health and payment-discovery metadata. This operation never verifies or settles a payment.
      responses:
        '200':
          description: The agent-only validation service is ready.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '503':
          $ref: '#/components/responses/Unavailable'
      x-vouchspec-side-effects: None. Payment is accepted only by POST.
    post:
      tags:
      - Purchase
      operationId: purchaseExactCommitValidation
      summary: Purchase validation for one exact public Agent Skill commit
      description: Send the strict validation request without PAYMENT-SIGNATURE to receive the canonical 402 challenge. Authorize
        exactly that challenge, then retry the identical request with PAYMENT-SIGNATURE. An exactly empty unpaid probe is
        also accepted for challenge discovery; a paid request always requires the body.
      parameters:
      - $ref: '#/components/parameters/PaymentSignature'
      requestBody:
        required: false
        description: Required for every purchase and payment retry; optional only for an empty unpaid challenge probe.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ValidationRequest'
      responses:
        '200':
          description: Payment settled. One-time bearer credentials and delivery endpoints are returned.
          headers:
            PAYMENT-RESPONSE:
              description: Base64-encoded x402 settlement response.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaidValidationAccess'
        '400':
          $ref: '#/components/responses/BadRequest'
        '402':
          description: Payment is required. Authorize the exact challenge and retry the identical request.
          headers:
            PAYMENT-REQUIRED:
              description: Base64-encoded x402 v2 payment requirements.
              required: true
              schema:
                type: string
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '403':
          $ref: '#/components/responses/Forbidden'
        '413':
          $ref: '#/components/responses/TooLarge'
        '429':
          $ref: '#/components/responses/RateLimited'
        '503':
          $ref: '#/components/responses/Unavailable'
      x-x402:
        version: 2
        scheme: exact
        network: eip155:8453
        asset: USDC
        amountAtomic: '250000'
        manifest: https://vouchspec.plyrium.com/.well-known/x402
      x-vouchspec-side-effects: Payment settlement and asynchronous isolated validation after a valid paid retry.
  /api/vouchspec/v1/keys/issuer:
    get:
      tags:
      - Verification
      operationId: getVouchSpecIssuerKey
      summary: Get the current Ed25519 receipt-verification key
      responses:
        '200':
          description: Public issuer key and key identifier.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssuerKey'
        '503':
          $ref: '#/components/responses/Unavailable'
  /api/vouchspec/v1/receipts/{sha256_hex}:
    get:
      tags:
      - Verification
      operationId: getVouchSpecReceipt
      summary: Fetch immutable DSSE receipt bytes by SHA-256 digest
      parameters:
      - $ref: '#/components/parameters/Sha256Hex'
      responses:
        '200':
          description: Exact immutable DSSE envelope bytes.
          content:
            application/vnd.dsse.envelope.v1+json:
              schema:
                type: object
                additionalProperties: true
        '404':
          $ref: '#/components/responses/NotFound'
        '503':
          $ref: '#/components/responses/Unavailable'
  /api/vouchspec/v1/receipts/{sha256_hex}/status:
    get:
      tags:
      - Verification
      operationId: getVouchSpecReceiptStatus
      summary: Check the live reliance status for a receipt
      description: Fetch this no-store status before every new reliance decision; cached receipt bytes alone are insufficient.
      parameters:
      - $ref: '#/components/parameters/Sha256Hex'
      responses:
        '200':
          description: Current receipt lifecycle status.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '404':
          $ref: '#/components/responses/NotFound'
        '503':
          $ref: '#/components/responses/Unavailable'
components:
  parameters:
    PaymentSignature:
      name: PAYMENT-SIGNATURE
      in: header
      required: false
      description: Base64-encoded x402 v2 authorization supplied only on the paid retry.
      schema:
        type: string
        maxLength: 16384
    Sha256Hex:
      name: sha256_hex
      in: path
      required: true
      description: 'Lowercase SHA-256 digest of the exact DSSE envelope bytes, without the sha256: prefix.'
      schema:
        type: string
        pattern: ^[0-9a-f]{64}$
  schemas:
    ValidationRequest:
      type: object
      additionalProperties: false
      required:
      - schema_version
      - operation
      - source
      - profile
      - max_price
      - delivery_id
      properties:
        schema_version:
          const: 1.0.0
        operation:
          const: fresh_public_static_validation
        source:
          type: object
          additionalProperties: false
          required:
          - host
          - owner
          - repository
          - commit
          - skill_path
          properties:
            host:
              const: github.com
            owner:
              type: string
              pattern: ^[A-Za-z0-9](?:[A-Za-z0-9-]{0,38})$
            repository:
              type: string
              pattern: ^[A-Za-z0-9](?:[A-Za-z0-9_.-]{0,99})$
            commit:
              type: string
              pattern: ^[0-9a-f]{40}$
            skill_path:
              type: string
              minLength: 1
              maxLength: 1024
        profile:
          const: vouchspec-public-static-v1
        max_price:
          type: object
          additionalProperties: false
          required:
          - currency
          - amount_minor
          properties:
            currency:
              const: usd
            amount_minor:
              type: integer
              minimum: 25
              maximum: 1000000
        delivery_id:
          type: string
          pattern: ^[A-Za-z0-9_-]{8,64}$
    PaidValidationAccess:
      type: object
      additionalProperties: false
      required:
      - schema_version
      - order
      - credentials
      - endpoints
      - payment
      properties:
        schema_version:
          const: 1.0.0
        order:
          type: object
          additionalProperties: true
        credentials:
          type: object
          additionalProperties: false
          required:
          - tenant_api_key
          - delivery_token
          - delivery_token_expires_at
          - notice
          properties:
            tenant_api_key:
              type: string
              description: Secret bearer capability shown once.
            delivery_token:
              type: string
              description: Secret delivery capability shown once.
            delivery_token_expires_at:
              type: string
              format: date-time
            notice:
              type: string
        endpoints:
          type: object
          additionalProperties: true
        payment:
          type: object
          additionalProperties: true
    IssuerKey:
      type: object
      additionalProperties: false
      required:
      - schema_version
      - key_id
      - algorithm
      - public_key_jwk
      - use
      properties:
        schema_version:
          const: '1.0'
        key_id:
          type: string
        algorithm:
          const: Ed25519
        public_key_jwk:
          type: object
          additionalProperties: true
        use:
          type: string
    Error:
      type: object
      additionalProperties: false
      required:
      - error
      properties:
        error:
          type: object
          additionalProperties: false
          required:
          - code
          - message
          properties:
            code:
              type: string
            message:
              type: string
  responses:
    BadRequest:
      description: Malformed or invalid request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: Cross-site mutation rejected.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Resource not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    TooLarge:
      description: Request body exceeds the bounded intake limit.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: Request rate exceeded.
      headers:
        Retry-After:
          schema:
            type: integer
            minimum: 1
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unavailable:
      description: VouchSpec is temporarily unavailable.
      headers:
        Retry-After:
          schema:
            type: integer
            minimum: 1
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'