Skip to content
Back to AssetFare Route Quotes

Card snapshot

api.assetfare.dev · 2026-10-08 16:55:15 UTC · f7a3a05a02c6223384bae16dd26695b241c1c78d590c56cb9075c752cf03d4ce

This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.

{
  "name": "AssetFare Route Quotes",
  "description": "AssetFare is a non-custodial service with 98 technically available routes. Forty-four are price-recommended only at or above their published threshold; 54 have no current price recommendation. Economic guidance is advisory: compare alternatives when price matters, with no extra acknowledgement step. Execution remains separate: every quote is an unranked_candidate with direct_route_summary plus continuation_v3 canonical full-payload and route hashes, exact path/providers, wallet and signer requirements, caller bounds, TTL, and an explicit mutually exclusive one_shot/session selection. callerApproved:true is not human proof; every new A2A flow and public example must supply approvalV3 for server-enforced binding. AssetFare never auto-selects, auto-creates approval, signs, or submits.",
  "supportedInterfaces": [
    {
      "url": "https://api.assetfare.dev/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "AssetFare",
    "url": "https://assetfare.dev"
  },
  "version": "1.6.1",
  "documentationUrl": "https://assetfare.dev/llms-full.txt",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extensions": [],
    "extendedAgentCard": false
  },
  "securitySchemes": {},
  "securityRequirements": [],
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "quote-cross-chain-route",
      "name": "Quote a cross-chain route",
      "description": "Return one fresh unranked_candidate quote with amount-specific guidance, total token-path cost, direct_route_summary, strict continuation_v3 binding, and route-exact unsigned prepare requirements. price_recommended_for_amount is advisory; compare alternatives when price matters, but no economic acknowledgement field is required. It does not inspect balances, react automatically to a 402, or auto-select or auto-prepare. Execution remains separate: the caller must supply approvalV3 for exactly one mode. Read-only; never prepares, signs, or submits.",
      "tags": [
        "native-usdc",
        "solana-usdc",
        "base-usdc",
        "unsigned-transaction-plan",
        "caller-signed",
        "agent-wallet-funding",
        "payment-wallet-funding",
        "x402-wallet-funding",
        "cross-chain",
        "bridge",
        "swap",
        "crypto",
        "quote",
        "solana",
        "base",
        "arbitrum",
        "robinhood",
        "polygon",
        "optimism",
        "non-custodial"
      ],
      "examples": [
        "{\"fromChain\":\"solana\",\"fromToken\":\"USDC\",\"toChain\":\"base\",\"toToken\":\"USDC\",\"amountUsd\":1000}",
        "{\"fromChain\":\"solana\",\"fromToken\":\"SOL\",\"toChain\":\"base\",\"toToken\":\"USDC\",\"amountUsd\":1000}",
        "{\"fromChain\":\"optimism\",\"fromToken\":\"USDC\",\"toChain\":\"base\",\"toToken\":\"USDC\",\"amountUsd\":1000}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "securityRequirements": []
    },
    {
      "id": "prepare-first-unsigned-action",
      "name": "Prepare the first unsigned action (caller-approved)",
      "description": "Explicit one-shot POST /v2/prepare. The caller supplies approvalV3 selected_mode=one_shot and the exact hash-bound verificationContext. The adapter validates context before upstream, deeply verifies the returned EVM/Solana action and caller bounds, then emits a self-verifying caller-wallet handoff. Multi-step quotes reject one-shot. callerApproved must be supplied explicitly and is not human proof. Never auto-called; AssetFare never signs or submits.",
      "tags": [
        "prepare",
        "unsigned-action",
        "cross-chain",
        "non-custodial",
        "caller-approved"
      ],
      "examples": [
        "{\"operation\":\"prepare\",\"callerApproved\":true,\"fromChain\":\"arbitrum\",\"fromToken\":\"ETH\",\"toChain\":\"arbitrum\",\"toToken\":\"USDC\",\"amountUsd\":2500,\"wallets\":{\"arbitrum\":\"0x2222222222222222222222222222222222222222\"},\"approvalV3\":{\"version\":\"assetfare-quote-bound-approval-v3\",\"quote_id\":\"<COPY_FROM_QUOTE>\",\"quote_fingerprint\":\"<COPY_64_HEX_FROM_QUOTE>\",\"selection_status\":\"selected\",\"selected_mode\":\"one_shot\",\"maximum_input_base\":\"<COPY_OR_STRENGTHEN_QUOTE_MAXIMUM>\",\"minimum_output_base\":\"<COPY_OR_STRENGTHEN_QUOTE_MINIMUM>\",\"direct_route_summary_sha256\":\"<COPY_64_HEX_FROM_QUOTE>\",\"idempotency_key\":\"prepare-0001\"},\"verificationContext\":{\"version\":\"assetfare-one-shot-verification-context-v1\",\"intent\":\"<COPY_EXACT_INTENT_OBJECT>\",\"wallets\":\"<COPY_PUBLIC_WALLET_MAP>\",\"event_signer_public\":null,\"approval_v3\":\"<COPY_EXACT_APPROVAL_V3_OBJECT>\",\"direct_route_summary\":\"<COPY_EXACT_DIRECT_ROUTE_SUMMARY_OBJECT>\",\"verification_context_sha256\":\"<RECOMPUTE_64_HEX>\"}}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "securityRequirements": []
    },
    {
      "id": "session-lifecycle",
      "name": "Run the caller-approved session lifecycle",
      "description": "Full quote-bound receipt-driven session lifecycle. Every A2A session call requires the caller-held hash-bound verificationContext; the adapter validates it before any upstream call, deeply verifies every current EVM/Solana action, and returns a fresh self-verifying caller-wallet handoff. Session create also requires approvalV3 selected_mode=session and the same idempotencyKey. The caller locally generates the sessionToken and never exposes its raw value in logs. callerApproved is explicit but not human proof. Never auto-chains, signs, or submits.",
      "tags": [
        "session",
        "lifecycle",
        "observe",
        "receipts",
        "non-custodial",
        "caller-approved"
      ],
      "examples": [
        "{\"operation\":\"session_create\",\"callerApproved\":true,\"fromChain\":\"arbitrum\",\"fromToken\":\"ETH\",\"toChain\":\"arbitrum\",\"toToken\":\"USDC\",\"amountUsd\":2500,\"wallets\":{\"arbitrum\":\"0x2222222222222222222222222222222222222222\"},\"sessionToken\":\"<CALLER_GENERATED_43_CHAR_BASE64URL_CAPABILITY>\",\"idempotencyKey\":\"create-0001\",\"approvalV3\":{\"version\":\"assetfare-quote-bound-approval-v3\",\"quote_id\":\"<COPY_FROM_QUOTE>\",\"quote_fingerprint\":\"<COPY_64_HEX_FROM_QUOTE>\",\"selection_status\":\"selected\",\"selected_mode\":\"session\",\"maximum_input_base\":\"<COPY_OR_STRENGTHEN_QUOTE_MAXIMUM>\",\"minimum_output_base\":\"<COPY_OR_STRENGTHEN_QUOTE_MINIMUM>\",\"direct_route_summary_sha256\":\"<COPY_64_HEX_FROM_QUOTE>\",\"idempotency_key\":\"create-0001\"},\"verificationContext\":{\"version\":\"assetfare-session-verification-context-v1\",\"intent\":\"<COPY_EXACT_INTENT_OBJECT>\",\"wallets\":\"<COPY_PUBLIC_WALLET_MAP>\",\"event_signer_public\":null,\"approval_v3\":\"<COPY_EXACT_APPROVAL_V3_OBJECT>\",\"direct_route_summary\":\"<COPY_EXACT_DIRECT_ROUTE_SUMMARY_OBJECT>\",\"verification_context_sha256\":\"<RECOMPUTE_64_HEX>\"}}",
        "{\"operation\":\"observe_source\",\"sessionId\":\"00000000-0000-4000-8000-000000000001\",\"sessionToken\":\"<capability>\",\"idempotencyKey\":\"src-0001\",\"transactionHashes\":[\"<caller-submitted-hash>\"],\"verificationContext\":\"<SAME_HASHED_CONTEXT_USED_AT_CREATE>\"}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "securityRequirements": []
    }
  ],
  "signatures": []
}