Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,070Paid calls: 1,524Letters: 13Defects: 1,322counted 2 min ago
teppi

Server definition

Hash
sha256:67c005b3b982ee6b68683d8d1d6a238e28a2ef390bec4306c37c5f423d996dab
What it is
What a remote MCP server returned when asked what it offers: 9 tools

The blob, as servednamed by its sha256

{ "instructions": "Current AssetFare v2 endpoint: 42 economically active non-custodial routes; 48 measured routes are inactive. Start with assetfare_v2_capabilities, then quote. Prepare only after explicit caller approval and public wallets; choose one-shot prepare or session mode, never both. Session capabilities are generated client-side. AssetFare never receives private keys, signs, or submits. Legacy tools live at https://api.assetfare.dev/mcp/legacy.", "tools": [ { "description": "Read the Ed25519-signed release manifest and safety-bundle binding before preparing an action. Example: call this once to verify the current release and contract pins; it never creates state, signs, or submits.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {}, "type": "object" }, "name": "assetfare_manifest", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": true, "properties": { "execution": { "additionalProperties": {}, "type": "object" }, "release_commit": { "pattern": "^[0-9a-f]{40}$", "type": "string" }, "safety_bundle": { "additionalProperties": true, "properties": { "canonicalization": { "minLength": 1, "type": "string" }, "schema": { "format": "uri", "type": "string" }, "sha256": { "pattern": "^[0-9a-f]{64}$", "type": "string" }, "url": { "format": "uri", "type": "string" } }, "required": [ "schema", "url", "sha256", "canonicalization" ], "type": "object" }, "service": { "const": "AssetFare", "type": "string" }, "signature": { "additionalProperties": true, "properties": { "algorithm": { "const": "Ed25519", "type": "string" }, "key_id": { "minLength": 1, "type": "string" }, "public_key_url": { "format": "uri", "type": "string" }, "value": { "minLength": 1, "type": "string" } }, "required": [ "algorithm", "key_id", "public_key_url", "value" ], "type": "object" } }, "required": [ "service", "release_commit", "execution", "safety_bundle", "signature" ], "type": "object" } }, { "description": "Read the 42 active routes, 48 economically inactive routes, live availability, route-specific guidance, direct_route_summary, and continuation_v3 contracts before quoting. Forty active routes have a verified best-from amount; two Sei routes are active for unique availability without a price threshold. Example: call once before requesting an exact route quote. Confirm every fresh quote. continuation_v3 separately binds execution selection, wallets, bounds, and mode. Read-only; creates no wallet login, session, or action.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {}, "type": "object" }, "name": "assetfare_v2_capabilities", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": true, "properties": { "action_lifetime": { "additionalProperties": false, "properties": { "action_bundle_ttl_seconds": { "const": 180, "type": "number" }, "onchain_deadline_seconds": { "const": 240, "type": "number" }, "quote_ttl_seconds": { "const": 60, "type": "number" }, "refresh_policy": { "const": "expired_unsubmitted_only", "type": "string" }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "wallet_ready_minimum_remaining_seconds": { "const": 120, "type": "number" } }, "required": [ "quote_ttl_seconds", "action_bundle_ttl_seconds", "onchain_deadline_seconds", "wallet_ready_minimum_remaining_seconds", "refresh_policy", "server_signing", "server_submission" ], "type": "object" }, "asset_endpoints": { "items": { "additionalProperties": false, "properties": { "chain": { "enum": [ "solana", "base", "arbitrum", "robinhood", "polygon", "optimism", "ethereum", "hyperevm", "xlayer", "sei", "sonic" ], "type": "string" }, "token": { "enum": [ "SOL", "ETH", "USDC", "USDG" ], "type": "string" } }, "required": [ "chain", "token" ], "type": "object" }, "maxItems": 16, "minItems": 11, "type": "array" }, "blocked_source_only_routes": { "items": { "not": {} }, "maxItems": 0, "minItems": 0, "type": "array" }, "caller_owned_agent_execution": { "anyOf": [ { "additionalProperties": false, "properties": { "a2a_remote_skill": { "const": false, "type": "boolean" }, "assetfare_server_key_access": { "const": false, "type": "boolean" }, "assetfare_server_signing": { "const": false, "type": "boolean" }, "assetfare_server_submission": { "const": false, "type": "boolean" }, "command": { "const": "assetfare-agent-runner", "type": "string" }, "key_location": { "const": "caller_wallet_adapter_only", "type": "string" }, "minimum_package_version": { "const": "1.5.0", "type": "string" }, "package": { "const": "assetfare-mcp", "type": "string" }, "policy_schema": { "const": "https://assetfare.dev/schemas/caller-owned-execution-policy-v1.json", "type": "string" }, "remote_mcp_tool": { "const": false, "type": "boolean" }, "scope": { "const": "caller_process_only", "type": "string" }, "supported": { "const": true, "type": "boolean" }, "version": { "const": "assetfare-caller-owned-agent-execution-v1", "type": "string" }, "wallet_adapter_contract_version": { "const": "assetfare-caller-wallet-adapter-v1", "type": "string" } }, "required": [ "supported", "scope", "package", "command", "key_location", "remote_mcp_tool", "a2a_remote_skill", "assetfare_server_key_access", "assetfare_server_signing", "assetfare_server_submission", "version", "minimum_package_version", "policy_schema", "wallet_adapter_contract_version" ], "type": "object" }, { "additionalProperties": false, "properties": { "a2a_remote_skill": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/a2a_remote_skill" }, "assetfare_server_key_access": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_key_access" }, "assetfare_server_signing": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_signing" }, "assetfare_server_submission": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_submission" }, "command": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/command" }, "key_location": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/key_location" }, "minimum_package_version": { "const": "1.6.0", "type": "string" }, "package": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/package" }, "policy_schema": { "const": "https://assetfare.dev/schemas/caller-owned-execution-policy-v2.json", "type": "string" }, "remote_mcp_tool": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/remote_mcp_tool" }, "scope": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/scope" }, "supported": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/supported" }, "version": { "const": "assetfare-caller-owned-agent-execution-v2", "type": "string" }, "wallet_adapter_contract_version": { "const": "assetfare-caller-wallet-adapter-v2", "type": "string" } }, "required": [ "supported", "scope", "package", "command", "key_location", "remote_mcp_tool", "a2a_remote_skill", "assetfare_server_key_access", "assetfare_server_signing", "assetfare_server_submission", "version", "minimum_package_version", "policy_schema", "wallet_adapter_contract_version" ], "type": "object" }, { "additionalProperties": false, "properties": { "a2a_remote_skill": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/a2a_remote_skill" }, "assetfare_server_key_access": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_key_access" }, "assetfare_server_signing": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_signing" }, "assetfare_server_submission": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_submission" }, "command": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/command" }, "key_location": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/key_location" }, "minimum_package_version": { "const": "1.6.1", "type": "string" }, "package": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/package" }, "policy_schema": { "const": "https://assetfare.dev/schemas/caller-owned-execution-policy-v2.json", "type": "string" }, "remote_mcp_tool": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/remote_mcp_tool" }, "scope": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/scope" }, "supported": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/supported" }, "version": { "const": "assetfare-caller-owned-agent-execution-v2", "type": "string" }, "wallet_adapter_contract_version": { "const": "assetfare-caller-wallet-adapter-v2", "type": "string" } }, "required": [ "supported", "scope", "package", "command", "key_location", "remote_mcp_tool", "a2a_remote_skill", "assetfare_server_key_access", "assetfare_server_signing", "assetfare_server_submission", "version", "minimum_package_version", "policy_schema", "wallet_adapter_contract_version" ], "type": "object" }, { "additionalProperties": false, "properties": { "a2a_remote_skill": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/a2a_remote_skill" }, "assetfare_server_key_access": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_key_access" }, "assetfare_server_signing": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_signing" }, "assetfare_server_submission": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_submission" }, "command": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/command" }, "key_location": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/key_location" }, "minimum_package_version": { "const": "1.6.2", "type": "string" }, "package": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/package" }, "policy_schema": { "const": "https://assetfare.dev/schemas/caller-owned-execution-policy-v2.json", "type": "string" }, "remote_mcp_tool": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/remote_mcp_tool" }, "scope": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/scope" }, "supported": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/supported" }, "version": { "const": "assetfare-caller-owned-agent-execution-v2", "type": "string" }, "wallet_adapter_contract_version": { "const": "assetfare-caller-wallet-adapter-v2", "type": "string" } }, "required": [ "supported", "scope", "package", "command", "key_location", "remote_mcp_tool", "a2a_remote_skill", "assetfare_server_key_access", "assetfare_server_signing", "assetfare_server_submission", "version", "minimum_package_version", "policy_schema", "wallet_adapter_contract_version" ], "type": "object" }, { "additionalProperties": false, "properties": { "a2a_remote_skill": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/a2a_remote_skill" }, "assetfare_server_key_access": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_key_access" }, "assetfare_server_signing": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_signing" }, "assetfare_server_submission": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_submission" }, "command": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/command" }, "key_location": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/key_location" }, "minimum_package_version": { "const": "1.7.0", "type": "string" }, "package": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/package" }, "policy_schema": { "const": "https://assetfare.dev/schemas/caller-owned-execution-policy-v2.json", "type": "string" }, "remote_mcp_tool": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/remote_mcp_tool" }, "scope": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/scope" }, "supported": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/supported" }, "version": { "const": "assetfare-caller-owned-agent-execution-v2", "type": "string" }, "wallet_adapter_contract_version": { "const": "assetfare-caller-wallet-adapter-v2", "type": "string" } }, "required": [ "supported", "scope", "package", "command", "key_location", "remote_mcp_tool", "a2a_remote_skill", "assetfare_server_key_access", "assetfare_server_signing", "assetfare_server_submission", "version", "minimum_package_version", "policy_schema", "wallet_adapter_contract_version" ], "type": "object" }, { "additionalProperties": false, "properties": { "a2a_remote_skill": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/a2a_remote_skill" }, "assetfare_server_key_access": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_key_access" }, "assetfare_server_signing": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_signing" }, "assetfare_server_submission": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_submission" }, "command": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/command" }, "key_location": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/key_location" }, "minimum_package_version": { "const": "1.7.1", "type": "string" }, "package": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/package" }, "policy_schema": { "const": "https://assetfare.dev/schemas/caller-owned-execution-policy-v2.json", "type": "string" }, "remote_mcp_tool": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/remote_mcp_tool" }, "scope": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/scope" }, "supported": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/supported" }, "version": { "const": "assetfare-caller-owned-agent-execution-v2", "type": "string" }, "wallet_adapter_contract_version": { "const": "assetfare-caller-wallet-adapter-v2", "type": "string" } }, "required": [ "supported", "scope", "package", "command", "key_location", "remote_mcp_tool", "a2a_remote_skill", "assetfare_server_key_access", "assetfare_server_signing", "assetfare_server_submission", "version", "minimum_package_version", "policy_schema", "wallet_adapter_contract_version" ], "type": "object" }, { "additionalProperties": false, "properties": { "a2a_remote_skill": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/a2a_remote_skill" }, "assetfare_server_key_access": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_key_access" }, "assetfare_server_signing": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_signing" }, "assetfare_server_submission": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_submission" }, "command": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/command" }, "key_location": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/key_location" }, "minimum_package_version": { "const": "1.8.0", "type": "string" }, "package": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/package" }, "policy_schema": { "const": "https://assetfare.dev/schemas/caller-owned-execution-policy-v2.json", "type": "string" }, "remote_mcp_tool": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/remote_mcp_tool" }, "scope": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/scope" }, "supported": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/supported" }, "version": { "const": "assetfare-caller-owned-agent-execution-v2", "type": "string" }, "wallet_adapter_contract_version": { "const": "assetfare-caller-wallet-adapter-v2", "type": "string" } }, "required": [ "supported", "scope", "package", "command", "key_location", "remote_mcp_tool", "a2a_remote_skill", "assetfare_server_key_access", "assetfare_server_signing", "assetfare_server_submission", "version", "minimum_package_version", "policy_schema", "wallet_adapter_contract_version" ], "type": "object" }, { "additionalProperties": false, "properties": { "a2a_remote_skill": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/a2a_remote_skill" }, "assetfare_server_key_access": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_key_access" }, "assetfare_server_signing": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_signing" }, "assetfare_server_submission": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_submission" }, "command": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/command" }, "key_location": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/key_location" }, "minimum_package_version": { "const": "1.8.1", "type": "string" }, "package": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/package" }, "policy_schema": { "const": "https://assetfare.dev/schemas/caller-owned-execution-policy-v2.json", "type": "string" }, "remote_mcp_tool": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/remote_mcp_tool" }, "scope": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/scope" }, "supported": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/supported" }, "version": { "const": "assetfare-caller-owned-agent-execution-v2", "type": "string" }, "wallet_adapter_contract_version": { "const": "assetfare-caller-wallet-adapter-v2", "type": "string" } }, "required": [ "supported", "scope", "package", "command", "key_location", "remote_mcp_tool", "a2a_remote_skill", "assetfare_server_key_access", "assetfare_server_signing", "assetfare_server_submission", "version", "minimum_package_version", "policy_schema", "wallet_adapter_contract_version" ], "type": "object" }, { "additionalProperties": false, "properties": { "a2a_remote_skill": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/a2a_remote_skill" }, "assetfare_server_key_access": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_key_access" }, "assetfare_server_signing": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_signing" }, "assetfare_server_submission": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_submission" }, "command": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/command" }, "key_location": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/key_location" }, "minimum_package_version": { "const": "1.8.2", "type": "string" }, "package": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/package" }, "policy_schema": { "const": "https://assetfare.dev/schemas/caller-owned-execution-policy-v2.json", "type": "string" }, "remote_mcp_tool": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/remote_mcp_tool" }, "scope": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/scope" }, "supported": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/supported" }, "version": { "const": "assetfare-caller-owned-agent-execution-v2", "type": "string" }, "wallet_adapter_contract_version": { "const": "assetfare-caller-wallet-adapter-v2", "type": "string" } }, "required": [ "supported", "scope", "package", "command", "key_location", "remote_mcp_tool", "a2a_remote_skill", "assetfare_server_key_access", "assetfare_server_signing", "assetfare_server_submission", "version", "minimum_package_version", "policy_schema", "wallet_adapter_contract_version" ], "type": "object" }, { "additionalProperties": false, "properties": { "a2a_remote_skill": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/a2a_remote_skill" }, "assetfare_server_key_access": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_key_access" }, "assetfare_server_signing": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_signing" }, "assetfare_server_submission": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_submission" }, "command": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/command" }, "key_location": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/key_location" }, "minimum_package_version": { "const": "1.8.3", "type": "string" }, "package": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/package" }, "policy_schema": { "const": "https://assetfare.dev/schemas/caller-owned-execution-policy-v2.json", "type": "string" }, "remote_mcp_tool": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/remote_mcp_tool" }, "scope": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/scope" }, "supported": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/supported" }, "version": { "const": "assetfare-caller-owned-agent-execution-v2", "type": "string" }, "wallet_adapter_contract_version": { "const": "assetfare-caller-wallet-adapter-v2", "type": "string" } }, "required": [ "supported", "scope", "package", "command", "key_location", "remote_mcp_tool", "a2a_remote_skill", "assetfare_server_key_access", "assetfare_server_signing", "assetfare_server_submission", "version", "minimum_package_version", "policy_schema", "wallet_adapter_contract_version" ], "type": "object" }, { "additionalProperties": false, "properties": { "a2a_remote_skill": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/a2a_remote_skill" }, "assetfare_server_key_access": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_key_access" }, "assetfare_server_signing": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_signing" }, "assetfare_server_submission": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_submission" }, "command": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/command" }, "key_location": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/key_location" }, "minimum_package_version": { "const": "1.8.4", "type": "string" }, "package": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/package" }, "policy_schema": { "const": "https://assetfare.dev/schemas/caller-owned-execution-policy-v2.json", "type": "string" }, "remote_mcp_tool": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/remote_mcp_tool" }, "scope": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/scope" }, "supported": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/supported" }, "version": { "const": "assetfare-caller-owned-agent-execution-v2", "type": "string" }, "wallet_adapter_contract_version": { "const": "assetfare-caller-wallet-adapter-v2", "type": "string" } }, "required": [ "supported", "scope", "package", "command", "key_location", "remote_mcp_tool", "a2a_remote_skill", "assetfare_server_key_access", "assetfare_server_signing", "assetfare_server_submission", "version", "minimum_package_version", "policy_schema", "wallet_adapter_contract_version" ], "type": "object" }, { "additionalProperties": false, "properties": { "a2a_remote_skill": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/a2a_remote_skill" }, "assetfare_server_key_access": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_key_access" }, "assetfare_server_signing": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_signing" }, "assetfare_server_submission": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_submission" }, "command": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/command" }, "key_location": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/key_location" }, "minimum_package_version": { "const": "1.9.0", "type": "string" }, "package": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/package" }, "policy_schema": { "const": "https://assetfare.dev/schemas/caller-owned-execution-policy-v2.json", "type": "string" }, "remote_mcp_tool": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/remote_mcp_tool" }, "scope": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/scope" }, "supported": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/supported" }, "version": { "const": "assetfare-caller-owned-agent-execution-v2", "type": "string" }, "wallet_adapter_contract_version": { "const": "assetfare-caller-wallet-adapter-v2", "type": "string" } }, "required": [ "supported", "scope", "package", "command", "key_location", "remote_mcp_tool", "a2a_remote_skill", "assetfare_server_key_access", "assetfare_server_signing", "assetfare_server_submission", "version", "minimum_package_version", "policy_schema", "wallet_adapter_contract_version" ], "type": "object" }, { "additionalProperties": false, "properties": { "a2a_remote_skill": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/a2a_remote_skill" }, "assetfare_server_key_access": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_key_access" }, "assetfare_server_signing": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_signing" }, "assetfare_server_submission": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_submission" }, "command": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/command" }, "key_location": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/key_location" }, "minimum_package_version": { "const": "1.10.0", "type": "string" }, "package": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/package" }, "policy_schema": { "const": "https://assetfare.dev/schemas/caller-owned-execution-policy-v2.json", "type": "string" }, "remote_mcp_tool": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/remote_mcp_tool" }, "scope": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/scope" }, "supported": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/supported" }, "version": { "const": "assetfare-caller-owned-agent-execution-v2", "type": "string" }, "wallet_adapter_contract_version": { "const": "assetfare-caller-wallet-adapter-v2", "type": "string" } }, "required": [ "supported", "scope", "package", "command", "key_location", "remote_mcp_tool", "a2a_remote_skill", "assetfare_server_key_access", "assetfare_server_signing", "assetfare_server_submission", "version", "minimum_package_version", "policy_schema", "wallet_adapter_contract_version" ], "type": "object" }, { "additionalProperties": false, "properties": { "a2a_remote_skill": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/a2a_remote_skill" }, "assetfare_server_key_access": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_key_access" }, "assetfare_server_signing": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_signing" }, "assetfare_server_submission": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_submission" }, "command": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/command" }, "key_location": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/key_location" }, "minimum_package_version": { "const": "1.11.0", "type": "string" }, "package": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/package" }, "policy_schema": { "const": "https://assetfare.dev/schemas/caller-owned-execution-policy-v2.json", "type": "string" }, "remote_mcp_tool": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/remote_mcp_tool" }, "scope": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/scope" }, "supported": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/supported" }, "version": { "const": "assetfare-caller-owned-agent-execution-v2", "type": "string" }, "wallet_adapter_contract_version": { "const": "assetfare-caller-wallet-adapter-v2", "type": "string" } }, "required": [ "supported", "scope", "package", "command", "key_location", "remote_mcp_tool", "a2a_remote_skill", "assetfare_server_key_access", "assetfare_server_signing", "assetfare_server_submission", "version", "minimum_package_version", "policy_schema", "wallet_adapter_contract_version" ], "type": "object" }, { "additionalProperties": false, "properties": { "a2a_remote_skill": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/a2a_remote_skill" }, "assetfare_server_key_access": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_key_access" }, "assetfare_server_signing": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_signing" }, "assetfare_server_submission": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_submission" }, "command": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/command" }, "key_location": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/key_location" }, "minimum_package_version": { "const": "1.12.0", "type": "string" }, "package": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/package" }, "policy_schema": { "const": "https://assetfare.dev/schemas/caller-owned-execution-policy-v2.json", "type": "string" }, "remote_mcp_tool": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/remote_mcp_tool" }, "scope": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/scope" }, "supported": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/supported" }, "version": { "const": "assetfare-caller-owned-agent-execution-v2", "type": "string" }, "wallet_adapter_contract_version": { "const": "assetfare-caller-wallet-adapter-v2", "type": "string" } }, "required": [ "supported", "scope", "package", "command", "key_location", "remote_mcp_tool", "a2a_remote_skill", "assetfare_server_key_access", "assetfare_server_signing", "assetfare_server_submission", "version", "minimum_package_version", "policy_schema", "wallet_adapter_contract_version" ], "type": "object" }, { "additionalProperties": false, "properties": { "a2a_remote_skill": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/a2a_remote_skill" }, "assetfare_server_key_access": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_key_access" }, "assetfare_server_signing": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_signing" }, "assetfare_server_submission": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_submission" }, "command": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/command" }, "key_location": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/key_location" }, "minimum_package_version": { "const": "1.13.0", "type": "string" }, "package": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/package" }, "policy_schema": { "const": "https://assetfare.dev/schemas/caller-owned-execution-policy-v2.json", "type": "string" }, "remote_mcp_tool": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/remote_mcp_tool" }, "scope": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/scope" }, "supported": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/supported" }, "version": { "const": "assetfare-caller-owned-agent-execution-v2", "type": "string" }, "wallet_adapter_contract_version": { "const": "assetfare-caller-wallet-adapter-v2", "type": "string" } }, "required": [ "supported", "scope", "package", "command", "key_location", "remote_mcp_tool", "a2a_remote_skill", "assetfare_server_key_access", "assetfare_server_signing", "assetfare_server_submission", "version", "minimum_package_version", "policy_schema", "wallet_adapter_contract_version" ], "type": "object" }, { "additionalProperties": false, "properties": { "a2a_remote_skill": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/a2a_remote_skill" }, "assetfare_server_key_access": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_key_access" }, "assetfare_server_signing": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_signing" }, "assetfare_server_submission": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_submission" }, "command": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/command" }, "key_location": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/key_location" }, "minimum_package_version": { "const": "1.13.1", "type": "string" }, "package": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/package" }, "policy_schema": { "const": "https://assetfare.dev/schemas/caller-owned-execution-policy-v2.json", "type": "string" }, "remote_mcp_tool": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/remote_mcp_tool" }, "scope": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/scope" }, "supported": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/supported" }, "version": { "const": "assetfare-caller-owned-agent-execution-v2", "type": "string" }, "wallet_adapter_contract_version": { "const": "assetfare-caller-wallet-adapter-v2", "type": "string" } }, "required": [ "supported", "scope", "package", "command", "key_location", "remote_mcp_tool", "a2a_remote_skill", "assetfare_server_key_access", "assetfare_server_signing", "assetfare_server_submission", "version", "minimum_package_version", "policy_schema", "wallet_adapter_contract_version" ], "type": "object" }, { "additionalProperties": false, "properties": { "a2a_remote_skill": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/a2a_remote_skill" }, "assetfare_server_key_access": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_key_access" }, "assetfare_server_signing": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_signing" }, "assetfare_server_submission": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_submission" }, "command": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/command" }, "key_location": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/key_location" }, "minimum_package_version": { "const": "1.13.2", "type": "string" }, "package": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/package" }, "policy_schema": { "const": "https://assetfare.dev/schemas/caller-owned-execution-policy-v2.json", "type": "string" }, "remote_mcp_tool": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/remote_mcp_tool" }, "scope": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/scope" }, "supported": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/supported" }, "version": { "const": "assetfare-caller-owned-agent-execution-v2", "type": "string" }, "wallet_adapter_contract_version": { "const": "assetfare-caller-wallet-adapter-v2", "type": "string" } }, "required": [ "supported", "scope", "package", "command", "key_location", "remote_mcp_tool", "a2a_remote_skill", "assetfare_server_key_access", "assetfare_server_signing", "assetfare_server_submission", "version", "minimum_package_version", "policy_schema", "wallet_adapter_contract_version" ], "type": "object" }, { "additionalProperties": false, "properties": { "a2a_remote_skill": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/a2a_remote_skill" }, "assetfare_server_key_access": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_key_access" }, "assetfare_server_signing": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_signing" }, "assetfare_server_submission": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_submission" }, "command": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/command" }, "key_location": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/key_location" }, "minimum_package_version": { "const": "1.14.0", "type": "string" }, "package": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/package" }, "policy_schema": { "const": "https://assetfare.dev/schemas/caller-owned-execution-policy-v2.json", "type": "string" }, "remote_mcp_tool": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/remote_mcp_tool" }, "scope": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/scope" }, "supported": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/supported" }, "version": { "const": "assetfare-caller-owned-agent-execution-v2", "type": "string" }, "wallet_adapter_contract_version": { "const": "assetfare-caller-wallet-adapter-v2", "type": "string" } }, "required": [ "supported", "scope", "package", "command", "key_location", "remote_mcp_tool", "a2a_remote_skill", "assetfare_server_key_access", "assetfare_server_signing", "assetfare_server_submission", "version", "minimum_package_version", "policy_schema", "wallet_adapter_contract_version" ], "type": "object" }, { "additionalProperties": false, "properties": { "a2a_remote_skill": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/a2a_remote_skill" }, "assetfare_server_key_access": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_key_access" }, "assetfare_server_signing": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_signing" }, "assetfare_server_submission": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_submission" }, "command": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/command" }, "key_location": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/key_location" }, "minimum_package_version": { "const": "1.14.1", "type": "string" }, "package": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/package" }, "policy_schema": { "const": "https://assetfare.dev/schemas/caller-owned-execution-policy-v2.json", "type": "string" }, "remote_mcp_tool": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/remote_mcp_tool" }, "scope": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/scope" }, "supported": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/supported" }, "version": { "const": "assetfare-caller-owned-agent-execution-v2", "type": "string" }, "wallet_adapter_contract_version": { "const": "assetfare-caller-wallet-adapter-v2", "type": "string" } }, "required": [ "supported", "scope", "package", "command", "key_location", "remote_mcp_tool", "a2a_remote_skill", "assetfare_server_key_access", "assetfare_server_signing", "assetfare_server_submission", "version", "minimum_package_version", "policy_schema", "wallet_adapter_contract_version" ], "type": "object" }, { "additionalProperties": false, "properties": { "a2a_remote_skill": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/a2a_remote_skill" }, "assetfare_server_key_access": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_key_access" }, "assetfare_server_signing": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_signing" }, "assetfare_server_submission": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_submission" }, "command": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/command" }, "key_location": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/key_location" }, "minimum_package_version": { "const": "1.14.2", "type": "string" }, "package": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/package" }, "policy_schema": { "const": "https://assetfare.dev/schemas/caller-owned-execution-policy-v2.json", "type": "string" }, "remote_mcp_tool": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/remote_mcp_tool" }, "scope": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/scope" }, "supported": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/supported" }, "version": { "const": "assetfare-caller-owned-agent-execution-v2", "type": "string" }, "wallet_adapter_contract_version": { "const": "assetfare-caller-wallet-adapter-v2", "type": "string" } }, "required": [ "supported", "scope", "package", "command", "key_location", "remote_mcp_tool", "a2a_remote_skill", "assetfare_server_key_access", "assetfare_server_signing", "assetfare_server_submission", "version", "minimum_package_version", "policy_schema", "wallet_adapter_contract_version" ], "type": "object" }, { "additionalProperties": false, "properties": { "a2a_remote_skill": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/a2a_remote_skill" }, "assetfare_server_key_access": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_key_access" }, "assetfare_server_signing": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_signing" }, "assetfare_server_submission": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_submission" }, "command": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/command" }, "key_location": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/key_location" }, "minimum_package_version": { "const": "1.14.3", "type": "string" }, "package": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/package" }, "policy_schema": { "const": "https://assetfare.dev/schemas/caller-owned-execution-policy-v2.json", "type": "string" }, "remote_mcp_tool": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/remote_mcp_tool" }, "scope": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/scope" }, "supported": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/supported" }, "version": { "const": "assetfare-caller-owned-agent-execution-v2", "type": "string" }, "wallet_adapter_contract_version": { "const": "assetfare-caller-wallet-adapter-v2", "type": "string" } }, "required": [ "supported", "scope", "package", "command", "key_location", "remote_mcp_tool", "a2a_remote_skill", "assetfare_server_key_access", "assetfare_server_signing", "assetfare_server_submission", "version", "minimum_package_version", "policy_schema", "wallet_adapter_contract_version" ], "type": "object" }, { "additionalProperties": false, "properties": { "a2a_remote_skill": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/a2a_remote_skill" }, "assetfare_server_key_access": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_key_access" }, "assetfare_server_signing": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_signing" }, "assetfare_server_submission": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_submission" }, "command": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/command" }, "key_location": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/key_location" }, "minimum_package_version": { "const": "1.14.4", "type": "string" }, "package": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/package" }, "policy_schema": { "const": "https://assetfare.dev/schemas/caller-owned-execution-policy-v2.json", "type": "string" }, "remote_mcp_tool": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/remote_mcp_tool" }, "scope": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/scope" }, "supported": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/supported" }, "version": { "const": "assetfare-caller-owned-agent-execution-v2", "type": "string" }, "wallet_adapter_contract_version": { "const": "assetfare-caller-wallet-adapter-v2", "type": "string" } }, "required": [ "supported", "scope", "package", "command", "key_location", "remote_mcp_tool", "a2a_remote_skill", "assetfare_server_key_access", "assetfare_server_signing", "assetfare_server_submission", "version", "minimum_package_version", "policy_schema", "wallet_adapter_contract_version" ], "type": "object" }, { "additionalProperties": false, "properties": { "a2a_remote_skill": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/a2a_remote_skill" }, "assetfare_server_key_access": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_key_access" }, "assetfare_server_signing": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_signing" }, "assetfare_server_submission": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/assetfare_server_submission" }, "command": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/command" }, "key_location": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/key_location" }, "minimum_package_version": { "const": "1.14.5", "type": "string" }, "package": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/package" }, "policy_schema": { "const": "https://assetfare.dev/schemas/caller-owned-execution-policy-v2.json", "type": "string" }, "remote_mcp_tool": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/remote_mcp_tool" }, "scope": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/scope" }, "supported": { "$ref": "#/properties/caller_owned_agent_execution/anyOf/0/properties/supported" }, "version": { "const": "assetfare-caller-owned-agent-execution-v2", "type": "string" }, "wallet_adapter_contract_version": { "const": "assetfare-caller-wallet-adapter-v2", "type": "string" } }, "required": [ "supported", "scope", "package", "command", "key_location", "remote_mcp_tool", "a2a_remote_skill", "assetfare_server_key_access", "assetfare_server_signing", "assetfare_server_submission", "version", "minimum_package_version", "policy_schema", "wallet_adapter_contract_version" ], "type": "object" } ] }, "chains": { "items": { "enum": [ "solana", "base", "arbitrum", "robinhood", "polygon", "optimism", "ethereum", "hyperevm", "xlayer", "sei", "sonic" ], "type": "string" }, "maxItems": 11, "minItems": 6, "type": "array" }, "continuation_v3": { "additionalProperties": false, "properties": { "automatic_selection_forbidden": { "const": true, "type": "boolean" }, "cache_scope": { "const": "bounded_process_local_ttl_restart_fails_closed", "type": "string" }, "caller_approved_boolean_is_not_human_proof": { "const": true, "type": "boolean" }, "enforcement": { "const": "server_enforced_quote_binding", "type": "string" }, "future_actions_requote_and_enforce_original_step_minimums": { "const": true, "type": "boolean" }, "maximum_cache_records": { "const": 2048, "type": "number" }, "maximum_ttl_seconds": { "const": 60, "type": "number" }, "multistep_allowed_modes": { "items": [ { "const": "session", "type": "string" } ], "maxItems": 1, "minItems": 1, "type": "array" }, "one_step_allowed_modes": { "items": [ { "const": "one_shot", "type": "string" }, { "const": "session", "type": "string" } ], "maxItems": 2, "minItems": 2, "type": "array" }, "quote_payload_sha256_spec": { "const": "sha256(AssetFare typed-canonical-v1 bytes of the quote without continuation_v3 after exact base-unit substitution: n=null; t/f=boolean; d=<IEEE-754 binary64 big-endian 16 lowercase hex> for each finite JSON number; s=<UTF-8 byte length>:<Unicode scalar text with lone surrogates forbidden>; a=<count>:[items]; o=<count>:{UTF-8-byte-sorted string-key/value pairs}; every non-substituted integral JSON number must be within +/-9007199254740991; substituted paths are intent.estimated_input_base, route.input_base, route.expected_output_base, route.minimum_output_base, and every route.steps[i].expected_input_base/floor_input_base/expected_output_base/minimum_output_base from direct_route_summary exact decimal strings)", "type": "string" }, "required_on_every_quote": { "const": true, "type": "boolean" }, "selection_status": { "const": "unranked_candidate", "type": "string" }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "session_owner_binding": { "const": "sha256_of_caller_generated_session_token_raw_token_never_stored", "type": "string" }, "version": { "const": "assetfare-quote-bound-continuation-v3", "type": "string" }, "whole_session_path_and_bounds_enforced": { "const": true, "type": "boolean" } }, "required": [ "version", "required_on_every_quote", "enforcement", "selection_status", "automatic_selection_forbidden", "caller_approved_boolean_is_not_human_proof", "cache_scope", "maximum_ttl_seconds", "maximum_cache_records", "multistep_allowed_modes", "one_step_allowed_modes", "session_owner_binding", "whole_session_path_and_bounds_enforced", "future_actions_requote_and_enforce_original_step_minimums", "quote_payload_sha256_spec", "server_signing", "server_submission" ], "type": "object" }, "currently_prepare_ready_routes": { "maximum": 80, "minimum": 0, "type": "integer" }, "direct_route_summary": { "anyOf": [ { "additionalProperties": false, "properties": { "assetfare_fee_step_bound": { "const": true, "type": "boolean" }, "base_unit_amounts_are_decimal_strings": { "const": true, "type": "boolean" }, "classification_values": { "items": [ { "const": "direct_protocol_only", "type": "string" }, { "const": "external_intent", "type": "string" } ], "maxItems": 2, "minItems": 2, "type": "array" }, "external_intent": { "const": "Across only for Robinhood ingress; provider-internal liquidity sourcing or aggregation remains possible", "type": "string" }, "normalized_chain_asset_endpoints": { "const": true, "type": "boolean" }, "ordered_provider_path": { "const": true, "type": "boolean" }, "required_on_every_quote": { "const": true, "type": "boolean" }, "route_aggregator_used_scope": { "const": "assetfare_engine_only", "type": "string" }, "route_count": { "const": 76, "type": "number" }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "step_count": { "const": 172, "type": "number" }, "version": { "const": "assetfare-direct-route-summary-v1", "type": "string" } }, "required": [ "version", "required_on_every_quote", "route_count", "step_count", "ordered_provider_path", "normalized_chain_asset_endpoints", "base_unit_amounts_are_decimal_strings", "assetfare_fee_step_bound", "classification_values", "route_aggregator_used_scope", "external_intent", "server_signing", "server_submission" ], "type": "object" }, { "additionalProperties": false, "properties": { "assetfare_fee_step_bound": { "const": true, "type": "boolean" }, "base_unit_amounts_are_decimal_strings": { "const": true, "type": "boolean" }, "classification_values": { "items": [ { "const": "direct_protocol_only", "type": "string" }, { "const": "external_intent", "type": "string" } ], "maxItems": 2, "minItems": 2, "type": "array" }, "economic_eligibility_is_route_and_amount_conditioned": { "const": true, "type": "boolean" }, "external_coverage_only_route_count": { "const": 9, "type": "number" }, "external_intent": { "const": "Across only for nine Robinhood ingress coverage routes; provider-internal liquidity sourcing or aggregation remains possible", "type": "string" }, "normalized_chain_asset_endpoints": { "const": true, "type": "boolean" }, "ordered_provider_path": { "const": true, "type": "boolean" }, "primary_direct_route_count": { "const": 67, "type": "number" }, "product_classification_values": { "items": [ { "const": "primary_direct", "type": "string" }, { "const": "external_coverage_only", "type": "string" } ], "maxItems": 2, "minItems": 2, "type": "array" }, "required_on_every_quote": { "const": true, "type": "boolean" }, "route_aggregator_used_scope": { "const": "assetfare_engine_only", "type": "string" }, "route_count": { "const": 76, "type": "number" }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "step_count": { "const": 170, "type": "number" }, "version": { "const": "assetfare-direct-route-summary-v1", "type": "string" } }, "required": [ "version", "required_on_every_quote", "route_count", "primary_direct_route_count", "external_coverage_only_route_count", "step_count", "ordered_provider_path", "normalized_chain_asset_endpoints", "base_unit_amounts_are_decimal_strings", "assetfare_fee_step_bound", "classification_values", "product_classification_values", "economic_eligibility_is_route_and_amount_conditioned", "route_aggregator_used_scope", "external_intent", "server_signing", "server_submission" ], "type": "object" }, { "additionalProperties": false, "properties": { "assetfare_fee_step_bound": { "const": true, "type": "boolean" }, "base_unit_amounts_are_decimal_strings": { "const": true, "type": "boolean" }, "classification_values": { "items": [ { "const": "direct_protocol_only", "type": "string" }, { "const": "external_intent", "type": "string" } ], "maxItems": 2, "minItems": 2, "type": "array" }, "economic_eligibility_is_route_and_amount_conditioned": { "const": true, "type": "boolean" }, "external_coverage_only_route_count": { "const": 0, "type": "number" }, "external_intent": { "const": "No public route uses an external intent protocol; provider-internal liquidity sourcing or aggregation remains possible", "type": "string" }, "normalized_chain_asset_endpoints": { "const": true, "type": "boolean" }, "ordered_provider_path": { "const": true, "type": "boolean" }, "primary_direct_route_count": { "const": 76, "type": "number" }, "product_classification_values": { "items": [ { "const": "primary_direct", "type": "string" }, { "const": "external_coverage_only", "type": "string" } ], "maxItems": 2, "minItems": 2, "type": "array" }, "required_on_every_quote": { "const": true, "type": "boolean" }, "route_aggregator_used_scope": { "const": "assetfare_engine_only", "type": "string" }, "route_count": { "const": 76, "type": "number" }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "step_count": { "const": 184, "type": "number" }, "version": { "const": "assetfare-direct-route-summary-v1", "type": "string" } }, "required": [ "version", "required_on_every_quote", "route_count", "primary_direct_route_count", "external_coverage_only_route_count", "step_count", "ordered_provider_path", "normalized_chain_asset_endpoints", "base_unit_amounts_are_decimal_strings", "assetfare_fee_step_bound", "classification_values", "product_classification_values", "economic_eligibility_is_route_and_amount_conditioned", "route_aggregator_used_scope", "external_intent", "server_signing", "server_submission" ], "type": "object" }, { "additionalProperties": false, "properties": { "assetfare_fee_step_bound": { "const": true, "type": "boolean" }, "base_unit_amounts_are_decimal_strings": { "const": true, "type": "boolean" }, "classification_values": { "items": [ { "const": "direct_protocol_only", "type": "string" }, { "const": "external_intent", "type": "string" } ], "maxItems": 2, "minItems": 2, "type": "array" }, "economic_eligibility_is_route_and_amount_conditioned": { "const": true, "type": "boolean" }, "external_coverage_only_route_count": { "const": 0, "type": "number" }, "external_intent": { "const": "No public route uses an external intent protocol; provider-internal liquidity sourcing or aggregation remains possible", "type": "string" }, "normalized_chain_asset_endpoints": { "const": true, "type": "boolean" }, "ordered_provider_path": { "const": true, "type": "boolean" }, "primary_direct_route_count": { "const": 80, "type": "number" }, "product_classification_values": { "items": [ { "const": "primary_direct", "type": "string" }, { "const": "external_coverage_only", "type": "string" } ], "maxItems": 2, "minItems": 2, "type": "array" }, "required_on_every_quote": { "const": true, "type": "boolean" }, "route_aggregator_used_scope": { "const": "assetfare_engine_only", "type": "string" }, "route_count": { "const": 80, "type": "number" }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "step_count": { "const": 188, "type": "number" }, "version": { "const": "assetfare-direct-route-summary-v1", "type": "string" } }, "required": [ "version", "required_on_every_quote", "route_count", "primary_direct_route_count", "external_coverage_only_route_count", "step_count", "ordered_provider_path", "normalized_chain_asset_endpoints", "base_unit_amounts_are_decimal_strings", "assetfare_fee_step_bound", "classification_values", "product_classification_values", "economic_eligibility_is_route_and_amount_conditioned", "route_aggregator_used_scope", "external_intent", "server_signing", "server_submission" ], "type": "object" }, { "additionalProperties": false, "properties": { "assetfare_fee_step_bound": { "const": true, "type": "boolean" }, "base_unit_amounts_are_decimal_strings": { "const": true, "type": "boolean" }, "classification_values": { "items": [ { "const": "direct_protocol_only", "type": "string" }, { "const": "external_intent", "type": "string" } ], "maxItems": 2, "minItems": 2, "type": "array" }, "economic_eligibility_is_route_and_amount_conditioned": { "const": true, "type": "boolean" }, "external_coverage_only_route_count": { "const": 0, "type": "number" }, "external_intent": { "const": "No public route uses an external intent protocol; provider-internal liquidity sourcing or aggregation remains possible", "type": "string" }, "normalized_chain_asset_endpoints": { "const": true, "type": "boolean" }, "ordered_provider_path": { "const": true, "type": "boolean" }, "primary_direct_route_count": { "const": 42, "type": "number" }, "product_classification_values": { "items": [ { "const": "primary_direct", "type": "string" }, { "const": "external_coverage_only", "type": "string" } ], "maxItems": 2, "minItems": 2, "type": "array" }, "required_on_every_quote": { "const": true, "type": "boolean" }, "route_aggregator_used_scope": { "const": "assetfare_engine_only", "type": "string" }, "route_count": { "const": 42, "type": "number" }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "step_count": { "const": 83, "type": "number" }, "version": { "const": "assetfare-direct-route-summary-v1", "type": "string" } }, "required": [ "version", "required_on_every_quote", "route_count", "primary_direct_route_count", "external_coverage_only_route_count", "step_count", "ordered_provider_path", "normalized_chain_asset_endpoints", "base_unit_amounts_are_decimal_strings", "assetfare_fee_step_bound", "classification_values", "product_classification_values", "economic_eligibility_is_route_and_amount_conditioned", "route_aggregator_used_scope", "external_intent", "server_signing", "server_submission" ], "type": "object" } ] }, "directed_conversion_routes": { "enum": [ 42, 76, 80 ], "type": "number" }, "economic_guidance": { "anyOf": [ { "additionalProperties": false, "properties": { "advisory_start_distribution": { "additionalProperties": false, "properties": { "50": { "$ref": "#/properties/economic_guidance/anyOf/0/properties/confidence_counts/properties/measured_two_day" }, "100": { "$ref": "#/properties/economic_guidance/anyOf/0/properties/confidence_counts/properties/measured_two_day" }, "250": { "$ref": "#/properties/economic_guidance/anyOf/0/properties/confidence_counts/properties/measured_two_day" }, "500": { "$ref": "#/properties/economic_guidance/anyOf/0/properties/confidence_counts/properties/measured_two_day" }, "1000": { "$ref": "#/properties/economic_guidance/anyOf/0/properties/confidence_counts/properties/measured_two_day" }, "2500": { "$ref": "#/properties/economic_guidance/anyOf/0/properties/confidence_counts/properties/measured_two_day" }, "5000": { "$ref": "#/properties/economic_guidance/anyOf/0/properties/confidence_counts/properties/measured_two_day" }, "10000": { "$ref": "#/properties/economic_guidance/anyOf/0/properties/confidence_counts/properties/measured_two_day" } }, "required": [ "50", "100", "250", "500", "1000", "2500", "5000", "10000" ], "type": "object" }, "amount_is_never_rejected_by_economic_guidance": { "const": true, "type": "boolean" }, "as_of": { "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "confidence_counts": { "additionalProperties": false, "properties": { "coverage_only_retest": { "$ref": "#/properties/economic_guidance/anyOf/0/properties/confidence_counts/properties/measured_two_day" }, "measured_route_specific": { "$ref": "#/properties/economic_guidance/anyOf/0/properties/confidence_counts/properties/measured_two_day" }, "measured_two_day": { "maximum": 80, "minimum": 0, "type": "integer" }, "reworked_route_remeasure": { "$ref": "#/properties/economic_guidance/anyOf/0/properties/confidence_counts/properties/measured_two_day" }, "structural_estimate": { "$ref": "#/properties/economic_guidance/anyOf/0/properties/confidence_counts/properties/measured_two_day" } }, "required": [ "measured_two_day", "measured_route_specific", "structural_estimate", "reworked_route_remeasure", "coverage_only_retest" ], "type": "object" }, "currency": { "const": "USD", "type": "string" }, "economic_guidance_is_non_enforcing": { "const": true, "type": "boolean" }, "fresh_quote_and_caller_decision_control": { "const": true, "type": "boolean" }, "route_count": { "const": 80, "type": "number" }, "technical_quote_minimum_usd": { "const": 1, "type": "number" }, "update_policy": { "const": "append_daily_observations_then_replace_values_without_schema_change", "type": "string" }, "values_change_with_market": { "const": true, "type": "boolean" }, "version": { "const": "assetfare-route-economic-guidance-v1", "type": "string" } }, "required": [ "version", "as_of", "route_count", "currency", "technical_quote_minimum_usd", "economic_guidance_is_non_enforcing", "amount_is_never_rejected_by_economic_guidance", "values_change_with_market", "fresh_quote_and_caller_decision_control", "update_policy", "confidence_counts", "advisory_start_distribution" ], "type": "object" }, { "additionalProperties": false, "properties": { "advisory_start_distribution": { "additionalProperties": false, "properties": { "50": { "maximum": 90, "minimum": 0, "type": "integer" }, "100": { "$ref": "#/properties/economic_guidance/anyOf/1/properties/advisory_start_distribution/properties/50" }, "250": { "$ref": "#/properties/economic_guidance/anyOf/1/properties/advisory_start_distribution/properties/50" }, "500": { "$ref": "#/properties/economic_guidance/anyOf/1/properties/advisory_start_distribution/properties/50" }, "1000": { "$ref": "#/properties/economic_guidance/anyOf/1/properties/advisory_start_distribution/properties/50" }, "2500": { "$ref": "#/properties/economic_guidance/anyOf/1/properties/advisory_start_distribution/properties/50" }, "5000": { "$ref": "#/properties/economic_guidance/anyOf/1/properties/advisory_start_distribution/properties/50" }, "10000": { "$ref": "#/properties/economic_guidance/anyOf/1/properties/advisory_start_distribution/properties/50" } }, "required": [ "50", "100", "250", "500", "1000", "2500", "5000", "10000" ], "type": "object" }, "amount_is_never_rejected_by_economic_guidance": { "const": true, "type": "boolean" }, "as_of": { "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "availability_only_route_count": { "const": 2, "type": "number" }, "currency": { "const": "USD", "type": "string" }, "economic_guidance_is_non_enforcing": { "const": true, "type": "boolean" }, "expected_output_ranking": { "const": true, "type": "boolean" }, "first_use_zero_allowance_scenario": { "const": true, "type": "boolean" }, "fresh_quote_and_caller_decision_control": { "const": true, "type": "boolean" }, "incomplete_cost_never_promoted": { "const": true, "type": "boolean" }, "public_active_route_count": { "const": 42, "type": "number" }, "public_inactive_route_count": { "const": 48, "type": "number" }, "recommendation_status_counts": { "additionalProperties": false, "properties": { "active_price_verified": { "const": 40, "type": "number" }, "active_unique_availability": { "const": 2, "type": "number" }, "inactive_economics": { "const": 48, "type": "number" } }, "required": [ "active_price_verified", "active_unique_availability", "inactive_economics" ], "type": "object" }, "route_count": { "const": 90, "type": "number" }, "technical_quote_minimum_usd": { "const": 1, "type": "number" }, "tested_ceiling_usd": { "const": 10000, "type": "number" }, "update_policy": { "const": "daily_measurement_with_three_day_activation_hysteresis", "type": "string" }, "values_change_with_market": { "const": true, "type": "boolean" }, "verified_best_from_route_count": { "const": 40, "type": "number" }, "version": { "const": "assetfare-route-economic-guidance-v3", "type": "string" } }, "required": [ "version", "as_of", "route_count", "public_active_route_count", "public_inactive_route_count", "verified_best_from_route_count", "availability_only_route_count", "currency", "technical_quote_minimum_usd", "economic_guidance_is_non_enforcing", "amount_is_never_rejected_by_economic_guidance", "values_change_with_market", "fresh_quote_and_caller_decision_control", "update_policy", "first_use_zero_allowance_scenario", "expected_output_ranking", "incomplete_cost_never_promoted", "tested_ceiling_usd", "advisory_start_distribution", "recommendation_status_counts" ], "type": "object" } ] }, "execution_availability": { "additionalProperties": true, "properties": { "guarantees_future_availability": { "const": false, "type": "boolean" }, "provider": { "const": "circle_iris", "type": "string" }, "provider_dependent_routes": { "maximum": 80, "minimum": 0, "type": "integer" }, "recent_fee_snapshot_usable": { "type": "boolean" }, "status": { "enum": [ "available", "degraded", "unknown" ], "type": "string" } }, "required": [ "status", "provider", "provider_dependent_routes", "recent_fee_snapshot_usable", "guarantees_future_availability" ], "type": "object" }, "execution_implemented_routes": { "enum": [ 42, 76, 80 ], "type": "number" }, "execution_ready_routes": { "enum": [ 42, 76, 80 ], "type": "number" }, "phase_b_blocked_routes": { "const": 0, "type": "number" }, "public_api_enabled": { "const": true, "type": "boolean" }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "source_only_asset_endpoints": { "items": { "additionalProperties": false, "properties": { "chain": { "enum": [ "polygon", "optimism", "ethereum", "hyperevm", "xlayer", "sei", "sonic" ], "type": "string" }, "token": { "const": "USDC", "type": "string" } }, "required": [ "chain", "token" ], "type": "object" }, "maxItems": 7, "minItems": 2, "type": "array" }, "source_only_routes": { "items": { "enum": [ "ethereum:USDC->base:USDC", "ethereum:USDC->solana:USDC", "hyperevm:USDC->base:USDC", "hyperevm:USDC->solana:USDC", "optimism:USDC->arbitrum:USDC", "optimism:USDC->base:USDC", "polygon:USDC->arbitrum:USDC", "polygon:USDC->base:USDC", "xlayer:USDC->base:USDC", "xlayer:USDC->solana:USDC", "sei:USDC->base:USDC", "sei:USDC->solana:USDC", "sonic:USDC->base:USDC", "sonic:USDC->solana:USDC" ], "type": "string" }, "maxItems": 14, "minItems": 4, "type": "array" }, "status": { "const": "capped_public_agent_release", "type": "string" }, "temporarily_unavailable_route_count": { "maximum": 80, "minimum": 0, "type": "integer" }, "temporarily_unavailable_routes": { "items": { "minLength": 1, "type": "string" }, "maxItems": 80, "type": "array" }, "unsigned_route_plans_ready": { "enum": [ 42, 76, 80 ], "type": "number" } }, "required": [ "status", "public_api_enabled", "chains", "asset_endpoints", "source_only_asset_endpoints", "source_only_routes", "directed_conversion_routes", "unsigned_route_plans_ready", "execution_ready_routes", "direct_route_summary", "continuation_v3", "action_lifetime", "caller_owned_agent_execution", "phase_b_blocked_routes", "blocked_source_only_routes", "server_signing", "server_submission" ], "type": "object" } }, { "description": "Return one deeply verified first unsigned bundle plus a self-verifying caller-wallet handoff. Callers must explicitly pass caller_approved=true, approval_v3 selected as one_shot, and the hash-bound verification_context copied from the exact quote/public wallets; multi-step quotes reject one_shot. Example: pass the exact context saved during quote selection. Context is validated before the upstream request and never forwarded. caller_approved:true is not human proof; AssetFare never signs or submits.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "amount_usd": { "description": "Requested input value in USD, minimum 1. USD 1 is reachability/schema smoke only. A USD 50 competitive bucket was observed only for dated 2026-09-23 Solana USDC to Base USDC evidence and must not be generalized to another corridor. USD 1,000 is the primary representative amount. SOL input includes a swap. Always quote the actual intended amount.", "minimum": 1, "type": "number" }, "approval_v3": { "additionalProperties": false, "description": "Strict one-shot approval copied from the exact unexpired selected quote; its bounds may only be strengthened.", "properties": { "direct_route_summary_sha256": { "$ref": "#/properties/approval_v3/properties/quote_fingerprint" }, "idempotency_key": { "pattern": "^[A-Za-z0-9._:-]{8,128}$", "type": "string" }, "maximum_input_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "minimum_output_base": { "$ref": "#/properties/approval_v3/properties/maximum_input_base" }, "quote_fingerprint": { "pattern": "^[0-9a-f]{64}$", "type": "string" }, "quote_id": { "format": "uuid", "type": "string" }, "selected_mode": { "const": "one_shot", "type": "string" }, "selection_status": { "const": "selected", "type": "string" }, "version": { "const": "assetfare-quote-bound-approval-v3", "type": "string" } }, "required": [ "version", "quote_id", "quote_fingerprint", "selection_status", "selected_mode", "maximum_input_base", "minimum_output_base", "direct_route_summary_sha256", "idempotency_key" ], "type": "object" }, "caller_approved": { "const": true, "description": "Legacy caller assertion that MUST be supplied explicitly. It is not human-proof and is never auto-inserted; approval_v3 adds server-enforced quote binding.", "type": "boolean" }, "event_signer_public": { "$ref": "#/properties/wallets/additionalProperties", "description": "Solana CCTP only: caller-generated ephemeral public key. Keep the matching private key client-side and use it to co-sign the returned unsigned event-account transaction; never send the private key." }, "from_chain": { "description": "Source chain for the v2 route. Polygon, Optimism, Ethereum, HyperEVM, X Layer, Sei and Sonic are source-only and cannot be used as to_chain.", "enum": [ "solana", "base", "arbitrum", "robinhood", "polygon", "optimism", "ethereum", "hyperevm", "xlayer", "sei", "sonic" ], "type": "string" }, "from_token": { "description": "Input token symbol on from_chain. The chain-token pair must appear in current v2 capabilities.", "enum": [ "SOL", "ETH", "USDC", "USDG" ], "type": "string" }, "to_chain": { "description": "Destination chain for the v2 route: Solana, Base, Arbitrum, or Robinhood Chain. Source-only chains are not destinations.", "enum": [ "solana", "base", "arbitrum", "robinhood" ], "type": "string" }, "to_token": { "description": "Output token symbol on to_chain. The chain-token pair must appear in current v2 capabilities.", "enum": [ "SOL", "ETH", "USDC", "USDG" ], "type": "string" }, "verification_context": { "additionalProperties": false, "description": "Strict caller-held one-shot context copied from the selected quote, approval and public wallets. It is verified before prepare and never forwarded upstream.", "properties": { "approval_v3": { "additionalProperties": false, "properties": { "direct_route_summary_sha256": { "$ref": "#/properties/approval_v3/properties/quote_fingerprint" }, "idempotency_key": { "$ref": "#/properties/approval_v3/properties/idempotency_key" }, "maximum_input_base": { "$ref": "#/properties/approval_v3/properties/maximum_input_base" }, "minimum_output_base": { "$ref": "#/properties/approval_v3/properties/maximum_input_base" }, "quote_fingerprint": { "$ref": "#/properties/approval_v3/properties/quote_fingerprint" }, "quote_id": { "$ref": "#/properties/approval_v3/properties/quote_id" }, "selected_mode": { "$ref": "#/properties/approval_v3/properties/selected_mode" }, "selection_status": { "$ref": "#/properties/approval_v3/properties/selection_status" }, "version": { "$ref": "#/properties/approval_v3/properties/version" } }, "required": [ "version", "quote_id", "quote_fingerprint", "selection_status", "selected_mode", "maximum_input_base", "minimum_output_base", "direct_route_summary_sha256", "idempotency_key" ], "type": "object" }, "direct_route_summary": { "additionalProperties": false, "properties": { "assetfare_fee_bps": { "const": 1, "type": "number" }, "classification": { "enum": [ "direct_protocol_only", "external_intent" ], "type": "string" }, "economic_eligibility": { "enum": [ "not_asserted_by_capability", "coverage_only_not_primary" ], "type": "string" }, "external_intent_protocol_used": { "type": "boolean" }, "fee_collection_step_index": { "maximum": 7, "minimum": 0, "type": "integer" }, "from": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG", "polygon:USDC", "optimism:USDC", "ethereum:USDC", "hyperevm:USDC", "xlayer:USDC", "sei:USDC", "sonic:USDC" ], "type": "string" }, "mode": { "enum": [ "cctp_direct_composition", "optimism_source_cctp", "polygon_source_cctp", "robinhood_across_ingress_composition", "robinhood_paxos_egress_composition", "robinhood_paxos_ingress_composition", "same_chain_direct", "same_chain_direct_composition" ], "type": "string" }, "primary_selection_eligible": { "type": "boolean" }, "product_classification": { "enum": [ "primary_direct", "external_coverage_only" ], "type": "string" }, "provider_internal_dex_aggregation_possible": { "type": "boolean" }, "public_execution_eligible": { "type": "boolean" }, "route": { "enum": [ "solana:SOL->solana:USDC", "solana:SOL->solana:USDG", "solana:SOL->base:ETH", "solana:SOL->base:USDC", "solana:SOL->arbitrum:ETH", "solana:SOL->arbitrum:USDC", "solana:SOL->robinhood:ETH", "solana:SOL->robinhood:USDG", "solana:USDC->solana:SOL", "solana:USDC->solana:USDG", "solana:USDC->base:ETH", "solana:USDC->base:USDC", "solana:USDC->arbitrum:ETH", "solana:USDC->arbitrum:USDC", "solana:USDC->robinhood:ETH", "solana:USDC->robinhood:USDG", "solana:USDG->solana:SOL", "solana:USDG->solana:USDC", "solana:USDG->base:ETH", "solana:USDG->base:USDC", "solana:USDG->arbitrum:ETH", "solana:USDG->arbitrum:USDC", "solana:USDG->robinhood:ETH", "solana:USDG->robinhood:USDG", "base:ETH->solana:SOL", "base:ETH->solana:USDC", "base:ETH->solana:USDG", "base:ETH->base:USDC", "base:ETH->arbitrum:ETH", "base:ETH->arbitrum:USDC", "base:ETH->robinhood:ETH", "base:ETH->robinhood:USDG", "base:USDC->solana:SOL", "base:USDC->solana:USDC", "base:USDC->solana:USDG", "base:USDC->base:ETH", "base:USDC->arbitrum:ETH", "base:USDC->arbitrum:USDC", "base:USDC->robinhood:ETH", "base:USDC->robinhood:USDG", "arbitrum:ETH->solana:SOL", "arbitrum:ETH->solana:USDC", "arbitrum:ETH->solana:USDG", "arbitrum:ETH->base:ETH", "arbitrum:ETH->base:USDC", "arbitrum:ETH->arbitrum:USDC", "arbitrum:ETH->robinhood:ETH", "arbitrum:ETH->robinhood:USDG", "arbitrum:USDC->solana:SOL", "arbitrum:USDC->solana:USDC", "arbitrum:USDC->solana:USDG", "arbitrum:USDC->base:ETH", "arbitrum:USDC->base:USDC", "arbitrum:USDC->arbitrum:ETH", "arbitrum:USDC->robinhood:ETH", "arbitrum:USDC->robinhood:USDG", "robinhood:ETH->solana:SOL", "robinhood:ETH->solana:USDC", "robinhood:ETH->solana:USDG", "robinhood:ETH->base:ETH", "robinhood:ETH->base:USDC", "robinhood:ETH->arbitrum:ETH", "robinhood:ETH->arbitrum:USDC", "robinhood:ETH->robinhood:USDG", "robinhood:USDG->solana:SOL", "robinhood:USDG->solana:USDC", "robinhood:USDG->solana:USDG", "robinhood:USDG->base:ETH", "robinhood:USDG->base:USDC", "robinhood:USDG->arbitrum:ETH", "robinhood:USDG->arbitrum:USDC", "robinhood:USDG->robinhood:ETH", "polygon:USDC->base:USDC", "polygon:USDC->arbitrum:USDC", "optimism:USDC->base:USDC", "optimism:USDC->arbitrum:USDC", "ethereum:USDC->solana:USDC", "ethereum:USDC->base:USDC", "hyperevm:USDC->solana:USDC", "hyperevm:USDC->base:USDC", "xlayer:USDC->solana:USDC", "xlayer:USDC->base:USDC", "sei:USDC->solana:USDC", "sei:USDC->base:USDC", "sonic:USDC->solana:USDC", "sonic:USDC->base:USDC" ], "type": "string" }, "route_aggregator_used": { "const": false, "type": "boolean" }, "route_minimum_guard_bps": { "anyOf": [ { "maximum": 500, "minimum": 1, "type": "integer" }, { "type": "null" } ] }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "step_count": { "maximum": 8, "minimum": 1, "type": "integer" }, "steps": { "items": { "additionalProperties": false, "properties": { "action": { "enum": [ "swap", "bridge", "receive" ], "type": "string" }, "aggregator_api_used": { "const": false, "type": "boolean" }, "assetfare_fee_bps": { "enum": [ 0, 1 ], "type": "number" }, "direct_protocol": { "type": "boolean" }, "expected_input_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "expected_output_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "external_intent_protocol": { "type": "boolean" }, "from": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG", "polygon:USDC", "optimism:USDC", "ethereum:USDC", "hyperevm:USDC", "xlayer:USDC", "sei:USDC", "sonic:USDC" ], "type": "string" }, "index": { "maximum": 7, "minimum": 0, "type": "integer" }, "minimum_guard_bps": { "maximum": 500, "minimum": 1, "type": "integer" }, "minimum_input_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "minimum_output_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "provider": { "enum": [ "raydium_clmm", "orca_whirlpool", "uniswap_v3", "circle_cctp", "circle_cctp_receive", "paxos_usdg_layerzero_oft", "across_intent_bridge" ], "type": "string" }, "to": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG" ], "type": "string" } }, "required": [ "index", "action", "provider", "from", "to", "expected_input_base", "minimum_input_base", "expected_output_base", "minimum_output_base", "assetfare_fee_bps", "direct_protocol", "external_intent_protocol", "aggregator_api_used" ], "type": "object" }, "maxItems": 8, "minItems": 1, "type": "array" }, "to": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG" ], "type": "string" }, "version": { "const": "assetfare-direct-route-summary-v1", "type": "string" } }, "required": [ "version", "route", "from", "to", "classification", "mode", "route_aggregator_used", "external_intent_protocol_used", "provider_internal_dex_aggregation_possible", "assetfare_fee_bps", "fee_collection_step_index", "server_signing", "server_submission", "step_count", "steps" ], "type": "object" }, "event_signer_public": { "anyOf": [ { "$ref": "#/properties/event_signer_public" }, { "type": "null" } ], "description": "Solana CCTP only: caller-generated ephemeral public key. Keep the matching private key client-side and use it to co-sign the returned unsigned event-account transaction; never send the private key." }, "intent": { "additionalProperties": false, "properties": { "amount_usd": { "$ref": "#/properties/amount_usd" }, "from_chain": { "$ref": "#/properties/from_chain" }, "from_token": { "$ref": "#/properties/from_token" }, "to_chain": { "$ref": "#/properties/to_chain" }, "to_token": { "$ref": "#/properties/to_token" } }, "required": [ "from_chain", "from_token", "to_chain", "to_token", "amount_usd" ], "type": "object" }, "verification_context_sha256": { "pattern": "^[0-9a-f]{64}$", "type": "string" }, "version": { "const": "assetfare-one-shot-verification-context-v1", "type": "string" }, "wallets": { "$ref": "#/properties/wallets" } }, "required": [ "version", "intent", "wallets", "event_signer_public", "approval_v3", "direct_route_summary", "verification_context_sha256" ], "type": "object" }, "wallets": { "additionalProperties": { "description": "Caller-owned public wallet address: 0x plus 40 hex characters for EVM, or 32-44 base58 characters for Solana. Never provide secret key material.", "type": "string" }, "description": "Map each chain needed by this route to the caller's public wallet address. Include public addresses only; never private keys or seed phrases.", "propertyNames": { "enum": [ "solana", "base", "arbitrum", "robinhood", "polygon", "optimism", "ethereum", "hyperevm", "xlayer", "sei", "sonic" ] }, "type": "object" } }, "required": [ "caller_approved", "from_chain", "from_token", "to_chain", "to_token", "amount_usd", "wallets", "approval_v3", "verification_context" ], "type": "object" }, "name": "assetfare_v2_prepare", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "action_verification": { "additionalProperties": {}, "description": "Fail-closed semantic and approval-bound verification result; it never authorizes a signature by itself.", "type": "object" }, "bundle": { "additionalProperties": true, "description": "Exact Core bundle whose payload_sha256 remains scoped only to this nested object.", "properties": { "action_id": { "format": "uuid", "type": "string" }, "expires_at": { "minLength": 1, "type": "string" }, "payload_sha256": { "description": "sha256(UTF-8 JSON with sorted keys and compact separators, excluding payload_sha256 itself)", "pattern": "^[0-9a-f]{64}$", "type": "string" }, "payload_sha256_spec": { "const": "sha256(UTF-8 JSON with sorted keys and compact separators, excluding payload_sha256 itself)", "type": "string" }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "signed": { "const": false, "type": "boolean" }, "step_index": { "minimum": 0, "type": "integer" }, "submitted": { "const": false, "type": "boolean" }, "unsigned_action": { "additionalProperties": {}, "type": "object" }, "version": { "const": "assetfare-direct-multichain-action-v2", "type": "string" }, "workflow_id": { "format": "uuid", "type": "string" } }, "required": [ "version", "workflow_id", "action_id", "step_index", "expires_at", "unsigned_action", "payload_sha256", "payload_sha256_spec", "server_signing", "server_submission", "signed", "submitted" ], "type": "object" }, "caller_wallet_handoff": { "additionalProperties": {}, "description": "Fresh self-verifying EIP-1193 or Solana Wallet Standard handoff. The caller still simulates, confirms, signs and submits.", "type": "object" }, "semantic_verification": { "const": true, "description": "True only after full decoded action, intent, receipt, payload and caller-bound verification.", "type": "boolean" } }, "required": [ "bundle", "semantic_verification", "action_verification", "caller_wallet_handoff" ], "type": "object" } }, { "description": "Get one fresh AssetFare quote with route-specific economic_guidance, direct_route_summary, and continuation_v3. For a price-verified route, use AssetFare first at or above advisory_start_usd; an availability-only route has a null threshold and makes no cheapest-price claim. Example: quote Solana USDC to Base USDC at the intended amount. Confirm the fresh output. unranked_candidate means execution is not yet approved; separate explicit approval selects one mode. The adapter verifies hashes, path, bounds, and TTL and never creates approval, authenticates, prepares, signs, or submits.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "amount_usd": { "description": "Requested input value in USD, minimum 1. USD 1 is reachability/schema smoke only. A USD 50 competitive bucket was observed only for dated 2026-09-23 Solana USDC to Base USDC evidence and must not be generalized to another corridor. USD 1,000 is the primary representative amount. SOL input includes a swap. Always quote the actual intended amount.", "minimum": 1, "type": "number" }, "from_chain": { "description": "Source chain for the v2 route. Polygon, Optimism, Ethereum, HyperEVM, X Layer, Sei and Sonic are source-only and cannot be used as to_chain.", "enum": [ "solana", "base", "arbitrum", "robinhood", "polygon", "optimism", "ethereum", "hyperevm", "xlayer", "sei", "sonic" ], "type": "string" }, "from_token": { "description": "Input token symbol on from_chain. The chain-token pair must appear in current v2 capabilities.", "enum": [ "SOL", "ETH", "USDC", "USDG" ], "type": "string" }, "to_chain": { "description": "Destination chain for the v2 route: Solana, Base, Arbitrum, or Robinhood Chain. Source-only chains are not destinations.", "enum": [ "solana", "base", "arbitrum", "robinhood" ], "type": "string" }, "to_token": { "description": "Output token symbol on to_chain. The chain-token pair must appear in current v2 capabilities.", "enum": [ "SOL", "ETH", "USDC", "USDG" ], "type": "string" } }, "required": [ "from_chain", "from_token", "to_chain", "to_token", "amount_usd" ], "type": "object" }, "name": "assetfare_v2_quote", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": true, "properties": { "as_of": { "maxLength": 64, "minLength": 1, "type": "string" }, "caller_action_plan_handoff": { "additionalProperties": true, "properties": {}, "type": "object" }, "continuation_v3": { "additionalProperties": false, "properties": { "allowed_modes": { "items": { "enum": [ "one_shot", "session" ], "type": "string" }, "maxItems": 2, "minItems": 1, "type": "array" }, "approval_v3_required_fields": { "items": [ { "const": "direct_route_summary_sha256", "type": "string" }, { "const": "idempotency_key", "type": "string" }, { "const": "maximum_input_base", "type": "string" }, { "const": "minimum_output_base", "type": "string" }, { "const": "quote_fingerprint", "type": "string" }, { "const": "quote_id", "type": "string" }, { "const": "selected_mode", "type": "string" }, { "const": "selection_status", "type": "string" }, { "const": "version", "type": "string" } ], "maxItems": 9, "minItems": 9, "type": "array" }, "automatic_selection_forbidden": { "const": true, "type": "boolean" }, "caller_approved_boolean_is_not_human_proof": { "const": true, "type": "boolean" }, "direct_route_summary_sha256": { "$ref": "#/properties/continuation_v3/properties/quote_fingerprint" }, "enforcement": { "const": "server_enforced_quote_binding", "type": "string" }, "event_signer_public_required": { "type": "boolean" }, "expires_at": { "$ref": "#/properties/continuation_v3/properties/quote_fingerprint_claim/properties/issued_at" }, "idempotency": { "additionalProperties": false, "properties": { "field": { "const": "idempotency_key", "type": "string" }, "pattern": { "const": "^[A-Za-z0-9._:-]{8,128}$", "type": "string" }, "required": { "const": true, "type": "boolean" }, "scope": { "const": "quote_and_selected_mode", "type": "string" } }, "required": [ "required", "field", "pattern", "scope" ], "type": "object" }, "input_base_bounds": { "additionalProperties": false, "properties": { "maximum": { "$ref": "#/properties/continuation_v3/properties/quote_fingerprint_claim/properties/ttl_seconds" }, "minimum": { "$ref": "#/properties/continuation_v3/properties/quote_fingerprint_claim/properties/ttl_seconds" } }, "required": [ "minimum", "maximum" ], "type": "object" }, "intent": { "additionalProperties": true, "properties": { "amount_usd": { "type": "number" }, "estimated_input_base": { "exclusiveMinimum": 0, "type": "integer" }, "from": { "minLength": 1, "type": "string" }, "to": { "minLength": 1, "type": "string" } }, "required": [ "from", "to", "amount_usd", "estimated_input_base" ], "type": "object" }, "issued_at": { "$ref": "#/properties/continuation_v3/properties/quote_fingerprint_claim/properties/issued_at" }, "legacy_handoff_enforcement": { "const": "legacy_advisory", "type": "string" }, "minimum_output_base": { "$ref": "#/properties/continuation_v3/properties/quote_fingerprint_claim/properties/ttl_seconds" }, "quote_fingerprint": { "pattern": "^[0-9a-f]{64}$", "type": "string" }, "quote_fingerprint_claim": { "additionalProperties": false, "properties": { "allowed_modes": { "items": { "enum": [ "one_shot", "session" ], "type": "string" }, "maxItems": 2, "minItems": 1, "type": "array" }, "direct_route_summary_sha256": { "$ref": "#/properties/continuation_v3/properties/quote_fingerprint" }, "event_signer_public_required": { "type": "boolean" }, "expires_at": { "$ref": "#/properties/continuation_v3/properties/quote_fingerprint_claim/properties/issued_at" }, "input_base_bounds": { "additionalProperties": false, "properties": { "maximum": { "$ref": "#/properties/continuation_v3/properties/quote_fingerprint_claim/properties/ttl_seconds" }, "minimum": { "$ref": "#/properties/continuation_v3/properties/quote_fingerprint_claim/properties/ttl_seconds" } }, "required": [ "minimum", "maximum" ], "type": "object" }, "intent": { "additionalProperties": false, "properties": { "amount_usd_decimal": { "pattern": "^(0|[1-9][0-9]*)(\\.[0-9]+)?$", "type": "string" }, "estimated_input_base": { "$ref": "#/properties/continuation_v3/properties/quote_fingerprint_claim/properties/ttl_seconds" }, "from": { "minLength": 1, "type": "string" }, "to": { "minLength": 1, "type": "string" } }, "required": [ "from", "to", "amount_usd_decimal", "estimated_input_base" ], "type": "object" }, "issued_at": { "format": "date-time", "type": "string" }, "minimum_output_base": { "$ref": "#/properties/continuation_v3/properties/quote_fingerprint_claim/properties/ttl_seconds" }, "quote_id": { "$ref": "#/properties/continuation_v3/properties/quote_id" }, "quote_payload_sha256": { "$ref": "#/properties/continuation_v3/properties/quote_fingerprint" }, "quote_payload_sha256_spec": { "const": "sha256(AssetFare typed-canonical-v1 bytes of the quote without continuation_v3 after exact base-unit substitution: n=null; t/f=boolean; d=<IEEE-754 binary64 big-endian 16 lowercase hex> for each finite JSON number; s=<UTF-8 byte length>:<Unicode scalar text with lone surrogates forbidden>; a=<count>:[items]; o=<count>:{UTF-8-byte-sorted string-key/value pairs}; every non-substituted integral JSON number must be within +/-9007199254740991; substituted paths are intent.estimated_input_base, route.input_base, route.expected_output_base, route.minimum_output_base, and every route.steps[i].expected_input_base/floor_input_base/expected_output_base/minimum_output_base from direct_route_summary exact decimal strings)", "type": "string" }, "required_wallet_chains": { "items": { "enum": [ "arbitrum", "base", "ethereum", "hyperevm", "optimism", "polygon", "robinhood", "sei", "solana", "sonic", "xlayer" ], "type": "string" }, "maxItems": 11, "minItems": 1, "type": "array" }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "step_count": { "$ref": "#/properties/continuation_v3/properties/quote_fingerprint_claim/properties/ttl_seconds" }, "ttl_seconds": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "version": { "const": "assetfare-quote-bound-continuation-v3", "type": "string" } }, "required": [ "version", "quote_id", "issued_at", "expires_at", "ttl_seconds", "intent", "direct_route_summary_sha256", "quote_payload_sha256", "quote_payload_sha256_spec", "input_base_bounds", "minimum_output_base", "required_wallet_chains", "event_signer_public_required", "step_count", "allowed_modes", "server_signing", "server_submission" ], "type": "object" }, "quote_fingerprint_spec": { "const": "sha256(UTF-8 sorted-key compact JSON of quote_fingerprint_claim; every numeric claim is a non-exponent decimal string)", "type": "string" }, "quote_id": { "format": "uuid", "type": "string" }, "quote_payload_sha256": { "$ref": "#/properties/continuation_v3/properties/quote_fingerprint" }, "quote_payload_sha256_spec": { "const": "sha256(AssetFare typed-canonical-v1 bytes of the quote without continuation_v3 after exact base-unit substitution: n=null; t/f=boolean; d=<IEEE-754 binary64 big-endian 16 lowercase hex> for each finite JSON number; s=<UTF-8 byte length>:<Unicode scalar text with lone surrogates forbidden>; a=<count>:[items]; o=<count>:{UTF-8-byte-sorted string-key/value pairs}; every non-substituted integral JSON number must be within +/-9007199254740991; substituted paths are intent.estimated_input_base, route.input_base, route.expected_output_base, route.minimum_output_base, and every route.steps[i].expected_input_base/floor_input_base/expected_output_base/minimum_output_base from direct_route_summary exact decimal strings)", "type": "string" }, "recommended_mode": { "enum": [ "session", "one_shot_or_session" ], "type": "string" }, "required_wallet_chains": { "items": { "$ref": "#/properties/continuation_v3/properties/quote_fingerprint_claim/properties/required_wallet_chains/items" }, "maxItems": 11, "minItems": 1, "type": "array" }, "selection_status": { "const": "unranked_candidate", "type": "string" }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "session_header": { "additionalProperties": false, "properties": { "caller_generated": { "const": true, "type": "boolean" }, "minimum_entropy_bits": { "const": 256, "type": "number" }, "name": { "const": "X-AssetFare-Session-Token", "type": "string" }, "required_for": { "const": "session", "type": "string" }, "server_returns_raw_value": { "const": false, "type": "boolean" } }, "required": [ "name", "required_for", "caller_generated", "minimum_entropy_bits", "server_returns_raw_value" ], "type": "object" }, "step_count": { "maximum": 8, "minimum": 1, "type": "integer" }, "ttl_seconds": { "maximum": 60, "minimum": 1, "type": "integer" }, "version": { "const": "assetfare-quote-bound-continuation-v3", "type": "string" } }, "required": [ "version", "enforcement", "selection_status", "automatic_selection_forbidden", "caller_approved_boolean_is_not_human_proof", "quote_id", "quote_fingerprint", "quote_fingerprint_spec", "quote_fingerprint_claim", "issued_at", "expires_at", "ttl_seconds", "intent", "direct_route_summary_sha256", "quote_payload_sha256", "quote_payload_sha256_spec", "input_base_bounds", "minimum_output_base", "required_wallet_chains", "event_signer_public_required", "step_count", "recommended_mode", "allowed_modes", "session_header", "idempotency", "approval_v3_required_fields", "legacy_handoff_enforcement", "server_signing", "server_submission" ], "type": "object" }, "cost_summary": { "additionalProperties": false, "properties": { "assetfare_service_fee": { "additionalProperties": false, "properties": { "bps": { "const": 1, "type": "number" }, "estimated_usd": { "minimum": 0, "type": "number" }, "included_in_receive_amount": { "const": true, "type": "boolean" }, "note": { "minLength": 1, "type": "string" } }, "required": [ "bps", "estimated_usd", "included_in_receive_amount", "note" ], "type": "object" }, "expected_receive_value_usd": { "minimum": 0, "type": "number" }, "expected_total_cost_percent": { "minimum": 0, "type": "number" }, "expected_total_cost_usd": { "minimum": 0, "type": "number" }, "input_value_usd": { "minimum": 0, "type": "number" }, "maximum_total_cost_percent": { "minimum": 0, "type": "number" }, "maximum_total_cost_usd": { "minimum": 0, "type": "number" }, "minimum_receive_value_usd": { "minimum": 0, "type": "number" }, "provider_fee_components": { "items": { "additionalProperties": true, "properties": { "expected_usd": { "minimum": 0, "type": "number" }, "included_in_receive_amount": { "const": true, "type": "boolean" }, "kind": { "minLength": 1, "type": "string" }, "maximum_usd": { "minimum": 0, "type": "number" }, "provider": { "minLength": 1, "type": "string" } }, "required": [ "provider", "kind", "expected_usd", "maximum_usd", "included_in_receive_amount" ], "type": "object" }, "type": "array" }, "rankable_all_in": { "const": false, "type": "boolean" }, "scope": { "const": "token_path_only_network_gas_excluded", "type": "string" }, "small_amount_warning": { "type": "boolean" }, "unpriced_costs": { "items": { "minLength": 1, "type": "string" }, "minItems": 1, "type": "array" }, "warning": { "anyOf": [ { "minLength": 1, "type": "string" }, { "type": "null" } ] } }, "required": [ "scope", "input_value_usd", "expected_receive_value_usd", "minimum_receive_value_usd", "expected_total_cost_usd", "maximum_total_cost_usd", "expected_total_cost_percent", "maximum_total_cost_percent", "assetfare_service_fee", "provider_fee_components", "unpriced_costs", "rankable_all_in", "small_amount_warning", "warning" ], "type": "object" }, "direct_route_summary": { "additionalProperties": false, "properties": { "assetfare_fee_bps": { "const": 1, "type": "number" }, "classification": { "enum": [ "direct_protocol_only", "external_intent" ], "type": "string" }, "economic_eligibility": { "enum": [ "not_asserted_by_capability", "coverage_only_not_primary" ], "type": "string" }, "external_intent_protocol_used": { "type": "boolean" }, "fee_collection_step_index": { "maximum": 7, "minimum": 0, "type": "integer" }, "from": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG", "polygon:USDC", "optimism:USDC", "ethereum:USDC", "hyperevm:USDC", "xlayer:USDC", "sei:USDC", "sonic:USDC" ], "type": "string" }, "mode": { "enum": [ "cctp_direct_composition", "optimism_source_cctp", "polygon_source_cctp", "robinhood_across_ingress_composition", "robinhood_paxos_egress_composition", "robinhood_paxos_ingress_composition", "same_chain_direct", "same_chain_direct_composition" ], "type": "string" }, "primary_selection_eligible": { "type": "boolean" }, "product_classification": { "enum": [ "primary_direct", "external_coverage_only" ], "type": "string" }, "provider_internal_dex_aggregation_possible": { "type": "boolean" }, "public_execution_eligible": { "type": "boolean" }, "route": { "enum": [ "solana:SOL->solana:USDC", "solana:SOL->solana:USDG", "solana:SOL->base:ETH", "solana:SOL->base:USDC", "solana:SOL->arbitrum:ETH", "solana:SOL->arbitrum:USDC", "solana:SOL->robinhood:ETH", "solana:SOL->robinhood:USDG", "solana:USDC->solana:SOL", "solana:USDC->solana:USDG", "solana:USDC->base:ETH", "solana:USDC->base:USDC", "solana:USDC->arbitrum:ETH", "solana:USDC->arbitrum:USDC", "solana:USDC->robinhood:ETH", "solana:USDC->robinhood:USDG", "solana:USDG->solana:SOL", "solana:USDG->solana:USDC", "solana:USDG->base:ETH", "solana:USDG->base:USDC", "solana:USDG->arbitrum:ETH", "solana:USDG->arbitrum:USDC", "solana:USDG->robinhood:ETH", "solana:USDG->robinhood:USDG", "base:ETH->solana:SOL", "base:ETH->solana:USDC", "base:ETH->solana:USDG", "base:ETH->base:USDC", "base:ETH->arbitrum:ETH", "base:ETH->arbitrum:USDC", "base:ETH->robinhood:ETH", "base:ETH->robinhood:USDG", "base:USDC->solana:SOL", "base:USDC->solana:USDC", "base:USDC->solana:USDG", "base:USDC->base:ETH", "base:USDC->arbitrum:ETH", "base:USDC->arbitrum:USDC", "base:USDC->robinhood:ETH", "base:USDC->robinhood:USDG", "arbitrum:ETH->solana:SOL", "arbitrum:ETH->solana:USDC", "arbitrum:ETH->solana:USDG", "arbitrum:ETH->base:ETH", "arbitrum:ETH->base:USDC", "arbitrum:ETH->arbitrum:USDC", "arbitrum:ETH->robinhood:ETH", "arbitrum:ETH->robinhood:USDG", "arbitrum:USDC->solana:SOL", "arbitrum:USDC->solana:USDC", "arbitrum:USDC->solana:USDG", "arbitrum:USDC->base:ETH", "arbitrum:USDC->base:USDC", "arbitrum:USDC->arbitrum:ETH", "arbitrum:USDC->robinhood:ETH", "arbitrum:USDC->robinhood:USDG", "robinhood:ETH->solana:SOL", "robinhood:ETH->solana:USDC", "robinhood:ETH->solana:USDG", "robinhood:ETH->base:ETH", "robinhood:ETH->base:USDC", "robinhood:ETH->arbitrum:ETH", "robinhood:ETH->arbitrum:USDC", "robinhood:ETH->robinhood:USDG", "robinhood:USDG->solana:SOL", "robinhood:USDG->solana:USDC", "robinhood:USDG->solana:USDG", "robinhood:USDG->base:ETH", "robinhood:USDG->base:USDC", "robinhood:USDG->arbitrum:ETH", "robinhood:USDG->arbitrum:USDC", "robinhood:USDG->robinhood:ETH", "polygon:USDC->base:USDC", "polygon:USDC->arbitrum:USDC", "optimism:USDC->base:USDC", "optimism:USDC->arbitrum:USDC", "ethereum:USDC->solana:USDC", "ethereum:USDC->base:USDC", "hyperevm:USDC->solana:USDC", "hyperevm:USDC->base:USDC", "xlayer:USDC->solana:USDC", "xlayer:USDC->base:USDC", "sei:USDC->solana:USDC", "sei:USDC->base:USDC", "sonic:USDC->solana:USDC", "sonic:USDC->base:USDC" ], "type": "string" }, "route_aggregator_used": { "const": false, "type": "boolean" }, "route_minimum_guard_bps": { "anyOf": [ { "maximum": 500, "minimum": 1, "type": "integer" }, { "type": "null" } ] }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "step_count": { "maximum": 8, "minimum": 1, "type": "integer" }, "steps": { "items": { "additionalProperties": false, "properties": { "action": { "enum": [ "swap", "bridge", "receive" ], "type": "string" }, "aggregator_api_used": { "const": false, "type": "boolean" }, "assetfare_fee_bps": { "enum": [ 0, 1 ], "type": "number" }, "direct_protocol": { "type": "boolean" }, "expected_input_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "expected_output_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "external_intent_protocol": { "type": "boolean" }, "from": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG", "polygon:USDC", "optimism:USDC", "ethereum:USDC", "hyperevm:USDC", "xlayer:USDC", "sei:USDC", "sonic:USDC" ], "type": "string" }, "index": { "maximum": 7, "minimum": 0, "type": "integer" }, "minimum_guard_bps": { "maximum": 500, "minimum": 1, "type": "integer" }, "minimum_input_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "minimum_output_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "provider": { "enum": [ "raydium_clmm", "orca_whirlpool", "uniswap_v3", "circle_cctp", "circle_cctp_receive", "paxos_usdg_layerzero_oft", "across_intent_bridge" ], "type": "string" }, "to": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG" ], "type": "string" } }, "required": [ "index", "action", "provider", "from", "to", "expected_input_base", "minimum_input_base", "expected_output_base", "minimum_output_base", "assetfare_fee_bps", "direct_protocol", "external_intent_protocol", "aggregator_api_used" ], "type": "object" }, "maxItems": 8, "minItems": 1, "type": "array" }, "to": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG" ], "type": "string" }, "version": { "const": "assetfare-direct-route-summary-v1", "type": "string" } }, "required": [ "version", "route", "from", "to", "classification", "mode", "route_aggregator_used", "external_intent_protocol_used", "provider_internal_dex_aggregation_possible", "assetfare_fee_bps", "fee_collection_step_index", "server_signing", "server_submission", "step_count", "steps" ], "type": "object" }, "economic_guidance": { "anyOf": [ { "additionalProperties": false, "properties": { "advisory_role": { "enum": [ "observed_economic_zone_start", "structural_evaluation_start_not_observed_eligibility", "retest_start_not_economic_eligibility" ], "type": "string" }, "advisory_start_usd": { "enum": [ 50, 100, 250, 500, 1000, 2500, 5000, 10000 ], "type": "number" }, "basis": { "minLength": 1, "type": "string" }, "confidence": { "enum": [ "measured_two_day", "measured_route_specific", "structural_estimate", "reworked_route_remeasure", "coverage_only_retest" ], "type": "string" }, "fresh_quote_required": { "const": true, "type": "boolean" }, "not_a_best_price_guarantee": { "const": true, "type": "boolean" }, "not_an_execution_minimum": { "const": true, "type": "boolean" }, "status": { "enum": [ "observed_near_parity", "observed_competitive_or_near_parity", "provisional_evaluation_start", "reworked_route_remeasure", "coverage_only_retest" ], "type": "string" }, "tested_amounts_usd": { "items": { "exclusiveMinimum": 0, "type": "integer" }, "maxItems": 8, "type": "array" } }, "required": [ "advisory_start_usd", "advisory_role", "status", "confidence", "basis", "tested_amounts_usd", "not_an_execution_minimum", "not_a_best_price_guarantee", "fresh_quote_required" ], "type": "object" }, { "additionalProperties": false, "properties": { "advisory_start_usd": { "anyOf": [ { "type": "null" }, { "const": 50, "type": "number" }, { "const": 100, "type": "number" }, { "const": 250, "type": "number" }, { "const": 500, "type": "number" }, { "const": 1000, "type": "number" }, { "const": 2500, "type": "number" }, { "const": 5000, "type": "number" }, { "const": 10000, "type": "number" } ] }, "availability_only": { "type": "boolean" }, "basis": { "minLength": 1, "type": "string" }, "best_from_usd": { "anyOf": [ { "type": "null" }, { "const": 50, "type": "number" }, { "const": 100, "type": "number" }, { "const": 250, "type": "number" }, { "const": 500, "type": "number" }, { "const": 1000, "type": "number" }, { "const": 2500, "type": "number" }, { "const": 5000, "type": "number" }, { "const": 10000, "type": "number" } ] }, "best_from_verified": { "type": "boolean" }, "confidence": { "const": "paired_all_in_snapshot", "type": "string" }, "fresh_quote_required": { "const": true, "type": "boolean" }, "not_a_best_price_guarantee": { "const": true, "type": "boolean" }, "not_an_execution_minimum": { "const": true, "type": "boolean" }, "public_activation_status": { "enum": [ "active_price_verified", "active_unique_availability" ], "type": "string" }, "public_active": { "const": true, "type": "boolean" }, "recommendation_status": { "enum": [ "active_price_verified", "active_unique_availability" ], "type": "string" }, "recommended_action": { "enum": [ "use_assetfare_first_at_or_above_best_from", "use_assetfare_when_route_availability_is_required" ], "type": "string" }, "tested_amounts_usd": { "items": { "exclusiveMinimum": 0, "type": "integer" }, "maxItems": 8, "minItems": 8, "type": "array" }, "tested_ceiling_usd": { "const": 10000, "type": "number" } }, "required": [ "advisory_start_usd", "best_from_usd", "best_from_verified", "availability_only", "public_activation_status", "public_active", "recommendation_status", "recommended_action", "confidence", "basis", "tested_amounts_usd", "tested_ceiling_usd", "not_an_execution_minimum", "not_a_best_price_guarantee", "fresh_quote_required" ], "type": "object" } ] }, "eta": { "additionalProperties": false, "properties": { "complete_route_estimate": { "type": "boolean" }, "estimated_time_range_seconds": { "anyOf": [ { "items": [ { "minimum": 0, "type": "integer" }, { "exclusiveMinimum": 0, "type": "integer" } ], "maxItems": 2, "minItems": 2, "type": "array" }, { "type": "null" } ] }, "estimated_time_seconds": { "anyOf": [ { "exclusiveMinimum": 0, "type": "integer" }, { "type": "null" } ] }, "note": { "minLength": 1, "type": "string" }, "sources": { "items": { "format": "uri", "type": "string" }, "type": "array" } }, "required": [ "estimated_time_seconds", "estimated_time_range_seconds", "complete_route_estimate", "sources", "note" ], "type": "object" }, "execution": { "additionalProperties": true, "properties": { "first_unsigned_action_supported": { "type": "boolean" }, "supported": { "type": "boolean" } }, "required": [ "supported", "first_unsigned_action_supported" ], "type": "object" }, "intent": { "additionalProperties": true, "properties": { "amount_usd": { "type": "number" }, "estimated_input_base": { "exclusiveMinimum": 0, "type": "integer" }, "from": { "type": "string" }, "to": { "type": "string" } }, "required": [ "from", "to", "amount_usd", "estimated_input_base" ], "type": "object" }, "offer": { "additionalProperties": true, "properties": { "assetfare_fee_bps": { "const": 1, "type": "number" }, "estimated_min_receive_amount": { "exclusiveMinimum": 0, "type": "number" }, "estimated_min_receive_usd": { "minimum": 0, "type": "number" }, "estimated_time_seconds": { "anyOf": [ { "minimum": 0, "type": "integer" }, { "type": "null" } ] }, "expected_receive_amount": { "exclusiveMinimum": 0, "type": "number" }, "expected_receive_usd": { "minimum": 0, "type": "number" }, "fee_collectible_now": { "const": true, "type": "boolean" }, "fee_collection": { "const": "only_on_eligible_successful_executor_step", "type": "string" }, "fee_collection_steps": { "items": { "minimum": 0, "type": "integer" }, "maxItems": 1, "minItems": 1, "type": "array" }, "fee_modeled_bps": { "const": 1, "type": "number" }, "output_symbol": { "enum": [ "SOL", "ETH", "USDC", "USDG" ], "type": "string" } }, "required": [ "expected_receive_amount", "estimated_min_receive_amount", "expected_receive_usd", "estimated_min_receive_usd", "output_symbol", "estimated_time_seconds", "assetfare_fee_bps", "fee_modeled_bps", "fee_collectible_now", "fee_collection_steps", "fee_collection" ], "type": "object" }, "quote_id": { "format": "uuid", "type": "string" }, "risk": { "additionalProperties": true, "properties": { "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" } }, "required": [ "server_signing", "server_submission" ], "type": "object" }, "route": { "additionalProperties": true, "properties": { "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "steps": { "items": { "additionalProperties": {}, "type": "object" }, "maxItems": 8, "minItems": 1, "type": "array" } }, "required": [ "steps", "server_signing", "server_submission" ], "type": "object" }, "status": { "const": "capped_public_agent_release", "type": "string" }, "ttl_seconds": { "exclusiveMinimum": 0, "maximum": 60, "type": "integer" } }, "required": [ "quote_id", "status", "as_of", "ttl_seconds", "intent", "offer", "cost_summary", "eta", "economic_guidance", "route", "direct_route_summary", "continuation_v3", "risk", "execution", "caller_action_plan_handoff" ], "type": "object" } }, { "description": "Create one receipt-driven workflow. Callers must explicitly pass caller_approved=true, the exact approval_v3 selected as session, the same idempotency_key, a caller-local session token, and verification_context copied from the selected quote/public wallets. Example: validate and pass the exact context saved with the selected quote. The adapter validates approval and context before the upstream request. Every returned action is deeply verified and receives a self-verifying wallet handoff. AssetFare never signs or submits.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "amount_usd": { "description": "Requested input value in USD, minimum 1. USD 1 is reachability/schema smoke only. A USD 50 competitive bucket was observed only for dated 2026-09-23 Solana USDC to Base USDC evidence and must not be generalized to another corridor. USD 1,000 is the primary representative amount. SOL input includes a swap. Always quote the actual intended amount.", "minimum": 1, "type": "number" }, "approval_v3": { "additionalProperties": false, "description": "Strict Core 2.4.1 session quote-bound selection from the exact unexpired quote. Required for every remote session flow.", "properties": { "direct_route_summary_sha256": { "$ref": "#/properties/approval_v3/properties/quote_fingerprint" }, "idempotency_key": { "pattern": "^[A-Za-z0-9._:-]{8,128}$", "type": "string" }, "maximum_input_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "minimum_output_base": { "$ref": "#/properties/approval_v3/properties/maximum_input_base" }, "quote_fingerprint": { "pattern": "^[0-9a-f]{64}$", "type": "string" }, "quote_id": { "format": "uuid", "type": "string" }, "selected_mode": { "const": "session", "type": "string" }, "selection_status": { "const": "selected", "type": "string" }, "version": { "const": "assetfare-quote-bound-approval-v3", "type": "string" } }, "required": [ "version", "quote_id", "quote_fingerprint", "selection_status", "selected_mode", "maximum_input_base", "minimum_output_base", "direct_route_summary_sha256", "idempotency_key" ], "type": "object" }, "caller_approved": { "const": true, "description": "Legacy caller assertion that MUST be supplied explicitly. It is not human-proof and is never auto-inserted; approval_v3 adds server-enforced quote binding.", "type": "boolean" }, "event_signer_public": { "$ref": "#/properties/wallets/additionalProperties", "description": "Solana CCTP only: caller-generated ephemeral public key. Keep the matching private key client-side and use it to co-sign the returned unsigned event-account transaction; never send the private key." }, "from_chain": { "description": "Source chain for the v2 route. Polygon, Optimism, Ethereum, HyperEVM, X Layer, Sei and Sonic are source-only and cannot be used as to_chain.", "enum": [ "solana", "base", "arbitrum", "robinhood", "polygon", "optimism", "ethereum", "hyperevm", "xlayer", "sei", "sonic" ], "type": "string" }, "from_token": { "description": "Input token symbol on from_chain. The chain-token pair must appear in current v2 capabilities.", "enum": [ "SOL", "ETH", "USDC", "USDG" ], "type": "string" }, "idempotency_key": { "description": "Caller-generated retry key, 8-128 characters. Reuse it only when retrying the same logical mutation; choose a new key for a new operation. Strict approval_v3 requests additionally enforce its ASCII key pattern.", "maxLength": 128, "minLength": 8, "type": "string" }, "session_token": { "description": "Sensitive caller-generated v2 session capability: at least 32 CSPRNG bytes encoded as 43-128 URL-safe base64 characters. Generate it locally; never log it or substitute a private key or legacy access token.", "pattern": "^[A-Za-z0-9_-]{43,128}$", "type": "string" }, "to_chain": { "description": "Destination chain for the v2 route: Solana, Base, Arbitrum, or Robinhood Chain. Source-only chains are not destinations.", "enum": [ "solana", "base", "arbitrum", "robinhood" ], "type": "string" }, "to_token": { "description": "Output token symbol on to_chain. The chain-token pair must appear in current v2 capabilities.", "enum": [ "SOL", "ETH", "USDC", "USDG" ], "type": "string" }, "verification_context": { "additionalProperties": false, "description": "Strict caller-held context copied from the selected quote and approval. It contains public intent/wallet data only, never the raw session token or a private key, and is required whenever a remote MCP session call can return current_action.", "properties": { "approval_v3": { "additionalProperties": false, "properties": { "direct_route_summary_sha256": { "$ref": "#/properties/approval_v3/properties/quote_fingerprint" }, "idempotency_key": { "$ref": "#/properties/approval_v3/properties/idempotency_key" }, "maximum_input_base": { "$ref": "#/properties/approval_v3/properties/maximum_input_base" }, "minimum_output_base": { "$ref": "#/properties/approval_v3/properties/maximum_input_base" }, "quote_fingerprint": { "$ref": "#/properties/approval_v3/properties/quote_fingerprint" }, "quote_id": { "$ref": "#/properties/approval_v3/properties/quote_id" }, "selected_mode": { "$ref": "#/properties/approval_v3/properties/selected_mode" }, "selection_status": { "$ref": "#/properties/approval_v3/properties/selection_status" }, "version": { "$ref": "#/properties/approval_v3/properties/version" } }, "required": [ "version", "quote_id", "quote_fingerprint", "selection_status", "selected_mode", "maximum_input_base", "minimum_output_base", "direct_route_summary_sha256", "idempotency_key" ], "type": "object" }, "direct_route_summary": { "additionalProperties": false, "properties": { "assetfare_fee_bps": { "const": 1, "type": "number" }, "classification": { "enum": [ "direct_protocol_only", "external_intent" ], "type": "string" }, "economic_eligibility": { "enum": [ "not_asserted_by_capability", "coverage_only_not_primary" ], "type": "string" }, "external_intent_protocol_used": { "type": "boolean" }, "fee_collection_step_index": { "maximum": 7, "minimum": 0, "type": "integer" }, "from": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG", "polygon:USDC", "optimism:USDC", "ethereum:USDC", "hyperevm:USDC", "xlayer:USDC", "sei:USDC", "sonic:USDC" ], "type": "string" }, "mode": { "enum": [ "cctp_direct_composition", "optimism_source_cctp", "polygon_source_cctp", "robinhood_across_ingress_composition", "robinhood_paxos_egress_composition", "robinhood_paxos_ingress_composition", "same_chain_direct", "same_chain_direct_composition" ], "type": "string" }, "primary_selection_eligible": { "type": "boolean" }, "product_classification": { "enum": [ "primary_direct", "external_coverage_only" ], "type": "string" }, "provider_internal_dex_aggregation_possible": { "type": "boolean" }, "public_execution_eligible": { "type": "boolean" }, "route": { "enum": [ "solana:SOL->solana:USDC", "solana:SOL->solana:USDG", "solana:SOL->base:ETH", "solana:SOL->base:USDC", "solana:SOL->arbitrum:ETH", "solana:SOL->arbitrum:USDC", "solana:SOL->robinhood:ETH", "solana:SOL->robinhood:USDG", "solana:USDC->solana:SOL", "solana:USDC->solana:USDG", "solana:USDC->base:ETH", "solana:USDC->base:USDC", "solana:USDC->arbitrum:ETH", "solana:USDC->arbitrum:USDC", "solana:USDC->robinhood:ETH", "solana:USDC->robinhood:USDG", "solana:USDG->solana:SOL", "solana:USDG->solana:USDC", "solana:USDG->base:ETH", "solana:USDG->base:USDC", "solana:USDG->arbitrum:ETH", "solana:USDG->arbitrum:USDC", "solana:USDG->robinhood:ETH", "solana:USDG->robinhood:USDG", "base:ETH->solana:SOL", "base:ETH->solana:USDC", "base:ETH->solana:USDG", "base:ETH->base:USDC", "base:ETH->arbitrum:ETH", "base:ETH->arbitrum:USDC", "base:ETH->robinhood:ETH", "base:ETH->robinhood:USDG", "base:USDC->solana:SOL", "base:USDC->solana:USDC", "base:USDC->solana:USDG", "base:USDC->base:ETH", "base:USDC->arbitrum:ETH", "base:USDC->arbitrum:USDC", "base:USDC->robinhood:ETH", "base:USDC->robinhood:USDG", "arbitrum:ETH->solana:SOL", "arbitrum:ETH->solana:USDC", "arbitrum:ETH->solana:USDG", "arbitrum:ETH->base:ETH", "arbitrum:ETH->base:USDC", "arbitrum:ETH->arbitrum:USDC", "arbitrum:ETH->robinhood:ETH", "arbitrum:ETH->robinhood:USDG", "arbitrum:USDC->solana:SOL", "arbitrum:USDC->solana:USDC", "arbitrum:USDC->solana:USDG", "arbitrum:USDC->base:ETH", "arbitrum:USDC->base:USDC", "arbitrum:USDC->arbitrum:ETH", "arbitrum:USDC->robinhood:ETH", "arbitrum:USDC->robinhood:USDG", "robinhood:ETH->solana:SOL", "robinhood:ETH->solana:USDC", "robinhood:ETH->solana:USDG", "robinhood:ETH->base:ETH", "robinhood:ETH->base:USDC", "robinhood:ETH->arbitrum:ETH", "robinhood:ETH->arbitrum:USDC", "robinhood:ETH->robinhood:USDG", "robinhood:USDG->solana:SOL", "robinhood:USDG->solana:USDC", "robinhood:USDG->solana:USDG", "robinhood:USDG->base:ETH", "robinhood:USDG->base:USDC", "robinhood:USDG->arbitrum:ETH", "robinhood:USDG->arbitrum:USDC", "robinhood:USDG->robinhood:ETH", "polygon:USDC->base:USDC", "polygon:USDC->arbitrum:USDC", "optimism:USDC->base:USDC", "optimism:USDC->arbitrum:USDC", "ethereum:USDC->solana:USDC", "ethereum:USDC->base:USDC", "hyperevm:USDC->solana:USDC", "hyperevm:USDC->base:USDC", "xlayer:USDC->solana:USDC", "xlayer:USDC->base:USDC", "sei:USDC->solana:USDC", "sei:USDC->base:USDC", "sonic:USDC->solana:USDC", "sonic:USDC->base:USDC" ], "type": "string" }, "route_aggregator_used": { "const": false, "type": "boolean" }, "route_minimum_guard_bps": { "anyOf": [ { "maximum": 500, "minimum": 1, "type": "integer" }, { "type": "null" } ] }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "step_count": { "maximum": 8, "minimum": 1, "type": "integer" }, "steps": { "items": { "additionalProperties": false, "properties": { "action": { "enum": [ "swap", "bridge", "receive" ], "type": "string" }, "aggregator_api_used": { "const": false, "type": "boolean" }, "assetfare_fee_bps": { "enum": [ 0, 1 ], "type": "number" }, "direct_protocol": { "type": "boolean" }, "expected_input_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "expected_output_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "external_intent_protocol": { "type": "boolean" }, "from": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG", "polygon:USDC", "optimism:USDC", "ethereum:USDC", "hyperevm:USDC", "xlayer:USDC", "sei:USDC", "sonic:USDC" ], "type": "string" }, "index": { "maximum": 7, "minimum": 0, "type": "integer" }, "minimum_guard_bps": { "maximum": 500, "minimum": 1, "type": "integer" }, "minimum_input_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "minimum_output_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "provider": { "enum": [ "raydium_clmm", "orca_whirlpool", "uniswap_v3", "circle_cctp", "circle_cctp_receive", "paxos_usdg_layerzero_oft", "across_intent_bridge" ], "type": "string" }, "to": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG" ], "type": "string" } }, "required": [ "index", "action", "provider", "from", "to", "expected_input_base", "minimum_input_base", "expected_output_base", "minimum_output_base", "assetfare_fee_bps", "direct_protocol", "external_intent_protocol", "aggregator_api_used" ], "type": "object" }, "maxItems": 8, "minItems": 1, "type": "array" }, "to": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG" ], "type": "string" }, "version": { "const": "assetfare-direct-route-summary-v1", "type": "string" } }, "required": [ "version", "route", "from", "to", "classification", "mode", "route_aggregator_used", "external_intent_protocol_used", "provider_internal_dex_aggregation_possible", "assetfare_fee_bps", "fee_collection_step_index", "server_signing", "server_submission", "step_count", "steps" ], "type": "object" }, "event_signer_public": { "anyOf": [ { "$ref": "#/properties/event_signer_public" }, { "type": "null" } ], "description": "Solana CCTP only: caller-generated ephemeral public key. Keep the matching private key client-side and use it to co-sign the returned unsigned event-account transaction; never send the private key." }, "intent": { "additionalProperties": false, "properties": { "amount_usd": { "$ref": "#/properties/amount_usd" }, "from_chain": { "$ref": "#/properties/from_chain" }, "from_token": { "$ref": "#/properties/from_token" }, "to_chain": { "$ref": "#/properties/to_chain" }, "to_token": { "$ref": "#/properties/to_token" } }, "required": [ "from_chain", "from_token", "to_chain", "to_token", "amount_usd" ], "type": "object" }, "verification_context_sha256": { "pattern": "^[0-9a-f]{64}$", "type": "string" }, "version": { "const": "assetfare-session-verification-context-v1", "type": "string" }, "wallets": { "$ref": "#/properties/wallets" } }, "required": [ "version", "intent", "wallets", "event_signer_public", "approval_v3", "direct_route_summary", "verification_context_sha256" ], "type": "object" }, "wallets": { "additionalProperties": { "description": "Caller-owned public wallet address: 0x plus 40 hex characters for EVM, or 32-44 base58 characters for Solana. Never provide secret key material.", "type": "string" }, "description": "Map each chain needed by this route to the caller's public wallet address. Include public addresses only; never private keys or seed phrases.", "propertyNames": { "enum": [ "solana", "base", "arbitrum", "robinhood", "polygon", "optimism", "ethereum", "hyperevm", "xlayer", "sei", "sonic" ] }, "type": "object" } }, "required": [ "caller_approved", "from_chain", "from_token", "to_chain", "to_token", "amount_usd", "wallets", "approval_v3", "session_token", "idempotency_key", "verification_context" ], "type": "object" }, "name": "assetfare_v2_session_create", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": true, "properties": { "action_available": { "type": "boolean" }, "current_action": { "anyOf": [ { "additionalProperties": true, "properties": { "action_id": { "format": "uuid", "type": "string" }, "expires_at": { "minLength": 1, "type": "string" }, "payload_sha256": { "description": "sha256(UTF-8 JSON with sorted keys and compact separators, excluding payload_sha256 itself)", "pattern": "^[0-9a-f]{64}$", "type": "string" }, "payload_sha256_spec": { "const": "sha256(UTF-8 JSON with sorted keys and compact separators, excluding payload_sha256 itself)", "type": "string" }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "signed": { "const": false, "type": "boolean" }, "step_index": { "minimum": 0, "type": "integer" }, "submitted": { "const": false, "type": "boolean" }, "unsigned_action": { "additionalProperties": {}, "type": "object" }, "version": { "const": "assetfare-direct-multichain-action-v2", "type": "string" }, "workflow_id": { "format": "uuid", "type": "string" } }, "required": [ "version", "workflow_id", "action_id", "step_index", "expires_at", "unsigned_action", "payload_sha256", "payload_sha256_spec", "server_signing", "server_submission", "signed", "submitted" ], "type": "object" }, { "type": "null" } ] }, "quote_binding": { "anyOf": [ { "additionalProperties": false, "properties": { "quote_fingerprint": { "pattern": "^[0-9a-f]{64}$", "type": "string" }, "quote_id": { "format": "uuid", "type": "string" }, "selected_mode": { "const": "session", "type": "string" }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "version": { "const": "assetfare-quote-bound-session-constraints-v1", "type": "string" }, "whole_session_path_and_bounds_enforced": { "const": true, "type": "boolean" } }, "required": [ "version", "quote_id", "quote_fingerprint", "selected_mode", "whole_session_path_and_bounds_enforced", "server_signing", "server_submission" ], "type": "object" }, { "additionalProperties": false, "properties": { "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "version": { "const": "legacy_advisory", "type": "string" }, "whole_session_path_and_bounds_enforced": { "const": false, "type": "boolean" } }, "required": [ "version", "whole_session_path_and_bounds_enforced", "server_signing", "server_submission" ], "type": "object" } ] }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "session_id": { "format": "uuid", "type": "string" }, "signed": { "const": false, "type": "boolean" }, "status": { "minLength": 1, "type": "string" }, "submitted": { "const": false, "type": "boolean" } }, "required": [ "session_id", "status", "action_available", "current_action", "quote_binding", "server_signing", "server_submission", "signed", "submitted" ], "type": "object" } }, { "description": "Read an existing v2 workflow without advancing it. Example: pass session_id, session_token, and the original verification_context after restart. The adapter deeply verifies any current_action and emits a self-verifying wallet handoff, or fails closed. Read-only; never signs or submits.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "session_id": { "description": "V2 workflow session UUID returned by assetfare_v2_session_create. Use only with assetfare_v2_session_* tools; do not pass a legacy session ID.", "format": "uuid", "type": "string" }, "session_token": { "description": "Sensitive caller-generated v2 session capability: at least 32 CSPRNG bytes encoded as 43-128 URL-safe base64 characters. Generate it locally; never log it or substitute a private key or legacy access token.", "pattern": "^[A-Za-z0-9_-]{43,128}$", "type": "string" }, "verification_context": { "additionalProperties": false, "description": "Strict caller-held context copied from the selected quote and approval. It contains public intent/wallet data only, never the raw session token or a private key, and is required whenever a remote MCP session call can return current_action.", "properties": { "approval_v3": { "additionalProperties": false, "properties": { "direct_route_summary_sha256": { "$ref": "#/properties/verification_context/properties/approval_v3/properties/quote_fingerprint" }, "idempotency_key": { "pattern": "^[A-Za-z0-9._:-]{8,128}$", "type": "string" }, "maximum_input_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "minimum_output_base": { "$ref": "#/properties/verification_context/properties/approval_v3/properties/maximum_input_base" }, "quote_fingerprint": { "pattern": "^[0-9a-f]{64}$", "type": "string" }, "quote_id": { "format": "uuid", "type": "string" }, "selected_mode": { "const": "session", "type": "string" }, "selection_status": { "const": "selected", "type": "string" }, "version": { "const": "assetfare-quote-bound-approval-v3", "type": "string" } }, "required": [ "version", "quote_id", "quote_fingerprint", "selection_status", "selected_mode", "maximum_input_base", "minimum_output_base", "direct_route_summary_sha256", "idempotency_key" ], "type": "object" }, "direct_route_summary": { "additionalProperties": false, "properties": { "assetfare_fee_bps": { "const": 1, "type": "number" }, "classification": { "enum": [ "direct_protocol_only", "external_intent" ], "type": "string" }, "economic_eligibility": { "enum": [ "not_asserted_by_capability", "coverage_only_not_primary" ], "type": "string" }, "external_intent_protocol_used": { "type": "boolean" }, "fee_collection_step_index": { "maximum": 7, "minimum": 0, "type": "integer" }, "from": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG", "polygon:USDC", "optimism:USDC", "ethereum:USDC", "hyperevm:USDC", "xlayer:USDC", "sei:USDC", "sonic:USDC" ], "type": "string" }, "mode": { "enum": [ "cctp_direct_composition", "optimism_source_cctp", "polygon_source_cctp", "robinhood_across_ingress_composition", "robinhood_paxos_egress_composition", "robinhood_paxos_ingress_composition", "same_chain_direct", "same_chain_direct_composition" ], "type": "string" }, "primary_selection_eligible": { "type": "boolean" }, "product_classification": { "enum": [ "primary_direct", "external_coverage_only" ], "type": "string" }, "provider_internal_dex_aggregation_possible": { "type": "boolean" }, "public_execution_eligible": { "type": "boolean" }, "route": { "enum": [ "solana:SOL->solana:USDC", "solana:SOL->solana:USDG", "solana:SOL->base:ETH", "solana:SOL->base:USDC", "solana:SOL->arbitrum:ETH", "solana:SOL->arbitrum:USDC", "solana:SOL->robinhood:ETH", "solana:SOL->robinhood:USDG", "solana:USDC->solana:SOL", "solana:USDC->solana:USDG", "solana:USDC->base:ETH", "solana:USDC->base:USDC", "solana:USDC->arbitrum:ETH", "solana:USDC->arbitrum:USDC", "solana:USDC->robinhood:ETH", "solana:USDC->robinhood:USDG", "solana:USDG->solana:SOL", "solana:USDG->solana:USDC", "solana:USDG->base:ETH", "solana:USDG->base:USDC", "solana:USDG->arbitrum:ETH", "solana:USDG->arbitrum:USDC", "solana:USDG->robinhood:ETH", "solana:USDG->robinhood:USDG", "base:ETH->solana:SOL", "base:ETH->solana:USDC", "base:ETH->solana:USDG", "base:ETH->base:USDC", "base:ETH->arbitrum:ETH", "base:ETH->arbitrum:USDC", "base:ETH->robinhood:ETH", "base:ETH->robinhood:USDG", "base:USDC->solana:SOL", "base:USDC->solana:USDC", "base:USDC->solana:USDG", "base:USDC->base:ETH", "base:USDC->arbitrum:ETH", "base:USDC->arbitrum:USDC", "base:USDC->robinhood:ETH", "base:USDC->robinhood:USDG", "arbitrum:ETH->solana:SOL", "arbitrum:ETH->solana:USDC", "arbitrum:ETH->solana:USDG", "arbitrum:ETH->base:ETH", "arbitrum:ETH->base:USDC", "arbitrum:ETH->arbitrum:USDC", "arbitrum:ETH->robinhood:ETH", "arbitrum:ETH->robinhood:USDG", "arbitrum:USDC->solana:SOL", "arbitrum:USDC->solana:USDC", "arbitrum:USDC->solana:USDG", "arbitrum:USDC->base:ETH", "arbitrum:USDC->base:USDC", "arbitrum:USDC->arbitrum:ETH", "arbitrum:USDC->robinhood:ETH", "arbitrum:USDC->robinhood:USDG", "robinhood:ETH->solana:SOL", "robinhood:ETH->solana:USDC", "robinhood:ETH->solana:USDG", "robinhood:ETH->base:ETH", "robinhood:ETH->base:USDC", "robinhood:ETH->arbitrum:ETH", "robinhood:ETH->arbitrum:USDC", "robinhood:ETH->robinhood:USDG", "robinhood:USDG->solana:SOL", "robinhood:USDG->solana:USDC", "robinhood:USDG->solana:USDG", "robinhood:USDG->base:ETH", "robinhood:USDG->base:USDC", "robinhood:USDG->arbitrum:ETH", "robinhood:USDG->arbitrum:USDC", "robinhood:USDG->robinhood:ETH", "polygon:USDC->base:USDC", "polygon:USDC->arbitrum:USDC", "optimism:USDC->base:USDC", "optimism:USDC->arbitrum:USDC", "ethereum:USDC->solana:USDC", "ethereum:USDC->base:USDC", "hyperevm:USDC->solana:USDC", "hyperevm:USDC->base:USDC", "xlayer:USDC->solana:USDC", "xlayer:USDC->base:USDC", "sei:USDC->solana:USDC", "sei:USDC->base:USDC", "sonic:USDC->solana:USDC", "sonic:USDC->base:USDC" ], "type": "string" }, "route_aggregator_used": { "const": false, "type": "boolean" }, "route_minimum_guard_bps": { "anyOf": [ { "maximum": 500, "minimum": 1, "type": "integer" }, { "type": "null" } ] }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "step_count": { "maximum": 8, "minimum": 1, "type": "integer" }, "steps": { "items": { "additionalProperties": false, "properties": { "action": { "enum": [ "swap", "bridge", "receive" ], "type": "string" }, "aggregator_api_used": { "const": false, "type": "boolean" }, "assetfare_fee_bps": { "enum": [ 0, 1 ], "type": "number" }, "direct_protocol": { "type": "boolean" }, "expected_input_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "expected_output_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "external_intent_protocol": { "type": "boolean" }, "from": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG", "polygon:USDC", "optimism:USDC", "ethereum:USDC", "hyperevm:USDC", "xlayer:USDC", "sei:USDC", "sonic:USDC" ], "type": "string" }, "index": { "maximum": 7, "minimum": 0, "type": "integer" }, "minimum_guard_bps": { "maximum": 500, "minimum": 1, "type": "integer" }, "minimum_input_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "minimum_output_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "provider": { "enum": [ "raydium_clmm", "orca_whirlpool", "uniswap_v3", "circle_cctp", "circle_cctp_receive", "paxos_usdg_layerzero_oft", "across_intent_bridge" ], "type": "string" }, "to": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG" ], "type": "string" } }, "required": [ "index", "action", "provider", "from", "to", "expected_input_base", "minimum_input_base", "expected_output_base", "minimum_output_base", "assetfare_fee_bps", "direct_protocol", "external_intent_protocol", "aggregator_api_used" ], "type": "object" }, "maxItems": 8, "minItems": 1, "type": "array" }, "to": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG" ], "type": "string" }, "version": { "const": "assetfare-direct-route-summary-v1", "type": "string" } }, "required": [ "version", "route", "from", "to", "classification", "mode", "route_aggregator_used", "external_intent_protocol_used", "provider_internal_dex_aggregation_possible", "assetfare_fee_bps", "fee_collection_step_index", "server_signing", "server_submission", "step_count", "steps" ], "type": "object" }, "event_signer_public": { "anyOf": [ { "$ref": "#/properties/verification_context/properties/wallets/additionalProperties", "description": "Solana CCTP only: caller-generated ephemeral public key. Keep the matching private key client-side and use it to co-sign the returned unsigned event-account transaction; never send the private key." }, { "type": "null" } ], "description": "Solana CCTP only: caller-generated ephemeral public key. Keep the matching private key client-side and use it to co-sign the returned unsigned event-account transaction; never send the private key." }, "intent": { "additionalProperties": false, "properties": { "amount_usd": { "description": "Requested input value in USD, minimum 1. USD 1 is reachability/schema smoke only. A USD 50 competitive bucket was observed only for dated 2026-09-23 Solana USDC to Base USDC evidence and must not be generalized to another corridor. USD 1,000 is the primary representative amount. SOL input includes a swap. Always quote the actual intended amount.", "minimum": 1, "type": "number" }, "from_chain": { "description": "Source chain for the v2 route. Polygon, Optimism, Ethereum, HyperEVM, X Layer, Sei and Sonic are source-only and cannot be used as to_chain.", "enum": [ "solana", "base", "arbitrum", "robinhood", "polygon", "optimism", "ethereum", "hyperevm", "xlayer", "sei", "sonic" ], "type": "string" }, "from_token": { "description": "Input token symbol on from_chain. The chain-token pair must appear in current v2 capabilities.", "enum": [ "SOL", "ETH", "USDC", "USDG" ], "type": "string" }, "to_chain": { "description": "Destination chain for the v2 route: Solana, Base, Arbitrum, or Robinhood Chain. Source-only chains are not destinations.", "enum": [ "solana", "base", "arbitrum", "robinhood" ], "type": "string" }, "to_token": { "description": "Output token symbol on to_chain. The chain-token pair must appear in current v2 capabilities.", "enum": [ "SOL", "ETH", "USDC", "USDG" ], "type": "string" } }, "required": [ "from_chain", "from_token", "to_chain", "to_token", "amount_usd" ], "type": "object" }, "verification_context_sha256": { "pattern": "^[0-9a-f]{64}$", "type": "string" }, "version": { "const": "assetfare-session-verification-context-v1", "type": "string" }, "wallets": { "additionalProperties": { "description": "Caller-owned public wallet address: 0x plus 40 hex characters for EVM, or 32-44 base58 characters for Solana. Never provide secret key material.", "type": "string" }, "description": "Map each chain needed by this route to the caller's public wallet address. Include public addresses only; never private keys or seed phrases.", "propertyNames": { "enum": [ "solana", "base", "arbitrum", "robinhood", "polygon", "optimism", "ethereum", "hyperevm", "xlayer", "sei", "sonic" ] }, "type": "object" } }, "required": [ "version", "intent", "wallets", "event_signer_public", "approval_v3", "direct_route_summary", "verification_context_sha256" ], "type": "object" } }, "required": [ "session_token", "session_id", "verification_context" ], "type": "object" }, "name": "assetfare_v2_session_get", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": true, "properties": { "action_available": { "type": "boolean" }, "current_action": { "anyOf": [ { "additionalProperties": true, "properties": { "action_id": { "format": "uuid", "type": "string" }, "expires_at": { "minLength": 1, "type": "string" }, "payload_sha256": { "description": "sha256(UTF-8 JSON with sorted keys and compact separators, excluding payload_sha256 itself)", "pattern": "^[0-9a-f]{64}$", "type": "string" }, "payload_sha256_spec": { "const": "sha256(UTF-8 JSON with sorted keys and compact separators, excluding payload_sha256 itself)", "type": "string" }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "signed": { "const": false, "type": "boolean" }, "step_index": { "minimum": 0, "type": "integer" }, "submitted": { "const": false, "type": "boolean" }, "unsigned_action": { "additionalProperties": {}, "type": "object" }, "version": { "const": "assetfare-direct-multichain-action-v2", "type": "string" }, "workflow_id": { "format": "uuid", "type": "string" } }, "required": [ "version", "workflow_id", "action_id", "step_index", "expires_at", "unsigned_action", "payload_sha256", "payload_sha256_spec", "server_signing", "server_submission", "signed", "submitted" ], "type": "object" }, { "type": "null" } ] }, "quote_binding": { "anyOf": [ { "additionalProperties": false, "properties": { "quote_fingerprint": { "pattern": "^[0-9a-f]{64}$", "type": "string" }, "quote_id": { "format": "uuid", "type": "string" }, "selected_mode": { "const": "session", "type": "string" }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "version": { "const": "assetfare-quote-bound-session-constraints-v1", "type": "string" }, "whole_session_path_and_bounds_enforced": { "const": true, "type": "boolean" } }, "required": [ "version", "quote_id", "quote_fingerprint", "selected_mode", "whole_session_path_and_bounds_enforced", "server_signing", "server_submission" ], "type": "object" }, { "additionalProperties": false, "properties": { "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "version": { "const": "legacy_advisory", "type": "string" }, "whole_session_path_and_bounds_enforced": { "const": false, "type": "boolean" } }, "required": [ "version", "whole_session_path_and_bounds_enforced", "server_signing", "server_submission" ], "type": "object" } ] }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "session_id": { "format": "uuid", "type": "string" }, "signed": { "const": false, "type": "boolean" }, "status": { "minLength": 1, "type": "string" }, "submitted": { "const": false, "type": "boolean" } }, "required": [ "session_id", "status", "action_available", "current_action", "quote_binding", "server_signing", "server_submission", "signed", "submitted" ], "type": "object" } }, { "description": "Record an already-produced bridge or destination output, then advance the workflow. Example: pass the output hash, a new idempotency key, and the original verification_context. Any next current_action is deeply verified and receives a wallet handoff. AssetFare never signs or submits.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "idempotency_key": { "description": "Caller-generated retry key, 8-128 characters. Reuse it only when retrying the same logical mutation; choose a new key for a new operation. Strict approval_v3 requests additionally enforce its ASCII key pattern.", "maxLength": 128, "minLength": 8, "type": "string" }, "session_id": { "description": "V2 workflow session UUID returned by assetfare_v2_session_create. Use only with assetfare_v2_session_* tools; do not pass a legacy session ID.", "format": "uuid", "type": "string" }, "session_token": { "description": "Sensitive caller-generated v2 session capability: at least 32 CSPRNG bytes encoded as 43-128 URL-safe base64 characters. Generate it locally; never log it or substitute a private key or legacy access token.", "pattern": "^[A-Za-z0-9_-]{43,128}$", "type": "string" }, "transaction_hash": { "description": "Optional bridge or destination transaction hash already produced outside AssetFare. Omit only when the provider output can be observed without a hash.", "maxLength": 128, "minLength": 16, "type": "string" }, "verification_context": { "additionalProperties": false, "description": "Strict caller-held context copied from the selected quote and approval. It contains public intent/wallet data only, never the raw session token or a private key, and is required whenever a remote MCP session call can return current_action.", "properties": { "approval_v3": { "additionalProperties": false, "properties": { "direct_route_summary_sha256": { "$ref": "#/properties/verification_context/properties/approval_v3/properties/quote_fingerprint" }, "idempotency_key": { "pattern": "^[A-Za-z0-9._:-]{8,128}$", "type": "string" }, "maximum_input_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "minimum_output_base": { "$ref": "#/properties/verification_context/properties/approval_v3/properties/maximum_input_base" }, "quote_fingerprint": { "pattern": "^[0-9a-f]{64}$", "type": "string" }, "quote_id": { "format": "uuid", "type": "string" }, "selected_mode": { "const": "session", "type": "string" }, "selection_status": { "const": "selected", "type": "string" }, "version": { "const": "assetfare-quote-bound-approval-v3", "type": "string" } }, "required": [ "version", "quote_id", "quote_fingerprint", "selection_status", "selected_mode", "maximum_input_base", "minimum_output_base", "direct_route_summary_sha256", "idempotency_key" ], "type": "object" }, "direct_route_summary": { "additionalProperties": false, "properties": { "assetfare_fee_bps": { "const": 1, "type": "number" }, "classification": { "enum": [ "direct_protocol_only", "external_intent" ], "type": "string" }, "economic_eligibility": { "enum": [ "not_asserted_by_capability", "coverage_only_not_primary" ], "type": "string" }, "external_intent_protocol_used": { "type": "boolean" }, "fee_collection_step_index": { "maximum": 7, "minimum": 0, "type": "integer" }, "from": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG", "polygon:USDC", "optimism:USDC", "ethereum:USDC", "hyperevm:USDC", "xlayer:USDC", "sei:USDC", "sonic:USDC" ], "type": "string" }, "mode": { "enum": [ "cctp_direct_composition", "optimism_source_cctp", "polygon_source_cctp", "robinhood_across_ingress_composition", "robinhood_paxos_egress_composition", "robinhood_paxos_ingress_composition", "same_chain_direct", "same_chain_direct_composition" ], "type": "string" }, "primary_selection_eligible": { "type": "boolean" }, "product_classification": { "enum": [ "primary_direct", "external_coverage_only" ], "type": "string" }, "provider_internal_dex_aggregation_possible": { "type": "boolean" }, "public_execution_eligible": { "type": "boolean" }, "route": { "enum": [ "solana:SOL->solana:USDC", "solana:SOL->solana:USDG", "solana:SOL->base:ETH", "solana:SOL->base:USDC", "solana:SOL->arbitrum:ETH", "solana:SOL->arbitrum:USDC", "solana:SOL->robinhood:ETH", "solana:SOL->robinhood:USDG", "solana:USDC->solana:SOL", "solana:USDC->solana:USDG", "solana:USDC->base:ETH", "solana:USDC->base:USDC", "solana:USDC->arbitrum:ETH", "solana:USDC->arbitrum:USDC", "solana:USDC->robinhood:ETH", "solana:USDC->robinhood:USDG", "solana:USDG->solana:SOL", "solana:USDG->solana:USDC", "solana:USDG->base:ETH", "solana:USDG->base:USDC", "solana:USDG->arbitrum:ETH", "solana:USDG->arbitrum:USDC", "solana:USDG->robinhood:ETH", "solana:USDG->robinhood:USDG", "base:ETH->solana:SOL", "base:ETH->solana:USDC", "base:ETH->solana:USDG", "base:ETH->base:USDC", "base:ETH->arbitrum:ETH", "base:ETH->arbitrum:USDC", "base:ETH->robinhood:ETH", "base:ETH->robinhood:USDG", "base:USDC->solana:SOL", "base:USDC->solana:USDC", "base:USDC->solana:USDG", "base:USDC->base:ETH", "base:USDC->arbitrum:ETH", "base:USDC->arbitrum:USDC", "base:USDC->robinhood:ETH", "base:USDC->robinhood:USDG", "arbitrum:ETH->solana:SOL", "arbitrum:ETH->solana:USDC", "arbitrum:ETH->solana:USDG", "arbitrum:ETH->base:ETH", "arbitrum:ETH->base:USDC", "arbitrum:ETH->arbitrum:USDC", "arbitrum:ETH->robinhood:ETH", "arbitrum:ETH->robinhood:USDG", "arbitrum:USDC->solana:SOL", "arbitrum:USDC->solana:USDC", "arbitrum:USDC->solana:USDG", "arbitrum:USDC->base:ETH", "arbitrum:USDC->base:USDC", "arbitrum:USDC->arbitrum:ETH", "arbitrum:USDC->robinhood:ETH", "arbitrum:USDC->robinhood:USDG", "robinhood:ETH->solana:SOL", "robinhood:ETH->solana:USDC", "robinhood:ETH->solana:USDG", "robinhood:ETH->base:ETH", "robinhood:ETH->base:USDC", "robinhood:ETH->arbitrum:ETH", "robinhood:ETH->arbitrum:USDC", "robinhood:ETH->robinhood:USDG", "robinhood:USDG->solana:SOL", "robinhood:USDG->solana:USDC", "robinhood:USDG->solana:USDG", "robinhood:USDG->base:ETH", "robinhood:USDG->base:USDC", "robinhood:USDG->arbitrum:ETH", "robinhood:USDG->arbitrum:USDC", "robinhood:USDG->robinhood:ETH", "polygon:USDC->base:USDC", "polygon:USDC->arbitrum:USDC", "optimism:USDC->base:USDC", "optimism:USDC->arbitrum:USDC", "ethereum:USDC->solana:USDC", "ethereum:USDC->base:USDC", "hyperevm:USDC->solana:USDC", "hyperevm:USDC->base:USDC", "xlayer:USDC->solana:USDC", "xlayer:USDC->base:USDC", "sei:USDC->solana:USDC", "sei:USDC->base:USDC", "sonic:USDC->solana:USDC", "sonic:USDC->base:USDC" ], "type": "string" }, "route_aggregator_used": { "const": false, "type": "boolean" }, "route_minimum_guard_bps": { "anyOf": [ { "maximum": 500, "minimum": 1, "type": "integer" }, { "type": "null" } ] }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "step_count": { "maximum": 8, "minimum": 1, "type": "integer" }, "steps": { "items": { "additionalProperties": false, "properties": { "action": { "enum": [ "swap", "bridge", "receive" ], "type": "string" }, "aggregator_api_used": { "const": false, "type": "boolean" }, "assetfare_fee_bps": { "enum": [ 0, 1 ], "type": "number" }, "direct_protocol": { "type": "boolean" }, "expected_input_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "expected_output_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "external_intent_protocol": { "type": "boolean" }, "from": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG", "polygon:USDC", "optimism:USDC", "ethereum:USDC", "hyperevm:USDC", "xlayer:USDC", "sei:USDC", "sonic:USDC" ], "type": "string" }, "index": { "maximum": 7, "minimum": 0, "type": "integer" }, "minimum_guard_bps": { "maximum": 500, "minimum": 1, "type": "integer" }, "minimum_input_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "minimum_output_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "provider": { "enum": [ "raydium_clmm", "orca_whirlpool", "uniswap_v3", "circle_cctp", "circle_cctp_receive", "paxos_usdg_layerzero_oft", "across_intent_bridge" ], "type": "string" }, "to": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG" ], "type": "string" } }, "required": [ "index", "action", "provider", "from", "to", "expected_input_base", "minimum_input_base", "expected_output_base", "minimum_output_base", "assetfare_fee_bps", "direct_protocol", "external_intent_protocol", "aggregator_api_used" ], "type": "object" }, "maxItems": 8, "minItems": 1, "type": "array" }, "to": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG" ], "type": "string" }, "version": { "const": "assetfare-direct-route-summary-v1", "type": "string" } }, "required": [ "version", "route", "from", "to", "classification", "mode", "route_aggregator_used", "external_intent_protocol_used", "provider_internal_dex_aggregation_possible", "assetfare_fee_bps", "fee_collection_step_index", "server_signing", "server_submission", "step_count", "steps" ], "type": "object" }, "event_signer_public": { "anyOf": [ { "$ref": "#/properties/verification_context/properties/wallets/additionalProperties", "description": "Solana CCTP only: caller-generated ephemeral public key. Keep the matching private key client-side and use it to co-sign the returned unsigned event-account transaction; never send the private key." }, { "type": "null" } ], "description": "Solana CCTP only: caller-generated ephemeral public key. Keep the matching private key client-side and use it to co-sign the returned unsigned event-account transaction; never send the private key." }, "intent": { "additionalProperties": false, "properties": { "amount_usd": { "description": "Requested input value in USD, minimum 1. USD 1 is reachability/schema smoke only. A USD 50 competitive bucket was observed only for dated 2026-09-23 Solana USDC to Base USDC evidence and must not be generalized to another corridor. USD 1,000 is the primary representative amount. SOL input includes a swap. Always quote the actual intended amount.", "minimum": 1, "type": "number" }, "from_chain": { "description": "Source chain for the v2 route. Polygon, Optimism, Ethereum, HyperEVM, X Layer, Sei and Sonic are source-only and cannot be used as to_chain.", "enum": [ "solana", "base", "arbitrum", "robinhood", "polygon", "optimism", "ethereum", "hyperevm", "xlayer", "sei", "sonic" ], "type": "string" }, "from_token": { "description": "Input token symbol on from_chain. The chain-token pair must appear in current v2 capabilities.", "enum": [ "SOL", "ETH", "USDC", "USDG" ], "type": "string" }, "to_chain": { "description": "Destination chain for the v2 route: Solana, Base, Arbitrum, or Robinhood Chain. Source-only chains are not destinations.", "enum": [ "solana", "base", "arbitrum", "robinhood" ], "type": "string" }, "to_token": { "description": "Output token symbol on to_chain. The chain-token pair must appear in current v2 capabilities.", "enum": [ "SOL", "ETH", "USDC", "USDG" ], "type": "string" } }, "required": [ "from_chain", "from_token", "to_chain", "to_token", "amount_usd" ], "type": "object" }, "verification_context_sha256": { "pattern": "^[0-9a-f]{64}$", "type": "string" }, "version": { "const": "assetfare-session-verification-context-v1", "type": "string" }, "wallets": { "additionalProperties": { "description": "Caller-owned public wallet address: 0x plus 40 hex characters for EVM, or 32-44 base58 characters for Solana. Never provide secret key material.", "type": "string" }, "description": "Map each chain needed by this route to the caller's public wallet address. Include public addresses only; never private keys or seed phrases.", "propertyNames": { "enum": [ "solana", "base", "arbitrum", "robinhood", "polygon", "optimism", "ethereum", "hyperevm", "xlayer", "sei", "sonic" ] }, "type": "object" } }, "required": [ "version", "intent", "wallets", "event_signer_public", "approval_v3", "direct_route_summary", "verification_context_sha256" ], "type": "object" } }, "required": [ "session_token", "session_id", "idempotency_key", "verification_context" ], "type": "object" }, "name": "assetfare_v2_session_observe_output", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": true, "properties": { "action_available": { "type": "boolean" }, "current_action": { "anyOf": [ { "additionalProperties": true, "properties": { "action_id": { "format": "uuid", "type": "string" }, "expires_at": { "minLength": 1, "type": "string" }, "payload_sha256": { "description": "sha256(UTF-8 JSON with sorted keys and compact separators, excluding payload_sha256 itself)", "pattern": "^[0-9a-f]{64}$", "type": "string" }, "payload_sha256_spec": { "const": "sha256(UTF-8 JSON with sorted keys and compact separators, excluding payload_sha256 itself)", "type": "string" }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "signed": { "const": false, "type": "boolean" }, "step_index": { "minimum": 0, "type": "integer" }, "submitted": { "const": false, "type": "boolean" }, "unsigned_action": { "additionalProperties": {}, "type": "object" }, "version": { "const": "assetfare-direct-multichain-action-v2", "type": "string" }, "workflow_id": { "format": "uuid", "type": "string" } }, "required": [ "version", "workflow_id", "action_id", "step_index", "expires_at", "unsigned_action", "payload_sha256", "payload_sha256_spec", "server_signing", "server_submission", "signed", "submitted" ], "type": "object" }, { "type": "null" } ] }, "quote_binding": { "anyOf": [ { "additionalProperties": false, "properties": { "quote_fingerprint": { "pattern": "^[0-9a-f]{64}$", "type": "string" }, "quote_id": { "format": "uuid", "type": "string" }, "selected_mode": { "const": "session", "type": "string" }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "version": { "const": "assetfare-quote-bound-session-constraints-v1", "type": "string" }, "whole_session_path_and_bounds_enforced": { "const": true, "type": "boolean" } }, "required": [ "version", "quote_id", "quote_fingerprint", "selected_mode", "whole_session_path_and_bounds_enforced", "server_signing", "server_submission" ], "type": "object" }, { "additionalProperties": false, "properties": { "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "version": { "const": "legacy_advisory", "type": "string" }, "whole_session_path_and_bounds_enforced": { "const": false, "type": "boolean" } }, "required": [ "version", "whole_session_path_and_bounds_enforced", "server_signing", "server_submission" ], "type": "object" } ] }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "session_id": { "format": "uuid", "type": "string" }, "signed": { "const": false, "type": "boolean" }, "status": { "minLength": 1, "type": "string" }, "submitted": { "const": false, "type": "boolean" } }, "required": [ "session_id", "status", "action_available", "current_action", "quote_binding", "server_signing", "server_submission", "signed", "submitted" ], "type": "object" } }, { "description": "Record source hashes the caller already signed and submitted, then advance the workflow. Example: pass one finalized source hash, a new idempotency key, and the original verification_context. Any next current_action is deeply verified and receives a wallet handoff. AssetFare never signs or submits.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "idempotency_key": { "description": "Caller-generated retry key, 8-128 characters. Reuse it only when retrying the same logical mutation; choose a new key for a new operation. Strict approval_v3 requests additionally enforce its ASCII key pattern.", "maxLength": 128, "minLength": 8, "type": "string" }, "session_id": { "description": "V2 workflow session UUID returned by assetfare_v2_session_create. Use only with assetfare_v2_session_* tools; do not pass a legacy session ID.", "format": "uuid", "type": "string" }, "session_token": { "description": "Sensitive caller-generated v2 session capability: at least 32 CSPRNG bytes encoded as 43-128 URL-safe base64 characters. Generate it locally; never log it or substitute a private key or legacy access token.", "pattern": "^[A-Za-z0-9_-]{43,128}$", "type": "string" }, "transaction_hashes": { "description": "One to eight hashes for source transactions the caller already signed and submitted. Do not provide unsigned payloads or destination hashes.", "items": { "maxLength": 128, "minLength": 16, "type": "string" }, "maxItems": 8, "minItems": 1, "type": "array" }, "verification_context": { "additionalProperties": false, "description": "Strict caller-held context copied from the selected quote and approval. It contains public intent/wallet data only, never the raw session token or a private key, and is required whenever a remote MCP session call can return current_action.", "properties": { "approval_v3": { "additionalProperties": false, "properties": { "direct_route_summary_sha256": { "$ref": "#/properties/verification_context/properties/approval_v3/properties/quote_fingerprint" }, "idempotency_key": { "pattern": "^[A-Za-z0-9._:-]{8,128}$", "type": "string" }, "maximum_input_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "minimum_output_base": { "$ref": "#/properties/verification_context/properties/approval_v3/properties/maximum_input_base" }, "quote_fingerprint": { "pattern": "^[0-9a-f]{64}$", "type": "string" }, "quote_id": { "format": "uuid", "type": "string" }, "selected_mode": { "const": "session", "type": "string" }, "selection_status": { "const": "selected", "type": "string" }, "version": { "const": "assetfare-quote-bound-approval-v3", "type": "string" } }, "required": [ "version", "quote_id", "quote_fingerprint", "selection_status", "selected_mode", "maximum_input_base", "minimum_output_base", "direct_route_summary_sha256", "idempotency_key" ], "type": "object" }, "direct_route_summary": { "additionalProperties": false, "properties": { "assetfare_fee_bps": { "const": 1, "type": "number" }, "classification": { "enum": [ "direct_protocol_only", "external_intent" ], "type": "string" }, "economic_eligibility": { "enum": [ "not_asserted_by_capability", "coverage_only_not_primary" ], "type": "string" }, "external_intent_protocol_used": { "type": "boolean" }, "fee_collection_step_index": { "maximum": 7, "minimum": 0, "type": "integer" }, "from": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG", "polygon:USDC", "optimism:USDC", "ethereum:USDC", "hyperevm:USDC", "xlayer:USDC", "sei:USDC", "sonic:USDC" ], "type": "string" }, "mode": { "enum": [ "cctp_direct_composition", "optimism_source_cctp", "polygon_source_cctp", "robinhood_across_ingress_composition", "robinhood_paxos_egress_composition", "robinhood_paxos_ingress_composition", "same_chain_direct", "same_chain_direct_composition" ], "type": "string" }, "primary_selection_eligible": { "type": "boolean" }, "product_classification": { "enum": [ "primary_direct", "external_coverage_only" ], "type": "string" }, "provider_internal_dex_aggregation_possible": { "type": "boolean" }, "public_execution_eligible": { "type": "boolean" }, "route": { "enum": [ "solana:SOL->solana:USDC", "solana:SOL->solana:USDG", "solana:SOL->base:ETH", "solana:SOL->base:USDC", "solana:SOL->arbitrum:ETH", "solana:SOL->arbitrum:USDC", "solana:SOL->robinhood:ETH", "solana:SOL->robinhood:USDG", "solana:USDC->solana:SOL", "solana:USDC->solana:USDG", "solana:USDC->base:ETH", "solana:USDC->base:USDC", "solana:USDC->arbitrum:ETH", "solana:USDC->arbitrum:USDC", "solana:USDC->robinhood:ETH", "solana:USDC->robinhood:USDG", "solana:USDG->solana:SOL", "solana:USDG->solana:USDC", "solana:USDG->base:ETH", "solana:USDG->base:USDC", "solana:USDG->arbitrum:ETH", "solana:USDG->arbitrum:USDC", "solana:USDG->robinhood:ETH", "solana:USDG->robinhood:USDG", "base:ETH->solana:SOL", "base:ETH->solana:USDC", "base:ETH->solana:USDG", "base:ETH->base:USDC", "base:ETH->arbitrum:ETH", "base:ETH->arbitrum:USDC", "base:ETH->robinhood:ETH", "base:ETH->robinhood:USDG", "base:USDC->solana:SOL", "base:USDC->solana:USDC", "base:USDC->solana:USDG", "base:USDC->base:ETH", "base:USDC->arbitrum:ETH", "base:USDC->arbitrum:USDC", "base:USDC->robinhood:ETH", "base:USDC->robinhood:USDG", "arbitrum:ETH->solana:SOL", "arbitrum:ETH->solana:USDC", "arbitrum:ETH->solana:USDG", "arbitrum:ETH->base:ETH", "arbitrum:ETH->base:USDC", "arbitrum:ETH->arbitrum:USDC", "arbitrum:ETH->robinhood:ETH", "arbitrum:ETH->robinhood:USDG", "arbitrum:USDC->solana:SOL", "arbitrum:USDC->solana:USDC", "arbitrum:USDC->solana:USDG", "arbitrum:USDC->base:ETH", "arbitrum:USDC->base:USDC", "arbitrum:USDC->arbitrum:ETH", "arbitrum:USDC->robinhood:ETH", "arbitrum:USDC->robinhood:USDG", "robinhood:ETH->solana:SOL", "robinhood:ETH->solana:USDC", "robinhood:ETH->solana:USDG", "robinhood:ETH->base:ETH", "robinhood:ETH->base:USDC", "robinhood:ETH->arbitrum:ETH", "robinhood:ETH->arbitrum:USDC", "robinhood:ETH->robinhood:USDG", "robinhood:USDG->solana:SOL", "robinhood:USDG->solana:USDC", "robinhood:USDG->solana:USDG", "robinhood:USDG->base:ETH", "robinhood:USDG->base:USDC", "robinhood:USDG->arbitrum:ETH", "robinhood:USDG->arbitrum:USDC", "robinhood:USDG->robinhood:ETH", "polygon:USDC->base:USDC", "polygon:USDC->arbitrum:USDC", "optimism:USDC->base:USDC", "optimism:USDC->arbitrum:USDC", "ethereum:USDC->solana:USDC", "ethereum:USDC->base:USDC", "hyperevm:USDC->solana:USDC", "hyperevm:USDC->base:USDC", "xlayer:USDC->solana:USDC", "xlayer:USDC->base:USDC", "sei:USDC->solana:USDC", "sei:USDC->base:USDC", "sonic:USDC->solana:USDC", "sonic:USDC->base:USDC" ], "type": "string" }, "route_aggregator_used": { "const": false, "type": "boolean" }, "route_minimum_guard_bps": { "anyOf": [ { "maximum": 500, "minimum": 1, "type": "integer" }, { "type": "null" } ] }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "step_count": { "maximum": 8, "minimum": 1, "type": "integer" }, "steps": { "items": { "additionalProperties": false, "properties": { "action": { "enum": [ "swap", "bridge", "receive" ], "type": "string" }, "aggregator_api_used": { "const": false, "type": "boolean" }, "assetfare_fee_bps": { "enum": [ 0, 1 ], "type": "number" }, "direct_protocol": { "type": "boolean" }, "expected_input_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "expected_output_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "external_intent_protocol": { "type": "boolean" }, "from": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG", "polygon:USDC", "optimism:USDC", "ethereum:USDC", "hyperevm:USDC", "xlayer:USDC", "sei:USDC", "sonic:USDC" ], "type": "string" }, "index": { "maximum": 7, "minimum": 0, "type": "integer" }, "minimum_guard_bps": { "maximum": 500, "minimum": 1, "type": "integer" }, "minimum_input_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "minimum_output_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "provider": { "enum": [ "raydium_clmm", "orca_whirlpool", "uniswap_v3", "circle_cctp", "circle_cctp_receive", "paxos_usdg_layerzero_oft", "across_intent_bridge" ], "type": "string" }, "to": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG" ], "type": "string" } }, "required": [ "index", "action", "provider", "from", "to", "expected_input_base", "minimum_input_base", "expected_output_base", "minimum_output_base", "assetfare_fee_bps", "direct_protocol", "external_intent_protocol", "aggregator_api_used" ], "type": "object" }, "maxItems": 8, "minItems": 1, "type": "array" }, "to": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG" ], "type": "string" }, "version": { "const": "assetfare-direct-route-summary-v1", "type": "string" } }, "required": [ "version", "route", "from", "to", "classification", "mode", "route_aggregator_used", "external_intent_protocol_used", "provider_internal_dex_aggregation_possible", "assetfare_fee_bps", "fee_collection_step_index", "server_signing", "server_submission", "step_count", "steps" ], "type": "object" }, "event_signer_public": { "anyOf": [ { "$ref": "#/properties/verification_context/properties/wallets/additionalProperties", "description": "Solana CCTP only: caller-generated ephemeral public key. Keep the matching private key client-side and use it to co-sign the returned unsigned event-account transaction; never send the private key." }, { "type": "null" } ], "description": "Solana CCTP only: caller-generated ephemeral public key. Keep the matching private key client-side and use it to co-sign the returned unsigned event-account transaction; never send the private key." }, "intent": { "additionalProperties": false, "properties": { "amount_usd": { "description": "Requested input value in USD, minimum 1. USD 1 is reachability/schema smoke only. A USD 50 competitive bucket was observed only for dated 2026-09-23 Solana USDC to Base USDC evidence and must not be generalized to another corridor. USD 1,000 is the primary representative amount. SOL input includes a swap. Always quote the actual intended amount.", "minimum": 1, "type": "number" }, "from_chain": { "description": "Source chain for the v2 route. Polygon, Optimism, Ethereum, HyperEVM, X Layer, Sei and Sonic are source-only and cannot be used as to_chain.", "enum": [ "solana", "base", "arbitrum", "robinhood", "polygon", "optimism", "ethereum", "hyperevm", "xlayer", "sei", "sonic" ], "type": "string" }, "from_token": { "description": "Input token symbol on from_chain. The chain-token pair must appear in current v2 capabilities.", "enum": [ "SOL", "ETH", "USDC", "USDG" ], "type": "string" }, "to_chain": { "description": "Destination chain for the v2 route: Solana, Base, Arbitrum, or Robinhood Chain. Source-only chains are not destinations.", "enum": [ "solana", "base", "arbitrum", "robinhood" ], "type": "string" }, "to_token": { "description": "Output token symbol on to_chain. The chain-token pair must appear in current v2 capabilities.", "enum": [ "SOL", "ETH", "USDC", "USDG" ], "type": "string" } }, "required": [ "from_chain", "from_token", "to_chain", "to_token", "amount_usd" ], "type": "object" }, "verification_context_sha256": { "pattern": "^[0-9a-f]{64}$", "type": "string" }, "version": { "const": "assetfare-session-verification-context-v1", "type": "string" }, "wallets": { "additionalProperties": { "description": "Caller-owned public wallet address: 0x plus 40 hex characters for EVM, or 32-44 base58 characters for Solana. Never provide secret key material.", "type": "string" }, "description": "Map each chain needed by this route to the caller's public wallet address. Include public addresses only; never private keys or seed phrases.", "propertyNames": { "enum": [ "solana", "base", "arbitrum", "robinhood", "polygon", "optimism", "ethereum", "hyperevm", "xlayer", "sei", "sonic" ] }, "type": "object" } }, "required": [ "version", "intent", "wallets", "event_signer_public", "approval_v3", "direct_route_summary", "verification_context_sha256" ], "type": "object" } }, "required": [ "session_token", "session_id", "idempotency_key", "transaction_hashes", "verification_context" ], "type": "object" }, "name": "assetfare_v2_session_observe_source", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": true, "properties": { "action_available": { "type": "boolean" }, "current_action": { "anyOf": [ { "additionalProperties": true, "properties": { "action_id": { "format": "uuid", "type": "string" }, "expires_at": { "minLength": 1, "type": "string" }, "payload_sha256": { "description": "sha256(UTF-8 JSON with sorted keys and compact separators, excluding payload_sha256 itself)", "pattern": "^[0-9a-f]{64}$", "type": "string" }, "payload_sha256_spec": { "const": "sha256(UTF-8 JSON with sorted keys and compact separators, excluding payload_sha256 itself)", "type": "string" }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "signed": { "const": false, "type": "boolean" }, "step_index": { "minimum": 0, "type": "integer" }, "submitted": { "const": false, "type": "boolean" }, "unsigned_action": { "additionalProperties": {}, "type": "object" }, "version": { "const": "assetfare-direct-multichain-action-v2", "type": "string" }, "workflow_id": { "format": "uuid", "type": "string" } }, "required": [ "version", "workflow_id", "action_id", "step_index", "expires_at", "unsigned_action", "payload_sha256", "payload_sha256_spec", "server_signing", "server_submission", "signed", "submitted" ], "type": "object" }, { "type": "null" } ] }, "quote_binding": { "anyOf": [ { "additionalProperties": false, "properties": { "quote_fingerprint": { "pattern": "^[0-9a-f]{64}$", "type": "string" }, "quote_id": { "format": "uuid", "type": "string" }, "selected_mode": { "const": "session", "type": "string" }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "version": { "const": "assetfare-quote-bound-session-constraints-v1", "type": "string" }, "whole_session_path_and_bounds_enforced": { "const": true, "type": "boolean" } }, "required": [ "version", "quote_id", "quote_fingerprint", "selected_mode", "whole_session_path_and_bounds_enforced", "server_signing", "server_submission" ], "type": "object" }, { "additionalProperties": false, "properties": { "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "version": { "const": "legacy_advisory", "type": "string" }, "whole_session_path_and_bounds_enforced": { "const": false, "type": "boolean" } }, "required": [ "version", "whole_session_path_and_bounds_enforced", "server_signing", "server_submission" ], "type": "object" } ] }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "session_id": { "format": "uuid", "type": "string" }, "signed": { "const": false, "type": "boolean" }, "status": { "minLength": 1, "type": "string" }, "submitted": { "const": false, "type": "boolean" } }, "required": [ "session_id", "status", "action_available", "current_action", "quote_binding", "server_signing", "server_submission", "signed", "submitted" ], "type": "object" } }, { "description": "Refresh an expired action only while it remains unsubmitted. Example: pass the existing session, a new idempotency key, and the original verification_context. The refreshed action is deeply verified and receives a wallet handoff. Never refresh a submitted step; AssetFare never signs or submits.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "idempotency_key": { "description": "Caller-generated retry key, 8-128 characters. Reuse it only when retrying the same logical mutation; choose a new key for a new operation. Strict approval_v3 requests additionally enforce its ASCII key pattern.", "maxLength": 128, "minLength": 8, "type": "string" }, "session_id": { "description": "V2 workflow session UUID returned by assetfare_v2_session_create. Use only with assetfare_v2_session_* tools; do not pass a legacy session ID.", "format": "uuid", "type": "string" }, "session_token": { "description": "Sensitive caller-generated v2 session capability: at least 32 CSPRNG bytes encoded as 43-128 URL-safe base64 characters. Generate it locally; never log it or substitute a private key or legacy access token.", "pattern": "^[A-Za-z0-9_-]{43,128}$", "type": "string" }, "verification_context": { "additionalProperties": false, "description": "Strict caller-held context copied from the selected quote and approval. It contains public intent/wallet data only, never the raw session token or a private key, and is required whenever a remote MCP session call can return current_action.", "properties": { "approval_v3": { "additionalProperties": false, "properties": { "direct_route_summary_sha256": { "$ref": "#/properties/verification_context/properties/approval_v3/properties/quote_fingerprint" }, "idempotency_key": { "pattern": "^[A-Za-z0-9._:-]{8,128}$", "type": "string" }, "maximum_input_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "minimum_output_base": { "$ref": "#/properties/verification_context/properties/approval_v3/properties/maximum_input_base" }, "quote_fingerprint": { "pattern": "^[0-9a-f]{64}$", "type": "string" }, "quote_id": { "format": "uuid", "type": "string" }, "selected_mode": { "const": "session", "type": "string" }, "selection_status": { "const": "selected", "type": "string" }, "version": { "const": "assetfare-quote-bound-approval-v3", "type": "string" } }, "required": [ "version", "quote_id", "quote_fingerprint", "selection_status", "selected_mode", "maximum_input_base", "minimum_output_base", "direct_route_summary_sha256", "idempotency_key" ], "type": "object" }, "direct_route_summary": { "additionalProperties": false, "properties": { "assetfare_fee_bps": { "const": 1, "type": "number" }, "classification": { "enum": [ "direct_protocol_only", "external_intent" ], "type": "string" }, "economic_eligibility": { "enum": [ "not_asserted_by_capability", "coverage_only_not_primary" ], "type": "string" }, "external_intent_protocol_used": { "type": "boolean" }, "fee_collection_step_index": { "maximum": 7, "minimum": 0, "type": "integer" }, "from": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG", "polygon:USDC", "optimism:USDC", "ethereum:USDC", "hyperevm:USDC", "xlayer:USDC", "sei:USDC", "sonic:USDC" ], "type": "string" }, "mode": { "enum": [ "cctp_direct_composition", "optimism_source_cctp", "polygon_source_cctp", "robinhood_across_ingress_composition", "robinhood_paxos_egress_composition", "robinhood_paxos_ingress_composition", "same_chain_direct", "same_chain_direct_composition" ], "type": "string" }, "primary_selection_eligible": { "type": "boolean" }, "product_classification": { "enum": [ "primary_direct", "external_coverage_only" ], "type": "string" }, "provider_internal_dex_aggregation_possible": { "type": "boolean" }, "public_execution_eligible": { "type": "boolean" }, "route": { "enum": [ "solana:SOL->solana:USDC", "solana:SOL->solana:USDG", "solana:SOL->base:ETH", "solana:SOL->base:USDC", "solana:SOL->arbitrum:ETH", "solana:SOL->arbitrum:USDC", "solana:SOL->robinhood:ETH", "solana:SOL->robinhood:USDG", "solana:USDC->solana:SOL", "solana:USDC->solana:USDG", "solana:USDC->base:ETH", "solana:USDC->base:USDC", "solana:USDC->arbitrum:ETH", "solana:USDC->arbitrum:USDC", "solana:USDC->robinhood:ETH", "solana:USDC->robinhood:USDG", "solana:USDG->solana:SOL", "solana:USDG->solana:USDC", "solana:USDG->base:ETH", "solana:USDG->base:USDC", "solana:USDG->arbitrum:ETH", "solana:USDG->arbitrum:USDC", "solana:USDG->robinhood:ETH", "solana:USDG->robinhood:USDG", "base:ETH->solana:SOL", "base:ETH->solana:USDC", "base:ETH->solana:USDG", "base:ETH->base:USDC", "base:ETH->arbitrum:ETH", "base:ETH->arbitrum:USDC", "base:ETH->robinhood:ETH", "base:ETH->robinhood:USDG", "base:USDC->solana:SOL", "base:USDC->solana:USDC", "base:USDC->solana:USDG", "base:USDC->base:ETH", "base:USDC->arbitrum:ETH", "base:USDC->arbitrum:USDC", "base:USDC->robinhood:ETH", "base:USDC->robinhood:USDG", "arbitrum:ETH->solana:SOL", "arbitrum:ETH->solana:USDC", "arbitrum:ETH->solana:USDG", "arbitrum:ETH->base:ETH", "arbitrum:ETH->base:USDC", "arbitrum:ETH->arbitrum:USDC", "arbitrum:ETH->robinhood:ETH", "arbitrum:ETH->robinhood:USDG", "arbitrum:USDC->solana:SOL", "arbitrum:USDC->solana:USDC", "arbitrum:USDC->solana:USDG", "arbitrum:USDC->base:ETH", "arbitrum:USDC->base:USDC", "arbitrum:USDC->arbitrum:ETH", "arbitrum:USDC->robinhood:ETH", "arbitrum:USDC->robinhood:USDG", "robinhood:ETH->solana:SOL", "robinhood:ETH->solana:USDC", "robinhood:ETH->solana:USDG", "robinhood:ETH->base:ETH", "robinhood:ETH->base:USDC", "robinhood:ETH->arbitrum:ETH", "robinhood:ETH->arbitrum:USDC", "robinhood:ETH->robinhood:USDG", "robinhood:USDG->solana:SOL", "robinhood:USDG->solana:USDC", "robinhood:USDG->solana:USDG", "robinhood:USDG->base:ETH", "robinhood:USDG->base:USDC", "robinhood:USDG->arbitrum:ETH", "robinhood:USDG->arbitrum:USDC", "robinhood:USDG->robinhood:ETH", "polygon:USDC->base:USDC", "polygon:USDC->arbitrum:USDC", "optimism:USDC->base:USDC", "optimism:USDC->arbitrum:USDC", "ethereum:USDC->solana:USDC", "ethereum:USDC->base:USDC", "hyperevm:USDC->solana:USDC", "hyperevm:USDC->base:USDC", "xlayer:USDC->solana:USDC", "xlayer:USDC->base:USDC", "sei:USDC->solana:USDC", "sei:USDC->base:USDC", "sonic:USDC->solana:USDC", "sonic:USDC->base:USDC" ], "type": "string" }, "route_aggregator_used": { "const": false, "type": "boolean" }, "route_minimum_guard_bps": { "anyOf": [ { "maximum": 500, "minimum": 1, "type": "integer" }, { "type": "null" } ] }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "step_count": { "maximum": 8, "minimum": 1, "type": "integer" }, "steps": { "items": { "additionalProperties": false, "properties": { "action": { "enum": [ "swap", "bridge", "receive" ], "type": "string" }, "aggregator_api_used": { "const": false, "type": "boolean" }, "assetfare_fee_bps": { "enum": [ 0, 1 ], "type": "number" }, "direct_protocol": { "type": "boolean" }, "expected_input_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "expected_output_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "external_intent_protocol": { "type": "boolean" }, "from": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG", "polygon:USDC", "optimism:USDC", "ethereum:USDC", "hyperevm:USDC", "xlayer:USDC", "sei:USDC", "sonic:USDC" ], "type": "string" }, "index": { "maximum": 7, "minimum": 0, "type": "integer" }, "minimum_guard_bps": { "maximum": 500, "minimum": 1, "type": "integer" }, "minimum_input_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "minimum_output_base": { "pattern": "^[1-9][0-9]*$", "type": "string" }, "provider": { "enum": [ "raydium_clmm", "orca_whirlpool", "uniswap_v3", "circle_cctp", "circle_cctp_receive", "paxos_usdg_layerzero_oft", "across_intent_bridge" ], "type": "string" }, "to": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG" ], "type": "string" } }, "required": [ "index", "action", "provider", "from", "to", "expected_input_base", "minimum_input_base", "expected_output_base", "minimum_output_base", "assetfare_fee_bps", "direct_protocol", "external_intent_protocol", "aggregator_api_used" ], "type": "object" }, "maxItems": 8, "minItems": 1, "type": "array" }, "to": { "enum": [ "solana:SOL", "solana:USDC", "solana:USDG", "base:ETH", "base:USDC", "arbitrum:ETH", "arbitrum:USDC", "robinhood:ETH", "robinhood:USDG" ], "type": "string" }, "version": { "const": "assetfare-direct-route-summary-v1", "type": "string" } }, "required": [ "version", "route", "from", "to", "classification", "mode", "route_aggregator_used", "external_intent_protocol_used", "provider_internal_dex_aggregation_possible", "assetfare_fee_bps", "fee_collection_step_index", "server_signing", "server_submission", "step_count", "steps" ], "type": "object" }, "event_signer_public": { "anyOf": [ { "$ref": "#/properties/verification_context/properties/wallets/additionalProperties", "description": "Solana CCTP only: caller-generated ephemeral public key. Keep the matching private key client-side and use it to co-sign the returned unsigned event-account transaction; never send the private key." }, { "type": "null" } ], "description": "Solana CCTP only: caller-generated ephemeral public key. Keep the matching private key client-side and use it to co-sign the returned unsigned event-account transaction; never send the private key." }, "intent": { "additionalProperties": false, "properties": { "amount_usd": { "description": "Requested input value in USD, minimum 1. USD 1 is reachability/schema smoke only. A USD 50 competitive bucket was observed only for dated 2026-09-23 Solana USDC to Base USDC evidence and must not be generalized to another corridor. USD 1,000 is the primary representative amount. SOL input includes a swap. Always quote the actual intended amount.", "minimum": 1, "type": "number" }, "from_chain": { "description": "Source chain for the v2 route. Polygon, Optimism, Ethereum, HyperEVM, X Layer, Sei and Sonic are source-only and cannot be used as to_chain.", "enum": [ "solana", "base", "arbitrum", "robinhood", "polygon", "optimism", "ethereum", "hyperevm", "xlayer", "sei", "sonic" ], "type": "string" }, "from_token": { "description": "Input token symbol on from_chain. The chain-token pair must appear in current v2 capabilities.", "enum": [ "SOL", "ETH", "USDC", "USDG" ], "type": "string" }, "to_chain": { "description": "Destination chain for the v2 route: Solana, Base, Arbitrum, or Robinhood Chain. Source-only chains are not destinations.", "enum": [ "solana", "base", "arbitrum", "robinhood" ], "type": "string" }, "to_token": { "description": "Output token symbol on to_chain. The chain-token pair must appear in current v2 capabilities.", "enum": [ "SOL", "ETH", "USDC", "USDG" ], "type": "string" } }, "required": [ "from_chain", "from_token", "to_chain", "to_token", "amount_usd" ], "type": "object" }, "verification_context_sha256": { "pattern": "^[0-9a-f]{64}$", "type": "string" }, "version": { "const": "assetfare-session-verification-context-v1", "type": "string" }, "wallets": { "additionalProperties": { "description": "Caller-owned public wallet address: 0x plus 40 hex characters for EVM, or 32-44 base58 characters for Solana. Never provide secret key material.", "type": "string" }, "description": "Map each chain needed by this route to the caller's public wallet address. Include public addresses only; never private keys or seed phrases.", "propertyNames": { "enum": [ "solana", "base", "arbitrum", "robinhood", "polygon", "optimism", "ethereum", "hyperevm", "xlayer", "sei", "sonic" ] }, "type": "object" } }, "required": [ "version", "intent", "wallets", "event_signer_public", "approval_v3", "direct_route_summary", "verification_context_sha256" ], "type": "object" } }, "required": [ "session_token", "session_id", "idempotency_key", "verification_context" ], "type": "object" }, "name": "assetfare_v2_session_refresh_action", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": true, "properties": { "action_available": { "type": "boolean" }, "current_action": { "anyOf": [ { "additionalProperties": true, "properties": { "action_id": { "format": "uuid", "type": "string" }, "expires_at": { "minLength": 1, "type": "string" }, "payload_sha256": { "description": "sha256(UTF-8 JSON with sorted keys and compact separators, excluding payload_sha256 itself)", "pattern": "^[0-9a-f]{64}$", "type": "string" }, "payload_sha256_spec": { "const": "sha256(UTF-8 JSON with sorted keys and compact separators, excluding payload_sha256 itself)", "type": "string" }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "signed": { "const": false, "type": "boolean" }, "step_index": { "minimum": 0, "type": "integer" }, "submitted": { "const": false, "type": "boolean" }, "unsigned_action": { "additionalProperties": {}, "type": "object" }, "version": { "const": "assetfare-direct-multichain-action-v2", "type": "string" }, "workflow_id": { "format": "uuid", "type": "string" } }, "required": [ "version", "workflow_id", "action_id", "step_index", "expires_at", "unsigned_action", "payload_sha256", "payload_sha256_spec", "server_signing", "server_submission", "signed", "submitted" ], "type": "object" }, { "type": "null" } ] }, "quote_binding": { "anyOf": [ { "additionalProperties": false, "properties": { "quote_fingerprint": { "pattern": "^[0-9a-f]{64}$", "type": "string" }, "quote_id": { "format": "uuid", "type": "string" }, "selected_mode": { "const": "session", "type": "string" }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "version": { "const": "assetfare-quote-bound-session-constraints-v1", "type": "string" }, "whole_session_path_and_bounds_enforced": { "const": true, "type": "boolean" } }, "required": [ "version", "quote_id", "quote_fingerprint", "selected_mode", "whole_session_path_and_bounds_enforced", "server_signing", "server_submission" ], "type": "object" }, { "additionalProperties": false, "properties": { "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "version": { "const": "legacy_advisory", "type": "string" }, "whole_session_path_and_bounds_enforced": { "const": false, "type": "boolean" } }, "required": [ "version", "whole_session_path_and_bounds_enforced", "server_signing", "server_submission" ], "type": "object" } ] }, "server_signing": { "const": false, "type": "boolean" }, "server_submission": { "const": false, "type": "boolean" }, "session_id": { "format": "uuid", "type": "string" }, "signed": { "const": false, "type": "boolean" }, "status": { "minLength": 1, "type": "string" }, "submitted": { "const": false, "type": "boolean" } }, "required": [ "session_id", "status", "action_available", "current_action", "quote_binding", "server_signing", "server_submission", "signed", "submitted" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:67c005b3b982ee6b68683d8d1d6a238e28a2ef390bec4306c37c5f423d996dab | sha256sum