> ## Documentation Index
> Fetch the complete documentation index at: https://docs.keystoneos.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Discover settlement capabilities

> Requires the `platform:read` scope (as an M2M scope or a user permission).

Return what the authenticated environment and credential can currently do before attempting a settlement: the operations the credential's routes would admit with the reason for each refusal, one page of active templates judged for availability (identifiers withheld without templates:read), and the chains and mechanism this deployment settles on. The answer is advisory and valid only when generated: every mutation revalidates, and nothing here grants access or promises that a settlement will execute. Served with Cache-Control: private, no-store.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/platforms/me/capabilities
openapi: 3.1.0
info:
  title: Keystone API
  description: Settlement orchestration API for tokenized Real-World Assets (RWAs).
  version: 0.9.0
  x-keystone-api-contract-version: 0.9.0
  x-keystone-source-revision: c094c5ec38de81d550cde98e6366efaac99cffea
servers:
  - url: https://api-staging.keystoneos.xyz
    description: Staging (sandbox)
  - url: https://api.keystoneos.xyz
    description: Production
security:
  - bearerAuth: []
tags:
  - name: health
    description: Health and version checks.
  - name: platforms
    description: Register and manage your platform profile.
  - name: environments
    description: Manage platform environments (sandbox, production).
  - name: settlement-templates
    description: View and manage settlement templates.
  - name: settlements
    description: Initiate, monitor, and manage settlements.
  - name: sessions
    description: Create and manage browser-safe session tokens for frontend widgets.
  - name: instructions
    description: Submit and manage settlement instructions.
  - name: invitations
    description: Invite team members to your platform.
  - name: members
    description: Manage platform team members and roles.
  - name: webhooks
    description: Configure webhook endpoints for real-time event notifications.
  - name: security
    description: IP allowlisting and API access controls.
  - name: activity
    description: Audit trail of platform actions.
  - name: dashboard
    description: Dashboard metrics and statistics.
  - name: callbacks
    description: Provider callback handlers (internal).
  - name: alchemy-webhooks
    description: Alchemy blockchain event webhooks (internal).
  - name: chains
    description: Supported blockchain networks for settlement.
  - name: admin
    description: KeyStone internal administration endpoints.
  - name: admin-platforms
    description: Admin platform management.
  - name: admin-settlements
    description: Admin settlement oversight and intervention.
  - name: admin-compliance
    description: Admin compliance check management.
  - name: admin-activity
    description: Admin system-wide activity logs.
  - name: admin-webhooks
    description: Admin webhook diagnostics.
  - name: internal
    description: Keystone-internal worker endpoints.
  - name: internal-compliance
    description: Internal compliance engine endpoints.
paths:
  /v1/platforms/me/capabilities:
    get:
      tags:
        - platforms
      summary: Discover settlement capabilities
      description: >-
        Requires the `platform:read` scope (as an M2M scope or a user
        permission).


        Return what the authenticated environment and credential can currently
        do before attempting a settlement: the operations the credential's
        routes would admit with the reason for each refusal, one page of active
        templates judged for availability (identifiers withheld without
        templates:read), and the chains and mechanism this deployment settles
        on. The answer is advisory and valid only when generated: every mutation
        revalidates, and nothing here grants access or promises that a
        settlement will execute. Served with Cache-Control: private, no-store.
      operationId: get_my_capabilities_v1_platforms_me_capabilities_get
      parameters:
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 100
            minimum: 1
            description: Templates per page.
            default: 50
            title: Limit
          description: Templates per page.
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            minimum: 0
            description: Templates to skip.
            default: 0
            title: Offset
          description: Templates to skip.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CapabilitiesRead'
        '403':
          description: >-
            Missing platform:read, no platform context, or no environment
            context (a user token needs the X-Keystone-Environment header).
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    CapabilitiesRead:
      properties:
        platform_id:
          type: string
          format: uuid
          title: Platform Id
        environment_id:
          type: string
          format: uuid
          title: Environment Id
          description: >-
            The verified environment the credential resolved to; never
            caller-selected.
        generated_at:
          type: string
          format: date-time
          title: Generated At
        advisory:
          type: boolean
          const: true
          title: Advisory
          description: 'Always true: this response grants nothing.'
        freshness:
          type: string
          title: Freshness
          description: How long the answers hold.
        operations:
          $ref: '#/components/schemas/OperationCapabilities'
        templates:
          $ref: '#/components/schemas/TemplateDiscovery'
        chains:
          $ref: '#/components/schemas/ChainCapabilities'
      type: object
      required:
        - platform_id
        - environment_id
        - generated_at
        - advisory
        - freshness
        - operations
        - templates
        - chains
      title: CapabilitiesRead
      examples:
        - advisory: true
          chains:
            chain_locality_enforced: true
            execution:
              escrow_chain_id: 84532
              mode: on_chain
              settlement_contract_declared: true
              writes_configured: true
            mechanisms:
              - escrow
            multi_chain_supported: false
            settlement_chains:
              - chain_id: 84532
                name: base-sepolia
                settlement_address: '0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512'
          environment_id: 7f1c2b3a-4d5e-6f70-8192-a3b4c5d6e7f8
          freshness: >-
            Valid only at generated_at. Every mutation revalidates the
            credential, the template and the chain configuration as they are at
            that moment; this snapshot grants nothing.
          generated_at: '2026-09-16T12:00:00Z'
          operations:
            instruction_submit:
              enabled: true
              required_permission: settlements:write
            settlement_create:
              enabled: true
              required_permission: settlements:write
            settlement_read:
              enabled: true
              required_permission: settlements:read
              settlement_restricted: false
          platform_id: 0d8e8a5c-3d8b-4f6e-9b6a-1a2b3c4d5e6f
          templates:
            page:
              active_total: 2
              items:
                - available: true
                  id: 9c0b1a2d-3e4f-4a5b-8c6d-7e8f9a0b1c2d
                  mechanism: escrow
                  name: Cross-platform DvP
                  slug: cross_platform_dvp
                  version: 3
              limit: 50
              offset: 0
            readable: true
            required_permission: templates:read
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
        code:
          type: string
          enum:
            - VALIDATION_ERROR
          title: Code
        docs_url:
          type: string
          title: Docs Url
          examples:
            - https://docs.keystoneos.xyz/guides/error-codes#validation-error
      type: object
      title: HTTPValidationError
      required:
        - detail
        - code
        - docs_url
    OperationCapabilities:
      properties:
        settlement_read:
          $ref: '#/components/schemas/SettlementReadCapability'
          description: GET /v1/settlements and the settlement reads.
        settlement_create:
          $ref: '#/components/schemas/OperationCapability'
          description: POST /v1/settlements, direct single-platform initiation.
        instruction_submit:
          $ref: '#/components/schemas/OperationCapability'
          description: POST /v1/instructions, one side of a bilateral instruction.
      type: object
      required:
        - settlement_read
        - settlement_create
        - instruction_submit
      title: OperationCapabilities
    TemplateDiscovery:
      properties:
        readable:
          type: boolean
          title: Readable
          description: Whether the credential may read templates at all.
        required_permission:
          type: string
          title: Required Permission
        unavailable_reason:
          anyOf:
            - type: string
              enum:
                - insufficient_permission
                - session_settlement_restricted
                - session_write_denied
            - type: 'null'
          title: Unavailable Reason
        page:
          anyOf:
            - $ref: '#/components/schemas/TemplateDiscoveryPage'
            - type: 'null'
          description: >-
            One page of active templates; null when the credential may not read
            them.
      type: object
      required:
        - readable
        - required_permission
        - unavailable_reason
        - page
      title: TemplateDiscovery
    ChainCapabilities:
      properties:
        mechanisms:
          items:
            type: string
          type: array
          title: Mechanisms
          description: The settlement mechanisms this API can create and describe.
        multi_chain_supported:
          type: boolean
          title: Multi Chain Supported
          description: >-
            Whether legs of one settlement may name more than one chain. False
            on this contract.
        settlement_chains:
          items:
            $ref: '#/components/schemas/SettlementChainRead'
          type: array
          title: Settlement Chains
          description: >-
            Registry chains carrying a settlement contract: the chains an
            explicit leg chain_id may name. A registry entry without a contract
            is absent here even though GET /v1/chains lists it.
        chain_locality_enforced:
          type: boolean
          title: Chain Locality Enforced
          description: >-
            True when settlement_chains is non-empty and intake refuses any
            other explicit chain_id. False when no chain carries a contract:
            intake then admits any chain_id, because nothing is registered.
        execution:
          $ref: '#/components/schemas/OnChainExecutionRead'
      type: object
      required:
        - mechanisms
        - multi_chain_supported
        - settlement_chains
        - chain_locality_enforced
        - execution
      title: ChainCapabilities
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    SettlementReadCapability:
      properties:
        enabled:
          type: boolean
          title: Enabled
          description: Whether the operation's route would admit this credential right now.
        required_permission:
          type: string
          title: Required Permission
          description: The permission the route requires.
        unavailable_reason:
          anyOf:
            - type: string
              enum:
                - insufficient_permission
                - session_settlement_restricted
                - session_write_denied
            - type: 'null'
          title: Unavailable Reason
          description: >-
            The first refusal the route would answer, in the order the
            authorization boundary applies them; null when enabled.
        settlement_restricted:
          type: boolean
          title: Settlement Restricted
          description: >-
            True when the credential is a session token minted for specific
            settlements: reads are confined to those, and this response does not
            say which.
      type: object
      required:
        - enabled
        - required_permission
        - unavailable_reason
        - settlement_restricted
      title: SettlementReadCapability
    OperationCapability:
      properties:
        enabled:
          type: boolean
          title: Enabled
          description: Whether the operation's route would admit this credential right now.
        required_permission:
          type: string
          title: Required Permission
          description: The permission the route requires.
        unavailable_reason:
          anyOf:
            - type: string
              enum:
                - insufficient_permission
                - session_settlement_restricted
                - session_write_denied
            - type: 'null'
          title: Unavailable Reason
          description: >-
            The first refusal the route would answer, in the order the
            authorization boundary applies them; null when enabled.
      type: object
      required:
        - enabled
        - required_permission
        - unavailable_reason
      title: OperationCapability
    TemplateDiscoveryPage:
      properties:
        items:
          items:
            $ref: '#/components/schemas/TemplateCapability'
          type: array
          title: Items
        active_total:
          type: integer
          title: Active Total
          description: >-
            The number of active templates across every page. Availability is
            judged per item on the page; this is not a count of available
            templates.
        limit:
          type: integer
          title: Limit
        offset:
          type: integer
          title: Offset
      type: object
      required:
        - items
        - active_total
        - limit
        - offset
      title: TemplateDiscoveryPage
    SettlementChainRead:
      properties:
        chain_id:
          type: integer
          title: Chain Id
        name:
          type: string
          title: Name
        settlement_address:
          type: string
          title: Settlement Address
          description: The KeystoneSettlement contract bound on this chain.
      type: object
      required:
        - chain_id
        - name
        - settlement_address
      title: SettlementChainRead
    OnChainExecutionRead:
      properties:
        mode:
          type: string
          enum:
            - on_chain
            - off_chain
          title: Mode
          description: >-
            on_chain when a settlement contract is declared, so the engine
            attests and registers every settlement with legs before its deposit
            window; off_chain when none is, so settlements advance with no
            escrow and no on-chain execution.
        settlement_contract_declared:
          type: boolean
          title: Settlement Contract Declared
        writes_configured:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Writes Configured
          description: >-
            With a declared contract, whether its write path is configured.
            False is a broken deployment that halts on-chain setup, not an
            off-chain one. Null when no contract is declared.
        escrow_chain_id:
          anyOf:
            - type: integer
            - type: 'null'
          title: Escrow Chain Id
          description: >-
            The chain the declared contract's registrations are sent to; null
            when off_chain.
      type: object
      required:
        - mode
        - settlement_contract_declared
        - writes_configured
        - escrow_chain_id
      title: OnChainExecutionRead
    TemplateCapability:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        slug:
          type: string
          title: Slug
        name:
          type: string
          title: Name
        version:
          type: integer
          title: Version
        available:
          type: boolean
          title: Available
          description: >-
            Whether a settlement can currently be created from this template:
            its live configuration parses under the current schema and selects a
            machine with a public mechanism.
        mechanism:
          anyOf:
            - type: string
              const: escrow
            - type: 'null'
          title: Mechanism
          description: >-
            The mechanism a settlement from this template runs; null when
            unavailable.
        unavailable_reason:
          anyOf:
            - type: string
              enum:
                - config_invalid
                - machine_unsupported
            - type: 'null'
          title: Unavailable Reason
      type: object
      required:
        - id
        - slug
        - name
        - version
        - available
        - mechanism
        - unavailable_reason
      title: TemplateCapability
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Auth0 JWT access token. See
        [Authentication](/getting-started/authentication) for details.

````