---
title: "Supported chains/directions"
method: GET
path: "/agent/capabilities"
tags: ["agent"]
---

# Supported chains/directions

`GET /agent/capabilities`

## Request

- Base URL: `https://xmrtousdc.xyz/api/v1`
- URL: `https://xmrtousdc.xyz/api/v1/agent/capabilities`
- Auth: none declared

Directions (x2u, u2x), live chains, default chain, validation rules (incl. receiveAmount), apiBaseUrl, endpoints (/api/v1 paths) and endpointUrls (absolute), contractVersion, quotePolicy (incl. minimumPublished, minimumNote, reconfirmPolicy, reverseQuote), payable (reasons, minRemainingSec), origin, evidence, attestation (signing status, kid, thumbprint, keySet), trust (custody, provider, fees and data-retention facts derived from the running configuration), provider (name, apiVersion, unknownOutcomeRecovery), statusLongPoll, idempotency, lifecycle, limits (provider minSwapUsd per chain), funding (pointer to /agent/funding) and the list of unsupported provider features.

## Response `200`

Capabilities

- Capabilities
  - `ok` boolean
  - `operation` string
  - `contractVersion` string
  - `apiBaseUrl` string, nullable
  - `endpoints` object
  - `endpointUrls` object
  - `quotePolicy` object: createRequiresQuoteId, quoteAcceptWindowSec, singleUse, guaranteed:false, minimumPublished (false on Wagyu v2: the provider publishes no minimum receive amount), minimumNote, reconfirmPolicy (when an order is never payable: reconfirm_required), reverseQuote { field: receiveAmount, exclusiveWith: amount, basis (on Wagyu v2 only ["estimate"]), maxUpstreamQuotes, sendAmountStep, note }.
  - `payable` object: { field: data.payable, reasonField: data.payableReason, reasons (every PayableReason value), minRemainingSec: 600, note }.
  - `origin` object: { field: data.origin, values: [agent_quote, other], note }: only agent_quote orders can be payable.
  - `evidence` object: { field: data.evidence, note }: provider-reported transaction hashes, not chain checks.
  - `attestation` object: { status: active | not_configured | <signer reason>, kid, thumbprint, keySet (keys/attestation-keys.json), version (swapper.order-attestation.v1), field (data.deposit.attestation), scope }.
  - `trust` object: Facts derived from the running configuration: custody (Swapper holds no funds and never signs), provider (what it receives, what Swapper checks and cannot check), fees, data retention, unknowns.
  - `provider` object: { name: wagyu, apiVersion, unknownOutcomeRecovery }.
  - `statusLongPoll` object: { params: [waitSec, sinceState], maxWaitSec, recheckIntervalSec, note }
  - `validationRules` object: amount, receiveAmount, destination address and idempotency-key rules.
  - `funding` object
    - `path` string
    - `url` string, nullable
  - `limits` object
    - `minSwapUsd` object, nullable: Provider minimum swap value in USD by send chain name; on Wagyu v2 the value recent quotes reported. null when none is known (for example the provider is unreachable).
    - `source` string
    - `note` string
  - `unsupported` string[]: Provider features Swapper does not offer or cannot verify (for example: no published minimum receive amount).
  - `lifecycle` object
  - `idempotency` object

---

[API](https://skmtc.dev/xmrtousdc/apis/swapper-agent-api.md) · [All operations](https://skmtc.dev/xmrtousdc/apis/swapper-agent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/xmrtousdc/apis/swapper-agent-api/revisions/9f4252126907?raw)
