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 yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:67c005b3b982ee6b68683d8d1d6a238e28a2ef390bec4306c37c5f423d996dab | sha256sum