FarmDash Agent Hub Agent API

The Agent API from FarmDash Agent Hub — 1 operation(s) for agent.

Operations 1

POST /v1/agent/futures/reconcile-order Reconcile one Hyperliquid order from authoritative venue evidence #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/farmdash:farmdash-agent-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

farmdash-agent-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: FarmDash Agent 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. Immediate, explicit manual end-user confirmation and consent is strictly required immediately before placing any execution or cancellation request. Do not allow autonomous agents to auto-run trade execution or cancellation without manual user approval. FarmDash is an intelligence and control layer for DeFi agents and serious airdrop farmers. This API covers swap transaction preparation (Signal Architect),

    protocol discovery intelligence (Trail Heat), perpetual futures (Futures Strategist), portfolio

    research, bounded autonomous sessions, x402 payment flows, and agent-readable opportunity intelligence. FarmDash does not request seed phrases or raw wallet private keys. Compatibility

    swap routes do not custody funds; separately configured venue or MPC delegations

    remain subject to their provider controls and explicit policy bounds. ## Authentication & Credential Lifecycle

    | Tier | Price | Auth | Rate Limit | Key Prefix | Entitlements | Best for |

    |------|-------|------|------------|------------|--------------|----------|

    | Scout | Free | None | 30 req / 24 h per IP | `fd_scout_free` | Keyless public discovery and quotes | Keyless discovery and quotes |

    | Pioneer | $39.99/mo USDC | `Authorization: Bearer ` | 1,500 req / day | `fd_pio_` | Premium research, full Trail Heat, wallet analytics, sybil audits | Serious farmers, full datasets, sybil audits, wallet analytics |

    | Syndicate | $199/mo USDC | `Authorization: Bearer ` | 50,000 req / day | `fd_syn_` | All Pioneer features plus advanced control tooling, bounded autopilot, webhooks, unrestricted CORS | Teams, serious agents, high-volume API use, webhooks, unrestricted CORS, advanced control/session tooling |


    ### Paid Entitlement & Key Issuance Sequence:

    1. **Pay**: Transfer USDC ($39.99/mo for Pioneer, $199/mo for Syndicate) on Base, Arbitrum, Optimism, Polygon, Ethereum, or Linea to the FarmDash treasury. 2. **Verify**: Post transaction hash and wallet to `verify-payment` to record on-chain confirmation in `users` and `payment_events`. 3. **Sign Proof**: Sign an EIP-712 `ApiKeyRequest` with the paying wallet (domain: `FarmDash`, intent: `Issue FarmDash API key`, single-use `nonce`). 4. **Receive Credential**: Post the signed payload to `/api/v1/agent/api-key`. The credential tier is server-authoritative, derived exclusively from your active paid subscription (client input cannot downgrade or elevate your tier). The plaintext key is returned exactly once; FarmDash stores only a SHA-256 hash. 5. **Authenticate**: Send `Authorization: Bearer ` on all requests. Daily limits reset every 24 hours (`X-RateLimit-Remaining`). Keys expire with your 30-day subscription; expired keys return HTTP 402 Payment Required. Higher-tier Syndicate capabilities (`advanced_control`) remain blocked for Pioneer subscribers. For SDK development without live data, use the deterministic sandbox on

    the two endpoints that explicitly support it (`/v1/agent/protocols` and

    `/v1/trail-heat`):

    `?mock=true`, `X-FarmDash-Mock: true`, or `Authorization: Bearer fd_sandbox_mock`

    Quote mock requests return typed `mock_not_supported` without contacting a live provider. Swap execution requires a fresh successful preflight simulation plus an EIP-191 agent wallet signature. Futures execution requires an EIP-712 Hyperliquid wallet signature. ## Dust Storm Protocol

    On upstream failure, FarmDash returns `ok:false` with a typed degraded state

    and a `warnings` array containing `{ kind: "dust_storm", message: "..." }`. Cached SDK responses may be returned as stale with explicit stale-data age. ## x402 Payment Wall

    When Scout limits are exceeded, FarmDash returns HTTP 402 with

    `code: free_quota_exhausted`, `instruction: STOP_RETRYING`, the UTC reset time,

    upgrade URL, and x402 payment instructions.'
  contact:
    name: FarmDash Engineering
    url: https://www.farmdash.one/agents
  license:
    name: MIT
servers:
- url: https://www.farmdash.one/api
  description: Production
tags:
- name: Agent
paths:
  /v1/agent/futures/reconcile-order:
    parameters:
    - $ref: '#/components/parameters/X-FarmDash-Installation-ID'
    - $ref: '#/components/parameters/X-FarmDash-Client'
    - $ref: '#/components/parameters/X-FarmDash-Client-Version'
    - $ref: '#/components/parameters/X-FarmDash-Skill-Version'
    post:
      operationId: reconcilePerpOrder
      summary: Reconcile one Hyperliquid order from authoritative venue evidence
      description: 'Read-only and zero-custody: signs nothing, submits nothing, and never retries

        an order. Durable order/fill evidence uses the existing idempotent accounting

        path; balances are not execution evidence. agentAddress is the venue API-wallet

        signer, not the session agent. accountAddress identifies its delegated owner.

        Known bounded reservations are discovered by account, network, market and OID.

        Optional controlActionId selects one exact durable action for cancellation or

        unknown-submission recovery. Selection is not proof of OID linkage; unproven

        submissions remain unknown and liability stays held. For a batch cancellation,

        reconcile every signed target OID. A bounded reservation result is policy

        bookkeeping, not proof of a fill, final cancellation or recognized revenue.'
      security:
      - bearerAuth: []
      - {}
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconcileOrderRequest'
      responses:
        '200':
          description: Authoritative venue evidence recorded durably; bounded context is present only when matching reservations exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReconcileOrderResponse'
        '400':
          description: Invalid input or signer/account authority relationship
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReconcileOrderError'
        '402':
          description: Commercial API capacity payment required; payment is not execution authority
        '409':
          description: controlActionId does not identify one unique durable action for this account, network and market; no liability released
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReconcileOrderError'
        '413':
          description: Request body exceeds 1 MB
        '429':
          description: API rate limit exceeded
        '502':
          description: Reconciliation unavailable; no execution or liability release inferred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReconcileOrderError'
        '503':
          description: Venue evidence or durable reconciliation unavailable; inspect durableEvidence before claiming persistence, and never resubmit automatically
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReconcileOrderError'
      tags:
      - Agent
components:
  schemas:
    FuturesBuilderFeeReconciliation:
      type: object
      required:
      - state
      - builderFeeTotal
      - fillCountWithBuilderFee
      - feeToken
      - venueTotal
      - nonBuilderVenueFee
      - recipient
      - signedTenthsBps
      - reason
      - fills
      properties:
        state:
          type: string
          enum:
          - exact
          - absent
          - ambiguous
          - unavailable
        builderFeeTotal:
          type: string
          nullable: true
        fillCountWithBuilderFee:
          type: integer
        feeToken:
          type: string
          nullable: true
        venueTotal:
          type: string
          nullable: true
        nonBuilderVenueFee:
          type: string
          nullable: true
        recipient:
          type: string
          nullable: true
        signedTenthsBps:
          type: string
          nullable: true
        reason:
          type: string
          nullable: true
        fills:
          type: array
          items:
            $ref: '#/components/schemas/FuturesBuilderFeeFill'
    FuturesReconciliationState:
      type: string
      enum:
      - submitted
      - resting
      - partially_filled
      - fully_filled
      - canceled
      - venue_canceled
      - rejected
      - unknown
      - ambiguous
    FuturesBuilderFeeFill:
      type: object
      required:
      - fillId
      - fillHash
      - observedBuilderFee
      - expectedBuilderFee
      - builderFeeToken
      - nonBuilderVenueFee
      - state
      - reason
      properties:
        fillId:
          type: integer
        fillHash:
          type: string
        observedBuilderFee:
          type: string
          nullable: true
        expectedBuilderFee:
          type: string
          nullable: true
        builderFeeToken:
          type: string
          nullable: true
        nonBuilderVenueFee:
          type: string
          nullable: true
        state:
          type: string
          enum:
          - exact
          - absent
          - ambiguous
          - unavailable
        reason:
          type: string
          nullable: true
    FuturesOrderReconciliation:
      allOf:
      - $ref: '#/components/schemas/FuturesOrderReconciliationEvidence'
      - type: object
        required:
        - state
        - evidence
        properties:
          state:
            $ref: '#/components/schemas/FuturesReconciliationState'
          evidence:
            $ref: '#/components/schemas/FuturesOrderReconciliationEvidence'
    ReconcileOrderRequest:
      type: object
      additionalProperties: false
      required:
      - agentAddress
      - coin
      - orderId
      properties:
        agentAddress:
          type: string
          pattern: ^0x[a-fA-F0-9]{40}$
          description: Venue API-wallet signer; never replaced by the session agent
        accountAddress:
          type: string
          pattern: ^0x[a-fA-F0-9]{40}$
          description: Delegated equity owner; defaults to agentAddress
        coin:
          type: string
          pattern: ^[a-zA-Z0-9]{1,16}$
          description: Default Hyperliquid perp market symbol, normalized uppercase
        orderId:
          type: integer
          minimum: 1
          maximum: 9007199254740991
        intentHash:
          type: string
          nullable: true
          pattern: ^[a-f0-9]{64}$
          description: Optional submission provenance selector; caller hash alone is not evidence
        controlActionId:
          type: string
          format: uuid
          pattern: ^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$
          description: Optional exact durable bounded control action selector, not authority or proof of OID linkage
    ReconcileOrderError:
      type: object
      description: Validation, conflict or degraded error. Established venue truth may accompany a persistence/core failure; missing durableEvidence never proves persistence. No automatic action resubmission.
      properties:
        ok:
          type: boolean
          enum:
          - false
        code:
          type: string
        error:
          oneOf:
          - type: string
          - type: object
            additionalProperties: true
        reason:
          type: string
        retryable:
          type: boolean
        degraded:
          type: object
          additionalProperties: true
        warnings:
          type: array
          items:
            type: object
            additionalProperties: true
        reconciliation:
          $ref: '#/components/schemas/FuturesOrderReconciliation'
        builderFees:
          $ref: '#/components/schemas/FuturesBuilderFeeReconciliation'
        durableEvidence:
          type: object
          required:
          - recorded
          properties:
            recorded:
              type: boolean
            record:
              type: object
              nullable: true
              additionalProperties: true
    BoundedFuturesReconciliation:
      type: object
      required:
      - actionId
      - result
      properties:
        actionId:
          type: string
          format: uuid
        result:
          oneOf:
          - $ref: '#/components/schemas/BoundedFuturesReservation'
          - type: object
            additionalProperties: false
            required:
            - bounded
            properties:
              bounded:
                type: boolean
                enum:
                - false
    FuturesReconciledFill:
      type: object
      required:
      - fillId
      - fillHash
      - side
      - size
      - price
      - notional
      - fee
      - feeToken
      - sizeRaw
      - priceRaw
      - feeRaw
      - builderFeeRaw
      - filledAt
      properties:
        fillId:
          type: integer
        fillHash:
          type: string
        side:
          type: string
          enum:
          - buy
          - sell
        size:
          type: number
        price:
          type: number
        notional:
          type: number
        fee:
          type: number
        feeToken:
          type: string
        sizeRaw:
          type: string
          nullable: true
        priceRaw:
          type: string
          nullable: true
        feeRaw:
          type: string
          nullable: true
        builderFeeRaw:
          type: string
          nullable: true
        filledAt:
          type: integer
          description: Unix milliseconds
    ReconcileOrderDurableEvidence:
      type: object
      required:
      - recorded
      - note
      properties:
        recorded:
          type: boolean
          enum:
          - true
        record:
          type: object
          nullable: true
          additionalProperties: true
        note:
          type: string
    ReconcileOrderResponse:
      type: object
      required:
      - ok
      - reconciliation
      - builderFees
      - durableEvidence
      - evidenceSources
      - timestamp
      properties:
        ok:
          type: boolean
          enum:
          - true
        reconciliation:
          $ref: '#/components/schemas/FuturesOrderReconciliation'
        boundedReconciliation:
          type: array
          description: Optional; omitted when no durable bounded actions match. An accepted reservation is not final venue cancellation.
          items:
            $ref: '#/components/schemas/BoundedFuturesReconciliation'
        builderFees:
          $ref: '#/components/schemas/FuturesBuilderFeeReconciliation'
        durableEvidence:
          $ref: '#/components/schemas/ReconcileOrderDurableEvidence'
        evidenceSources:
          type: object
          required:
          - orderStatus
          - fills
          - methodology
          - balanceDeltasUsed
          properties:
            orderStatus:
              type: string
              enum:
              - hyperliquid_order_status
            fills:
              type: string
              enum:
              - hyperliquid_user_fills
            methodology:
              type: string
              enum:
              - direct_venue_evidence_only
            balanceDeltasUsed:
              type: boolean
              enum:
              - false
        timestamp:
          type: integer
          description: Unix milliseconds
    BoundedFuturesReservation:
      type: object
      description: Durable reservation row returned by FuturesPolicyService; not proof of execution, final cancellation or revenue
      required:
      - id
      - grant_id
      - action_id
      - network
      - account_address
      - coin
      - intent_hash
      - signed_action_hash
      - venue_order_id
      - status
      - dispatched_at
      properties:
        id:
          type: string
          format: uuid
        grant_id:
          type: string
          format: uuid
        action_id:
          type: string
          format: uuid
        network:
          type: string
          enum:
          - mainnet
          - testnet
        account_address:
          type: string
        coin:
          type: string
        intent_hash:
          type: string
        signed_action_hash:
          type: string
        venue_order_id:
          type: integer
          nullable: true
        status:
          type: string
          enum:
          - submitted
          - accepted
          - held_ambiguous
          - reconciled
          - released
        dispatched_at:
          type: string
          format: date-time
        scope:
          type: string
          enum:
          - futures.open
          - futures.reduce
          - futures.close
          - futures.cancel
          - futures.protective_order
        venue_nonce:
          type: integer
        requested_notional_usd:
          oneOf:
          - type: number
          - type: string
        new_risk_usd:
          oneOf:
          - type: number
          - type: string
        risk_reducing:
          type: boolean
        expires_at:
          type: string
          format: date-time
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        evidence:
          type: object
          nullable: true
          additionalProperties: true
        cancel_target_evidence:
          type: object
          additionalProperties: true
    FuturesOrderReconciliationEvidence:
      type: object
      required:
      - accountOwner
      - signerAddress
      - perpDex
      - coin
      - orderId
      - intentHash
      - clientOrderId
      - side
      - orderSize
      - orderPrice
      - venueStatus
      - venueReportedFilledSize
      - reconciliationState
      - filledSize
      - filledNotional
      - avgFillPrice
      - venueFee
      - venueFeeToken
      - fillCount
      - terminal
      - reason
      - fills
      properties:
        accountOwner:
          type: string
        signerAddress:
          type: string
        perpDex:
          type: string
        coin:
          type: string
        orderId:
          type: integer
        intentHash:
          type: string
          nullable: true
        clientOrderId:
          type: string
          nullable: true
        side:
          type: string
          nullable: true
          enum:
          - buy
          - sell
          - null
        orderSize:
          type: number
          nullable: true
        orderPrice:
          type: number
          nullable: true
        venueStatus:
          type: string
          nullable: true
        venueReportedFilledSize:
          type: number
          nullable: true
        reconciliationState:
          $ref: '#/components/schemas/FuturesReconciliationState'
        filledSize:
          type: number
        filledNotional:
          type: number
        avgFillPrice:
          type: number
          nullable: true
        venueFee:
          type: number
        venueFeeToken:
          type: string
          nullable: true
        fillCount:
          type: integer
        terminal:
          type: boolean
        reason:
          type: string
          nullable: true
        fills:
          type: array
          items:
            $ref: '#/components/schemas/FuturesReconciledFill'
  parameters:
    X-FarmDash-Skill-Version:
      name: X-FarmDash-Skill-Version
      in: header
      required: false
      description: Optional event-touch analytics skill version, alongside X-ClawHub-Skill; never security evidence.
      schema:
        type: string
        maxLength: 64
        pattern: ^[A-Za-z0-9._+-]{1,64}$
    X-FarmDash-Client:
      name: X-FarmDash-Client
      in: header
      required: false
      description: Optional untrusted analytics client hint; never security evidence.
      schema:
        type: string
        enum:
        - mcp
        - ts_agent_kit
        - python_agent_kit
        - public_client
        - webapp
    X-FarmDash-Installation-ID:
      name: X-FarmDash-Installation-ID
      in: header
      required: false
      description: Optional analytics-only locally generated UUIDv4 installation hint. Stored only as a domain-separated salted hash. Not authentication, principal proof, quota, payment, wallet ownership, delegation or transaction authority. Omission changes no functionality.
      schema:
        type: string
        format: uuid
        pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89aAbB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
    X-FarmDash-Client-Version:
      name: X-FarmDash-Client-Version
      in: header
      required: false
      description: Optional analytics client version; never security evidence.
      schema:
        type: string
        maxLength: 64
        pattern: ^[A-Za-z0-9._+-]{1,64}$
  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.
x-farmdash-capability-truth:
  spot.USER_SIGNED:
    status: operational
    prerequisite: Healthy execution governor, quote provider, RPC and durable receipt store; customer signs and submits.
  spot.BOUNDED_AUTONOMOUS:
    status: operational
    prerequisite: Owner-signed EVM grant, exact simulation/calldata binding, durable budget and customer-local signer authority.
  futures.USER_SIGNED:
    status: operational
    prerequisite: Venue account ownership, local action signature, builder approval, risk/research gates and durable order control.
  futures.BOUNDED_AUTONOMOUS:
    status: operational
    prerequisite: Authenticated owner-bound futures policy, authorized local API-wallet signature, durable nonce/budget/order controls.
  solana.USER_SIGNED:
    status: operational
    prerequisite: Native Jupiter/RPC route, durable preparation and finality store; customer signs and broadcasts.
  solana.BOUNDED_AUTONOMOUS:
    status: operational
    prerequisite: Native owner-signed Solana policy; local key must be an actual required transaction signer. Policy creates no on-chain authority.
  ERC4337_SERVER_SUBMISSION:
    status: preparation_only
    prerequisite: 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
    prerequisite: Trusted executable adapter, exact signed-transaction binding and canonical receipt verifier.
  MEE:
    status: preparation_only
    prerequisite: Production coordinator and authoritative source/destination receipt verifier.
  ACP:
    status: deployment_prerequisite
    prerequisite: AcpReadinessService paidWorkflowReady, evaluator/client identities, migrations, funding/finality workers and Base RPC.
x-provenance:
  method: harvested
  publisher: FarmDash Agent Hub
  source: https://www.farmdash.one/agents/openapi.yaml
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)