{"ok":true,"mode":"USER_SIGNED","supportedModes":["USER_SIGNED","BOUNDED_AUTONOMOUS"],"execution_mode_selection":{"default":"USER_SIGNED","supported_modes":["USER_SIGNED","BOUNDED_AUTONOMOUS"],"unbounded_autonomy_supported":false,"selection_required_before_bounded_autonomy":true,"generic_reads_require_selection":false,"omitted_execution_mode_resolves_to":"USER_SIGNED","current_signer_model":"EOA_V1_OWNER_LOCAL_SIGNER","separate_session_signer_supported":false,"eoa_v1_signer_invariant":"sessionPublicKey == ownerAddress","signer_model_truth":{"current_signer_model":"EOA_V1_OWNER_LOCAL_SIGNER","separate_session_signer_supported":false,"required_grant_binding":"sessionPublicKey == ownerAddress","transaction_signer":"authorized_owner_eoa_in_customer_local_agent_runtime","farmdash_receives_or_stores_private_key":false,"separate_delegated_session_key_path":"ERC4337_SMART_ACCOUNT_PREPARATION_ONLY","explanation":"Operational EOA V1 currently requires sessionPublicKey == ownerAddress and the transaction signer to be the authorized owner EOA in the customer's local agent runtime. FarmDash never receives or stores the private key. Separate delegated session-key signers belong to the not-yet-operational smart-account/ERC-4337 path."},"tagline":"Sign once and let your agent operate autonomously within the limits you set.","conceptual_user_prompt":"Would you like Standard FarmDash, where you approve/sign execution actions, or Autonomous FarmDash, where you sign one scoped authorization and your agent can continue operating within the limits you set?","pre_execution_workflow":["Before entering any wallet-changing execution workflow, query current execution authority via get_execution_authority (GET /api/v1/agent/authority) for the active persisted FarmDash session.","If an active, valid bounded delegation already exists for that persisted FarmDash session, discover and report its authorized policy bounds rather than asking the user to sign another delegation when reusing that persisted session across conversations.","A bounded EVM grant remains scoped to its existing agentSessionId; a different or new agentSessionId does not inherit another session’s delegation and remains USER_SIGNED / CREATE_DELEGATION.","If no active bounded delegation exists for the current session, USER_SIGNED (Standard FarmDash) remains the safe default.","Explain that the user may alternatively sign one bounded delegation to enable ongoing autonomous operation within the limits they set.","Before creating that delegation, explicitly obtain user choice/consent."],"never_infer_autonomous_consent_from":["api_key","subscription_payment","x402_payment","session_creation","prior_farmdash_usage","optimization_request","position_monitoring_request","generic_do_this_for_me_instruction"],"authority_separation":{"payment_grants_execution_authority":false,"api_authentication_grants_wallet_authority":false,"session_grants_execution_authority":false,"farmdash_receives_private_keys":false},"policy_limit_dimensions":["chains","protocols_or_router_contracts","assets","allowed_actions","per_action_value","cumulative_budget","gas","slippage","validity_expiry","revocation"],"existing_active_delegation_rule":{"discover_before_prompting":true,"report_active_bounds":true,"scoped_to_agent_session_id":true,"host_may_reuse_persisted_session_across_conversations":true,"new_session_inherits_other_session_grant":false,"re_sign_required_for_same_persisted_session":false,"inactive_states_excluded":["expired","exhausted","invalid","revoked"]},"options":{"USER_SIGNED":{"mode":"USER_SIGNED","label":"Standard FarmDash","description":"You approve/sign each execution action.","summary":"The agent can research, plan, quote, simulate and prepare actions, but the user provides the required approval/signature for execution.","default":true,"requires_owner_delegation":false,"requires_explicit_opt_in":false,"repeated_human_signature_per_action":true,"farmdash_custody":false,"signer_location":"customer_wallet_or_agent_runtime"},"BOUNDED_AUTONOMOUS":{"mode":"BOUNDED_AUTONOMOUS","label":"Autonomous FarmDash","description":"Sign one scoped delegation and let your agent operate autonomously within the limits you authorize.","summary":"Sign once and let your agent operate autonomously within the limits you set.","detail":"The owner signs one scoped, revocable delegation/policy. After that, the user's local agent signer may execute repeatedly without requiring another human signature for every action, provided every action remains inside the authorized policy bounds.","default":false,"requires_owner_delegation":true,"requires_explicit_opt_in":true,"one_time_owner_authorization":true,"repeated_human_signature_per_action":false,"local_agent_signer_required":true,"current_signer_model":"EOA_V1_OWNER_LOCAL_SIGNER","separate_session_signer_supported":false,"required_grant_binding":"sessionPublicKey == ownerAddress","transaction_signer":"authorized_owner_eoa_in_customer_local_agent_runtime","signer_model_note":"Operational EOA V1 currently requires sessionPublicKey == ownerAddress and the transaction signer to be the authorized owner EOA in the customer's local agent runtime. FarmDash never receives or stores the private key. Separate delegated session-key signers belong to the not-yet-operational smart-account/ERC-4337 path.","revocable":true,"farmdash_custody":false,"signer_location":"customer_agent_runtime","policy_limits_required":["chains","protocols_or_router_contracts","assets","allowed_actions","per_action_value","cumulative_budget","gas","slippage","validity_expiry","revocation"],"canonical_tools":["agent_onboard","get_execution_authority","request_execution_delegation","register_execution_delegation"]}}},"execution_domains":{"spot":{"USER_SIGNED":{"status":"operational","default_for_one_off":true,"requires_delegation":false,"signer_location":"customer_wallet_or_agent_runtime","farmdash_custody":false,"description":"User signs each transaction individually. FarmDash prepares and simulates; customer wallet approves and broadcasts."},"BOUNDED_AUTONOMOUS":{"status":"operational","opt_in":true,"requires_delegation":true,"signer_location":"customer_agent_runtime","farmdash_custody":false,"policy_bounded":true,"revocable":true,"description":"You approve a revocable spending policy once. Your own agent signs and broadcasts locally within those limits. FarmDash never receives the key."},"ERC4337_SERVER_SUBMISSION":{"status":"preparation_only","opt_in":true,"requires_delegation":true,"signer_location":"customer_signed_smart_account","farmdash_custody":false,"description":"Qualified tenant/account authorization and session-key policy enforcement on public forwarding, configured bundler, durable claims and verified receipt integration."},"GENERIC_SERVER_INTENT_EXECUTION":{"status":"preparation_only","requires_delegation":false,"signer_location":"customer_wallet_or_agent_runtime","farmdash_custody":false,"description":"Generic FarmDashIntent execution is preparation-only. FarmDash does not forward a generic signed transaction until an implemented trusted adapter binds the exact executable payload to the approved simulation and canonical receipt verification."}},"futures":{"USER_SIGNED":{"status":"operational","default_for_one_off":true,"requires_delegation":false,"signer_location":"customer_wallet_or_agent_runtime","farmdash_custody":false,"wallet_signature_required":true,"description":"Customer signs each Hyperliquid action locally; FarmDash verifies and forwards the signed action."},"BOUNDED_AUTONOMOUS":{"status":"operational","opt_in":true,"requires_delegation":true,"requires_owner_signed_futures_policy":true,"signer_location":"customer_agent_runtime","farmdash_custody":false,"wallet_signature_required":true,"policy_bounded":true,"revocable":true,"scopes":["futures.open","futures.reduce","futures.close","futures.cancel","futures.protective_order"],"description":"Owner authorizes a bounded futures policy. Their API wallet signs every action locally. Operational with zero custody."}},"solana":{"USER_SIGNED":{"status":"operational","default_for_one_off":true,"requires_delegation":false,"signer_location":"customer_wallet_or_agent_runtime","farmdash_custody":false,"wallet_signature_required":true,"description":"Customer signs each Jupiter swap transaction locally; FarmDash verifies and reconciles."},"BOUNDED_AUTONOMOUS":{"status":"operational","opt_in":true,"requires_delegation":true,"requires_owner_signed_solana_policy":true,"signer_location":"customer_agent_runtime","farmdash_custody":false,"wallet_signature_required":true,"policy_bounded":true,"revocable":true,"description":"Owner authorizes a native Solana bounded policy message. The local agent signer must already be an on-chain required signer for the prepared transaction; FarmDash policy does not create Solana signing authority. FarmDash verifies and reconciles with zero custody."}}},"executionDomains":{"spot":{"USER_SIGNED":{"status":"operational","default_for_one_off":true,"requires_delegation":false,"signer_location":"customer_wallet_or_agent_runtime","farmdash_custody":false,"description":"User signs each transaction individually. FarmDash prepares and simulates; customer wallet approves and broadcasts."},"BOUNDED_AUTONOMOUS":{"status":"operational","opt_in":true,"requires_delegation":true,"signer_location":"customer_agent_runtime","farmdash_custody":false,"policy_bounded":true,"revocable":true,"description":"You approve a revocable spending policy once. Your own agent signs and broadcasts locally within those limits. FarmDash never receives the key."},"ERC4337_SERVER_SUBMISSION":{"status":"preparation_only","opt_in":true,"requires_delegation":true,"signer_location":"customer_signed_smart_account","farmdash_custody":false,"description":"Qualified tenant/account authorization and session-key policy enforcement on public forwarding, configured bundler, durable claims and verified receipt integration."},"GENERIC_SERVER_INTENT_EXECUTION":{"status":"preparation_only","requires_delegation":false,"signer_location":"customer_wallet_or_agent_runtime","farmdash_custody":false,"description":"Generic FarmDashIntent execution is preparation-only. FarmDash does not forward a generic signed transaction until an implemented trusted adapter binds the exact executable payload to the approved simulation and canonical receipt verification."}},"futures":{"USER_SIGNED":{"status":"operational","default_for_one_off":true,"requires_delegation":false,"signer_location":"customer_wallet_or_agent_runtime","farmdash_custody":false,"wallet_signature_required":true,"description":"Customer signs each Hyperliquid action locally; FarmDash verifies and forwards the signed action."},"BOUNDED_AUTONOMOUS":{"status":"operational","opt_in":true,"requires_delegation":true,"requires_owner_signed_futures_policy":true,"signer_location":"customer_agent_runtime","farmdash_custody":false,"wallet_signature_required":true,"policy_bounded":true,"revocable":true,"scopes":["futures.open","futures.reduce","futures.close","futures.cancel","futures.protective_order"],"description":"Owner authorizes a bounded futures policy. Their API wallet signs every action locally. Operational with zero custody."}},"solana":{"USER_SIGNED":{"status":"operational","default_for_one_off":true,"requires_delegation":false,"signer_location":"customer_wallet_or_agent_runtime","farmdash_custody":false,"wallet_signature_required":true,"description":"Customer signs each Jupiter swap transaction locally; FarmDash verifies and reconciles."},"BOUNDED_AUTONOMOUS":{"status":"operational","opt_in":true,"requires_delegation":true,"requires_owner_signed_solana_policy":true,"signer_location":"customer_agent_runtime","farmdash_custody":false,"wallet_signature_required":true,"policy_bounded":true,"revocable":true,"description":"Owner authorizes a native Solana bounded policy message. The local agent signer must already be an on-chain required signer for the prepared transaction; FarmDash policy does not create Solana signing authority. FarmDash verifies and reconciles with zero custody."}}},"execution_modes":{"USER_SIGNED":{"status":"operational","default_for_one_off":true,"requires_delegation":false,"signer_location":"customer_wallet_or_agent_runtime","farmdash_custody":false,"description":"User signs each transaction individually. FarmDash prepares and simulates; customer wallet approves and broadcasts."},"BOUNDED_AUTONOMOUS":{"status":"operational","opt_in":true,"requires_delegation":true,"signer_location":"customer_agent_runtime","farmdash_custody":false,"policy_bounded":true,"revocable":true,"description":"You approve a revocable spending policy once. Your own agent signs and broadcasts locally within those limits. FarmDash never receives the key."},"ERC4337_SERVER_SUBMISSION":{"status":"preparation_only","opt_in":true,"requires_delegation":true,"signer_location":"customer_signed_smart_account","farmdash_custody":false,"description":"Qualified tenant/account authorization and session-key policy enforcement on public forwarding, configured bundler, durable claims and verified receipt integration."},"GENERIC_SERVER_INTENT_EXECUTION":{"status":"preparation_only","requires_delegation":false,"signer_location":"customer_wallet_or_agent_runtime","farmdash_custody":false,"description":"Generic FarmDashIntent execution is preparation-only. FarmDash does not forward a generic signed transaction until an implemented trusted adapter binds the exact executable payload to the approved simulation and canonical receipt verification."}},"executionModes":{"USER_SIGNED":{"status":"operational","default_for_one_off":true,"requires_delegation":false,"signer_location":"customer_wallet_or_agent_runtime","farmdash_custody":false,"description":"User signs each transaction individually. FarmDash prepares and simulates; customer wallet approves and broadcasts."},"BOUNDED_AUTONOMOUS":{"status":"operational","opt_in":true,"requires_delegation":true,"signer_location":"customer_agent_runtime","farmdash_custody":false,"policy_bounded":true,"revocable":true,"description":"You approve a revocable spending policy once. Your own agent signs and broadcasts locally within those limits. FarmDash never receives the key."},"ERC4337_SERVER_SUBMISSION":{"status":"preparation_only","opt_in":true,"requires_delegation":true,"signer_location":"customer_signed_smart_account","farmdash_custody":false,"description":"Qualified tenant/account authorization and session-key policy enforcement on public forwarding, configured bundler, durable claims and verified receipt integration."},"GENERIC_SERVER_INTENT_EXECUTION":{"status":"preparation_only","requires_delegation":false,"signer_location":"customer_wallet_or_agent_runtime","farmdash_custody":false,"description":"Generic FarmDashIntent execution is preparation-only. FarmDash does not forward a generic signed transaction until an implemented trusted adapter binds the exact executable payload to the approved simulation and canonical receipt verification."}},"autonomous_configurable":true,"autonomous_operational":true,"autonomousAvailable":true,"executionRole":"PREPARATION_AND_VERIFICATION_CONTROL_PLANE","signingAuthority":"CALLING_AGENT_LOCAL_SIGNER","zeroCustody":true,"featureState":{"USER_SIGNED":"operational","BOUNDED_AUTONOMOUS":"operational"},"grant":null,"nextAction":"NONE","next_actions":{"USER_SIGNED":"Continue normal quote / simulate / user-sign flow. Standard interactive execution remains default and first-class without delegation.","BOUNDED_AUTONOMOUS":"Create bounded delegation (POST action: request_delegation) only if unattended autonomous execution is desired."},"remediationHints":{"AUTONOMY_NOT_CONFIGURED":"Sign a BoundedExecutionDelegation payload to authorize autonomous execution within chosen limits.","GRANT_EXPIRED":"Session key grant has expired. Request a new delegation payload and sign with the owner wallet.","GRANT_REVOKED":"Session key grant was explicitly revoked. Request a new delegation payload to re-enable autonomous execution.","GRANT_INACTIVE":"Session key grant is not in an active status. Check grant status or create a fresh grant.","GRANT_NOT_YET_VALID":"Session key grant validAfter timestamp is in the future. Wait until the activation window opens.","OWNER_MISMATCH":"Owner address does not match the delegator address in the active session grant.","SESSION_MISMATCH":"Agent session ID does not match the session bound to this grant.","SIGNER_KEY_MISMATCH":"The signing key public identity does not match the authorized session public key.","SEPARATE_SESSION_SIGNER_NOT_SUPPORTED_FOR_EOA_V1":"EOA V1 requires sessionPublicKey to match ownerAddress (local signer mode). Sub-delegated ephemeral session key signers require an ERC-4337 smart account or validation module.","EMPTY_ALLOWED_PROTOCOLS":"Allowed protocols allowlist cannot be empty. Specify allowed execution routers or protocols.","EMPTY_ALLOWED_ASSETS":"Allowed assets allowlist cannot be empty. Specify allowed tokens (e.g. USDC, ETH).","CHAIN_NOT_ALLOWED":"The target blockchain is not authorized by the active session key grant.","PROTOCOL_NOT_ALLOWED":"The target protocol router or contract address is not in the authorized protocol allowlist.","ROUTER_NOT_ALLOWED":"The quoted provider execution router is not in the signed delegation allowed protocols.","ASSET_NOT_ALLOWED":"One or more assets in the swap are not in the authorized asset allowlist.","ACTION_NOT_ALLOWED":"The requested action is not in the authorized action list (e.g. SWAP).","PER_TX_LIMIT_EXCEEDED":"The transaction notional value exceeds the maximum USD limit permitted per transaction.","SESSION_BUDGET_EXCEEDED":"The requested amount exceeds the remaining cumulative budget on the active grant.","SLIPPAGE_LIMIT_EXCEEDED":"The proposed slippage exceeds the maximum allowed slippage basis points.","GAS_LIMIT_EXCEEDED":"The estimated transaction gas exceeds the maximum allowed gas limit in USD.","POLICY_HASH_MISMATCH":"The transaction policy hash does not match the cryptographically signed grant policy hash.","SIMULATION_FAILED":"Pre-flight transaction simulation failed on RPC. Cannot prepare unverified transactions.","SIMULATION_NOT_FOUND":"Simulation report not found or expired. Run POST /api/v1/swap/simulate to simulate the trade before execution.","SIMULATION_INTENT_MISMATCH":"Simulation report does not match the provided intent ID.","INTENT_NOT_FOUND":"Swap intent not found or expired. Generate a fresh quote with get_swap_quote before preparing.","RESERVATION_NOT_FOUND":"Budget reservation not found or expired.","RESERVATION_ALREADY_RELEASED":"Budget reservation was already released and cannot be consumed.","TRANSACTION_REVERTED":"Transaction reverted on-chain. Budget reservation has been released.","SIGNING_UNAVAILABLE":"Agent local signer is not configured or cannot sign for target chain.","BUNDLER_UNAVAILABLE":"ERC-4337 bundler RPC is unavailable.","SUBMISSION_AMBIGUOUS":"Transaction broadcast was acknowledged with ambiguous status. Budget is held in safety state.","NONCE_REPLAYED":"The delegation nonce has already been consumed. Sign with a fresh timestamp nonce.","INVALID_SIGNATURE":"EIP-712 signature verification failed. The recovered signer does not match the ownerAddress.","INVALID_TX_HASH":"Invalid transaction hash format. Expected a 32-byte 0x-prefixed hex string.","TRANSACTION_DIGEST_MISMATCH":"On-chain transaction calldata or recipient does not match the prepared transaction digest committed during budget reservation.","FEE_TRANSFER_VERIFICATION_FAILED":"Exact on-chain FarmDash fee transfer could not be verified in transaction logs.","FEE_CONFIRMATION_FAILED":"Failed to record durable settlement confirmation for fee event.","SETTLEMENT_EVIDENCE_UNAVAILABLE":"Autonomous execution requires exact settlement evidence for revenue realization.","FEE_EVENT_PERSISTENCE_FAILED":"Failed to record durable fee event for autonomous execution. Retry the operation.","FEE_EVENT_REQUIRED":"Autonomous execution confirmation requires a bound fee event.","UNAUTHORIZED_SESSION":"Session authentication failed. Provide a valid sessionToken matching the session."},"hint":"Pass ownerAddress query param to inspect active bounded execution delegation, or proceed with standard USER_SIGNED flow."}