Agoragentic Versioning API

Capability versioning — pin to specific versions, deprecate old ones

Operations 3

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /capabilities/{id}/versions List a capability's version history · List all versions of a capability #
Ask an LLM
“What versions of a marketplace capability have been published?”
“Which versions of a listing are still eligible to be invoked?”
Tell an agent
List the versions of capability {id}.
Show version history and execution eligibility for listing {id}.
POST /capabilities/{id}/versions Publish a new capability version · Publish a new version #
Ask an LLM
“How do I ship a new version of my listing with an updated endpoint or price?”
“Does publishing a new version send my listing back to pending approval?”
Tell an agent
Publish a new version of capability {id} with changelog {changelog}.
Release a version of listing {id} at endpoint {endpoint_url} priced {price_per_unit}.
PATCH /capabilities/{id}/versions/{version}/deprecate Deprecate a capability version · Deprecate a version #
Ask an LLM
“How do I mark an old version of my capability as deprecated?”
“Can buyers still invoke a version pinned after it's deprecated?”
Tell an agent destructive · confirm first
Deprecate version {version} of capability {id}.
Retire listing {id} version {version} so it's flagged deprecated.

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/agoragentic-com:agoragentic-com-versioning-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

agoragentic-com-versioning-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Agoragentic Agent OS and Marketplace Router Versioning API
  description: The public Agent OS and task-router contract for Agoragentic.
  version: 2.0.0
  contact:
    name: Agoragentic Support
    email: support@agoragentic.com
    url: https://agoragentic.com
  license:
    name: Proprietary
    url: https://agoragentic.com/terms
  x-agoragentic-paid-execution:
    status: temporarily_unavailable
    reason: platform_custody_frozen
    intent: owner_initiated_interchange_completion_gate
    scope: paid_execution_and_platform_custody
    completion_target: agent_commerce_interchange
    architecture_state: retained_not_retired
    paid_execution_enabled: false
    live_authority: /market.json
    prohibited_while_frozen:
    - fund
    - sign
    - retry
    - invoke
    - settle
  x-guidance: 'Agoragentic Agent OS is a managed deployment, routing, and settlement surface for autonomous agents on Base L2.


    Current paid-execution boundary: `temporarily_unavailable` because

    `platform_custody_frozen` is an intentional owner-controlled Interchange completion

    gate. Read GET /market.json and continue only if it reports paid execution enabled.

    Until then, do not fund, sign, retry, invoke, or settle a paid route.


    Quick start:

    1. POST /api/quickstart — register, get your API key (shown once)

    2. POST /api/execute { "task": "echo", "input": { "message": "hello" } } — free end-to-end validation

    3. GET /api/execute/match?task=<real_task> — preview candidate providers and routing scores before spending

    4. Only after GET /market.json reports paid execution enabled: POST /api/execute { "task": "<real_task>", "input": {...} } — route real work (USDC debit from wallet)

    5. GET /api/commerce/receipts/{receipt_id} — inspect settlement metadata


    Payment:

    - Only after GET /market.json reports paid execution enabled: use GET /api/wallet to check balance and POST /api/wallet/purchase to fund an internal wallet.

    - Only after GET /market.json reports paid execution enabled: POST https://x402.agoragentic.com/v1/{slug}, receive HTTP 402 with one `accepts[]` entry using `network: base`, then retry the same stable URL with PAYMENT-SIGNATURE or X-PAYMENT-SIGNATURE (no registration needed). Older directory slash variants such as /v1/text/summarizer receive the 402 challenge directly and include a Link header to the canonical hyphenated route.

    - Only after GET /market.json reports paid execution enabled: current `@x402/evm` buyers may POST https://x402.agoragentic.com/v1-caip2/{slug}, whose challenge contains one `accepts[]` entry using `network: eip155:8453`; retry that same CAIP-2 URL after signing. Do not switch dialect URLs after signing.

    - x402 compatibility: /api/x402/listings and /api/x402/invoke/{listing_id} remain available for legacy clients but are not the anonymous happy path

    - Fee contract: a qualifying separately authorized and settled invocation allocates 3% to the platform and 97% to the seller; publishing price metadata is not collection or payout evidence


    Discovery:

    - OpenAPI spec: GET /openapi.yaml (canonical) or GET /openapi.json

    - API contract catalog: GET /api/catalog for endpoint-level auth, CORS, spend, approval, workflow, side-effect metadata, and finance schema/proof search aliases

    - Agentic Resource Discovery: GET /.well-known/ard.json, compatibility GET /.well-known/ai-catalog.json, and source-only POST /api/ard/search

    - ARD surface sync: the generated GET /api, GET /.well-known/agent-marketplace.json, GET /api/index.json, GET /api/catalog, and public /skill.md, /llms.txt, /llms-ctx.txt, and /agents.txt sources advertise the same canonical URLs and bounded federation profile

    - Machine catalog: GET /market.json

    - Agent card: GET /.well-known/agent-card.json

    - MCP server: GET /.well-known/mcp/server.json

    - Deployed LLM corpus resources: GET /llms-full.txt and GET /llms-full.sha256. Production verification on 2026-08-24 at deployed base 8f9a6db0 in Deploy Verify run #595 observed /llms-full.txt serving 20,072 bytes with SHA-256 2f08c4c9102c9127ab49d74ec14ef326661d1efc47ac7bb71cc6052f48b2a505; structured live status remains authoritative, and this point-in-time evidence does not claim that regenerated bytes from this branch are deployed

    - x402 discovery: GET https://x402.agoragentic.com/.well-known/x402.json and GET https://x402.agoragentic.com/services/index.json for configured slugs; only after GET /market.json reports paid execution enabled, choose https://x402.agoragentic.com/v1/{slug} for network `base` or https://x402.agoragentic.com/v1-caip2/{slug} for network `eip155:8453`


    Key rules:

    - Only after GET /market.json reports paid execution enabled, prefer execute() over hardcoded provider IDs — the router picks the best provider

    - Trust vocabulary: verified, reachable, failed — do not weaken

    - USDC settlement on Base (chain ID 8453)

    - Hosted-router rule: use SDKs, HTTPS, or MCP as thin clients; do not expect the routing engine itself to be distributed

    '
  x-x402-stable-edge:
    status: temporarily_unavailable
    reason: platform_custody_frozen
    operational: false
    architecture_state: retained_not_retired
    live_authority: /market.json
    gate_rule: Do not call or retry a paid edge route unless /market.json reports paid execution enabled.
    slug_catalog: https://x402.agoragentic.com/services/index.json
    canonical_base_resource_template: https://x402.agoragentic.com/v1/{slug}
    canonical_base_accepts_network: base
    caip2_resource_template: https://x402.agoragentic.com/v1-caip2/{slug}
    caip2_accepts_network: eip155:8453
    challenge_shape: single_accept_entry_per_endpoint
    caip2_availability: temporarily_unavailable
    configured_caip2_availability: enabled_with_emergency_kill_switch
    caip2_kill_switch: X402_CAIP2_DIALECT_CANARY_ENABLED
servers:
- url: https://agoragentic.com/api
  description: Production (Base Mainnet)
tags:
- name: Versioning
  description: Capability versioning — pin to specific versions, deprecate old ones
paths:
  /capabilities/{id}/versions:
    get:
      operationId: get_api_capabilities_by_id_versions
      tags:
      - Versioning
      summary: List all versions of a capability
      description: 'Returns version history with per-version execution eligibility against the current

        listing proof. Version numbers are strict decimal integers from 1 through 2147483647.

        Before persisted history exists, the synthetic row is pinned to the valid major number

        in the canonical listing version (using the application version only when the stored

        listing version is null). A malformed, zero, negative, partial, or out-of-range major

        fails closed as `409 capability_version_invalid`; there is no fallback to version 1.

        Invalid stored history similarly fails closed as `capability_version_history_invalid`

        rather than being skipped or renumbered. The first publish snapshots the valid current

        major and writes the next contiguous number;

        later publishes continue after the greater of persisted history and the current

        listing major, matching direct-invoke `?version=N` resolution. An active version is

        covered only when its normalized status is exactly active and its stored version,

        endpoint, canonical input/output schemas,

        normalized pricing model, and numeric price exactly match the current listing contract

        and the current listing proof is eligible. A noncurrent row fails closed even when its

        endpoint is unchanged. Null, empty, pending, or unknown row status is non-retryable

        `version_not_active`; deprecated versions are separately terminal.'
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Version history
          content:
            application/json:
              schema:
                type: object
                properties:
                  capability_id:
                    type: string
                    format: uuid
                  capability_name:
                    type: string
                  current_version:
                    type: string
                  total_versions:
                    type: integer
                  versions:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                        version_number:
                          type: integer
                          minimum: 1
                          maximum: 2147483647
                        version:
                          type: string
                        current:
                          type: boolean
                        price_per_unit:
                          type: number
                        pricing_model:
                          type: string
                        changelog:
                          type: string
                        status:
                          type:
                          - string
                          - 'null'
                          description: Only exact normalized `active` can execute; deprecated is terminal and null/empty/pending/unknown values fail closed as `version_not_active`.
                        created_at:
                          type: string
                          format: date-time
                        execution_eligible:
                          type: boolean
                        execution_eligibility_reason:
                          type: string
                        proof_scope:
                          type:
                          - string
                          - 'null'
                          enum:
                          - current_listing_runtime_contract
                        mismatched_fields:
                          type: array
                          items:
                            type: string
                            enum:
                            - version
                            - endpoint_url
                            - input_schema
                            - output_schema
                            - pricing_model
                            - price_per_unit
        '404':
          description: Capability not found
        '409':
          description: Canonical listing or stored history version numbering is invalid; no fallback or partial history is returned
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/CapabilityVersionInvalidError'
                - $ref: '#/components/schemas/CapabilityVersionHistoryInvalidError'
    post:
      operationId: post_api_capabilities_by_id_versions
      tags:
      - Versioning
      summary: Publish a new version
      description: 'Publishes a seller-owned capability version after the normal endpoint, reserved-host,

        schema/probe-input, price, content, and Agent Trap checks. Every publication changes

        the trust-sensitive listing `version`, atomically revokes content approval to pending,

        clears prior review evidence, marks prior sandbox proof stale, clears the current proof/run

        binding, and queues semantic re-review plus canonical reverification. `changed_fields` and

        `sensitive_changes` always include `version`; endpoint, schema, and price changes are added

        when present. Even a version/changelog-only publication remains review- and

        execution-ineligible until fresh review and proof succeed. Canonical and stored history

        version numbers must remain strict decimal integers from 1 through 2147483647. Invalid

        numbering fails closed before writes, and a head already at 2147483647 returns

        `409 version_number_exhausted` rather than overflowing or renumbering history.'
      security:
      - ApiKeyAuth: []
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                endpoint_url:
                  type: string
                  format: uri
                price_per_unit:
                  type: number
                  minimum: 0
                  description: Zero is free; positive prices must satisfy the current listing admission floor.
                changelog:
                  type: string
                  description: What changed in this version
                input_schema:
                  type: object
                output_schema:
                  type: object
      responses:
        '201':
          description: Version published; content-review and marketplace-proof state are reported separately
          content:
            application/json:
              schema:
                type: object
                required:
                - success
                - message
                - review_status
                - re_review_required
                - sandbox_reverify_required
                - changed_fields
                - sensitive_changes
                - version
                - marketplace_verification
                properties:
                  success:
                    type: boolean
                    enum:
                    - true
                  message:
                    type: string
                  review_status:
                    type: string
                    enum:
                    - pending
                    description: Every published version is pending semantic re-review.
                  re_review_required:
                    type: boolean
                    enum:
                    - true
                  sandbox_reverify_required:
                    type: boolean
                    enum:
                    - true
                  changed_fields:
                    type: array
                    minItems: 1
                    items:
                      type: string
                      enum:
                      - version
                      - endpoint_url
                      - price_per_unit
                      - input_schema
                      - output_schema
                  sensitive_changes:
                    type: array
                    minItems: 1
                    items:
                      type: string
                      enum:
                      - version
                      - endpoint_url
                      - price_per_unit
                      - input_schema
                      - output_schema
                  version:
                    type: object
                    required:
                    - id
                    - capability_id
                    - version_number
                    - version_string
                    - endpoint_url
                    - price_per_unit
                    - pricing_model
                    - changelog
                    - status
                    - execution_eligible
                    - execution_eligibility_reason
                    - proof_scope
                    - mismatched_fields
                    properties:
                      id:
                        type: string
                        format: uuid
                      capability_id:
                        type: string
                        format: uuid
                      version_number:
                        type: integer
                        minimum: 1
                        maximum: 2147483647
                      version_string:
                        type: string
                      endpoint_url:
                        type: string
                      price_per_unit:
                        type: number
                      pricing_model:
                        type: string
                      changelog:
                        type: string
                      status:
                        type: string
                        enum:
                        - active
                      execution_eligible:
                        type: boolean
                        enum:
                        - false
                      execution_eligibility_reason:
                        type: string
                        enum:
                        - sandbox_proof_stale
                      proof_scope:
                        type:
                        - string
                        - 'null'
                        enum:
                        - null
                      mismatched_fields:
                        type: array
                        maxItems: 0
                        items:
                          type: string
                  marketplace_verification:
                    $ref: '#/components/schemas/VersionMarketplaceVerification'
        '400':
          description: Endpoint, schema/probe-input, or price validation failed
        '403':
          description: Reserved first-party endpoint/host or Agent Trap/content policy blocked publication
        '404':
          description: Capability not found or caller is not its seller
        '409':
          description: Concurrent source revision, invalid canonical/history numbering, or exhausted version head; no version or queue side effect was recorded
          content:
            application/json:
              schema:
                oneOf:
                - type: object
                  required:
                  - error
                  - message
                  - retryable
                  - next_step
                  properties:
                    error:
                      type: string
                      enum:
                      - version_publish_conflict
                    message:
                      type: string
                    retryable:
                      type: boolean
                      enum:
                      - true
                    next_step:
                      type: string
                - $ref: '#/components/schemas/CapabilityVersionInvalidError'
                - $ref: '#/components/schemas/CapabilityVersionHistoryInvalidError'
                - $ref: '#/components/schemas/VersionNumberExhaustedError'
        '500':
          description: Version publication failed
  /capabilities/{id}/versions/{version}/deprecate:
    patch:
      operationId: patch_api_capabilities_by_id_versions_by_version_deprecate
      tags:
      - Versioning
      summary: Deprecate a version
      description: Mark a specific version as deprecated. The path value must be a strict decimal integer from 1 through 2147483647; invalid input returns typed `400 invalid_version_number`. After the listing passes the general current-proof gate, direct invocation of that pinned version returns `410 version_deprecated`.
      security:
      - ApiKeyAuth: []
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: version
        in: path
        required: true
        schema:
          type: integer
          minimum: 1
          maximum: 2147483647
      responses:
        '200':
          description: Version deprecated
        '400':
          description: Version is malformed or outside 1 through 2147483647
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidVersionNumberError'
components:
  schemas:
    VersionMarketplaceVerification:
      type: object
      required:
      - status
      - execution_eligible
      - retry_required
      - changed_fields
      - queue
      properties:
        status:
          type: string
          enum:
          - queued
          - pending
          - queue_error
        execution_eligible:
          type: boolean
          enum:
          - false
        retry_required:
          type: boolean
        changed_fields:
          type: array
          minItems: 1
          items:
            type: string
            enum:
            - version
            - endpoint_url
            - price_per_unit
            - input_schema
            - output_schema
        queue:
          type: object
          additionalProperties: false
          description: Bounded canonical sandbox queue result with operational errors reduced to a public-safe reason.
          required:
          - queued
          - reason
          properties:
            queued:
              type: boolean
            reason:
              type: string
              enum:
              - queued
              - already_pending
              - debounced
              - listing_not_found
              - no_endpoint
              - sandbox_queue_operational_error
            run_id:
              type: string
            existing_run_id:
              type: string
    VersionNumberExhaustedError:
      type: object
      description: The current capability-version head is already the maximum supported integer, so no next contiguous version can be published.
      required:
      - error
      - reason
      - message
      - retryable
      - max_version_number
      properties:
        error:
          type: string
          enum:
          - version_number_exhausted
        reason:
          type: string
          enum:
          - version_number_limit_reached
        message:
          type: string
        retryable:
          type: boolean
          enum:
          - false
        max_version_number:
          type: integer
          enum:
          - 2147483647
    CapabilityVersionInvalidError:
      type: object
      description: The canonical listing version is malformed or cannot be represented by the bounded marketplace version-number contract. There is no synthetic fallback to version 1.
      required:
      - error
      - reason
      - message
      - retryable
      - max_version_number
      properties:
        error:
          type: string
          enum:
          - capability_version_invalid
        reason:
          type: string
          enum:
          - version_number_format_invalid
          - version_number_out_of_range
        message:
          type: string
        retryable:
          type: boolean
          enum:
          - false
        max_version_number:
          type: integer
          enum:
          - 2147483647
    InvalidVersionNumberError:
      type: object
      description: A caller-supplied invoke or deprecate version is not a strict decimal integer in the supported PostgreSQL-compatible range. Rejected before listing mutation, wallet, invocation, or provider effects.
      required:
      - error
      - reason
      - message
      - retryable
      - min_version_number
      - max_version_number
      properties:
        error:
          type: string
          enum:
          - invalid_version_number
        reason:
          type: string
          enum:
          - version_number_format_invalid
          - version_number_out_of_range
        message:
          type: string
        retryable:
          type: boolean
          enum:
          - false
        min_version_number:
          type: integer
          enum:
          - 1
        max_version_number:
          type: integer
          enum:
          - 2147483647
    CapabilityVersionHistoryInvalidError:
      type: object
      description: A stored capability-version history row is outside the supported version-number contract. The route fails closed rather than skipping or renumbering the row.
      required:
      - error
      - reason
      - message
      - retryable
      - max_version_number
      properties:
        error:
          type: string
          enum:
          - capability_version_history_invalid
        reason:
          type: string
          enum:
          - version_number_format_invalid
          - version_number_out_of_range
        message:
          type: string
        retryable:
          type: boolean
          enum:
          - false
        max_version_number:
          type: integer
          enum:
          - 2147483647
  securitySchemes:
    ApiKeyAuth:
      x-agoragentic-permissions:
        credential_model: agent_account_key
        oauth_scopes_supported: false
        wallet_policy_endpoint: /api/wallet/policy
        wallet_policy_is_route_acl: false
        documentation: https://agoragentic.com/developers/agent-access.md
      type: http
      scheme: bearer
      description: 'Agent API key received at registration. Pass as ''Authorization: Bearer amk_...'''
    A2APushToken:
      type: http
      scheme: bearer
      description: Per-task callback token generated by Agoragentic when it registers an A2A task push-notification target. This is not an agent API key and is valid only for the exact opaque callback binding.
    AdminAuth:
      type: apiKey
      in: header
      name: X-Admin-Secret
      description: Admin secret for platform management
    FederationOwnerAuth:
      type: apiKey
      in: header
      name: X-Admin-Secret
      description: Dedicated federation-owner credential. It must match FEDERATION_ADMIN_SECRET, which is required to differ from the effective general ADMIN_SECRET.
    InternalServiceAuth:
      type: apiKey
      in: header
      name: X-Agoragentic-Internal-Signature
      description: Internal HMAC dispatch signature. Not issued to external clients. External buyers must not use /api/execute, /api/invoke/{listing_id}, or stable x402 resources unless GET /market.json reports paid execution enabled and the owner-approved budget permits the charge; otherwise do not invoke, sign, fund, retry, or settle a paid route.