openapi: 3.2.0 info: title: FarmDash Agent Execution Authority API version: 2.0.0 description: 'WARNING: Running trade executions and cancellations places real perpetual futures trades and alters active market exposure, carrying significant risk of financial loss.' contact: name: FarmDash Engineering url: https://www.farmdash.one/agents license: name: MIT servers: - url: https://www.farmdash.one/api description: Production tags: - name: ExecutionAuthority paths: /v1/agent/authority: get: operationId: getExecutionAuthority summary: Get current execution authority configuration and bounded delegation status description: 'Returns the dual execution-authority state (USER_SIGNED vs BOUNDED_AUTONOMOUS), zero-custody confirmation, and active delegation status if configured.' tags: - ExecutionAuthority security: - bearerAuth: [] parameters: - $ref: '#/components/parameters/X-ClawHub-Skill' - name: ownerAddress in: query required: false schema: type: string pattern: ^0x[a-fA-F0-9]{40}$ - name: sessionId in: query required: false schema: type: string responses: '200': description: Authority discovery or active grant summary headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' content: application/json: schema: type: object required: - ok - mode - supportedModes - autonomousAvailable - executionRole - signingAuthority - zeroCustody properties: ok: type: boolean mode: type: string enum: - USER_SIGNED - BOUNDED_AUTONOMOUS supportedModes: type: array items: type: string autonomousAvailable: type: boolean executionRole: type: string signingAuthority: type: string zeroCustody: type: boolean grant: type: object nullable: true nextAction: type: string '400': $ref: '#/components/responses/BadRequest' '402': $ref: '#/components/responses/PaymentRequired' post: operationId: manageExecutionAuthority summary: Request delegation payload, register delegation, prepare autonomous swap… description: 'Dual execution authority management. Actions: get_authority, request_delegation, register_delegation, prepare_autonomous_swap, confirm_autonomous_swap, revoke. Zero key custody: calling agent local signer retains wallet authority.' tags: - ExecutionAuthority security: - bearerAuth: [] requestBody: required: true content: application/json: schema: type: object required: - action properties: action: type: string enum: - get_authority - status - request_delegation - register_delegation - prepare_autonomous_swap - confirm_autonomous_swap - revoke ownerAddress: type: string sessionId: type: string grantId: type: string responses: '200': description: Authority operation success headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' content: application/json: schema: type: object required: - ok properties: ok: type: boolean '400': $ref: '#/components/responses/BadRequest' '402': $ref: '#/components/responses/PaymentRequired' '403': description: Policy violation or structured authority rejection headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' content: application/json: schema: type: object properties: error: type: string code: type: string details: type: object components: parameters: X-ClawHub-Skill: name: X-ClawHub-Skill in: header required: false schema: type: string pattern: ^[a-zA-Z0-9-]{1,128}$ example: farmdash-signal-architect description: 'ClawHub skill attribution. An installed FarmDash skill sends its canonical skill slug (e.g. farmdash-signal-architect) on every FarmDash API request so anonymous Scout usage can be attributed to the skill that drove it. Optional and analytics-only: absence never blocks a request, and malformed values are ignored. This is a skill identity, never a wallet address, API key, or user ID.' schemas: PaymentRequiredError: type: object properties: ok: type: boolean example: false error: type: string example: payment_required code: type: string description: '`free_quota_exhausted` when the shared Scout allowance is spent; otherwise `payment_required`.' example: free_quota_exhausted message: type: string instruction: type: string enum: - STOP_RETRYING description: Present when an exhausted free caller must not repeat the same unpaid request. retry_same_request: type: boolean example: false next_action: type: string example: Wait for your quota reset, upgrade your plan, or use x402 paid access. quota: type: object properties: tier: type: string example: scout remaining: type: integer example: 0 reset_at: type: string format: date-time abuse_notice: type: string example: Repeated automated requests while quota is exhausted may result in temporary or permanent API blocking. retryable: type: boolean upgrade_url: type: string format: uri direct_upgrade_url: type: string format: uri rate_limit: type: object additionalProperties: true developer_sandbox: type: object additionalProperties: true payment_required: type: object properties: amount: type: string example: 0.01 USDC chain: type: string example: Base destination: type: string example: '0xb0Ed0d7bca24BBaD635B977C2efbE06742e33377' token: type: string chainId: type: integer example: 8453 ErrorResponse: type: object required: - error properties: ok: type: boolean example: false error: type: string code: type: string message: type: string retryable: type: boolean request_id: type: string details: type: object additionalProperties: true responses: PaymentRequired: description: Free-tier limit exceeded — x402 payment required headers: X-Payment-Required: schema: type: string X-Payment-Address: schema: type: string description: Treasury wallet (USDC on Base) X-Payment-Token: schema: type: string description: USDC contract on Base X-Payment-Amount: schema: type: string description: Amount in token decimals (990000 = 0.99 USDC) X-Payment-Chain-Id: schema: type: string description: 8453 (Base) content: application/json: schema: $ref: '#/components/schemas/PaymentRequiredError' BadRequest: description: Invalid parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' headers: X-Request-ID: description: Unique request trace ID for debugging and support schema: type: string format: uuid securitySchemes: bearerAuth: type: http scheme: bearer description: Pioneer or Syndicate API key x-agent-use-cases: - id: bounded-autopilot name: Bounded Autopilot tier: Syndicate cadence: Every 5 minutes purpose: Run an always-on loop inside explicit budgets, allowlists, cooldowns, quote freshness, and local-signing requirements. primaryTools: - agent_onboard - create_session - configure_autopilot - autopilot_cycle - session_heartbeat stopConditions: - Budget, allowlist, cooldown, quote freshness, or risk bound is violated. - Required local EIP-191 or EIP-712 signature is missing. - Realized performance degrades enough to require analysis_only mode. - id: airdrop-rotation name: Airdrop Rotation Desk tier: Pioneer cadence: Daily or event-driven purpose: Watch Trail Heat, snapshots, multiplier changes, wallet health, and costs before entering, waiting, rotating, or exiting. primaryTools: - get_trail_heat - get_historical_trailheat - get_agent_events - simulate_points - get_swap_quote - simulate_swap_execution stopConditions: - Expected point edge is unclear or negative after fees and gas. - Sybil risk exceeds the configured threshold. - User constraints do not allow the target chain or protocol. - id: cross-chain-roi name: Cross-Chain ROI Gate tier: Pioneer cadence: Before any bridge purpose: Bridge only when net expected edge remains positive after bridge fee, gas, slippage, and execution risk buffer. primaryTools: - get_chain_breakdown - get_wallet_balances - get_token_prices - get_swap_quote - simulate_swap_execution - optimize_portfolio stopConditions: - netEdgeUsd is not positive. - Quote age exceeds the configured freshness limit. - Target chain is not allowlisted. - id: perps-hedge name: Perps Hedge Co-Pilot tier: Syndicate cadence: Before exposure changes purpose: Evaluate whether a farming position needs a Hyperliquid hedge, with no_trade as a valid outcome. primaryTools: - scan_funding_rates - scan_market_conditions - get_futures_account - analyze_futures_strategy - calculate_position_size stopConditions: - Research gate expires. - Strategy confidence, liquidity, jurisdiction, or guardrails do not support execution. - Daily loss or drawdown limit is reached.