FarmDash Agent Hub Proof API

The Proof API from FarmDash Agent Hub — 3 operation(s) for proof.

Operations 4

POST /v1/agent/receipts/share Mint a public proof-of-outcome share link for a receipt #
DELETE /v1/agent/receipts/share Revoke a receipt share link #
GET /r/{token} Resolve a public receipt share (agent JSON or human page) #
GET /.well-known/farmdash-receipt-key.json Public Ed25519 key for verifying shared-receipt signatures #

Documentation

Specifications

Schemas & Data

Other Resources

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-proof-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-proof-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Farmdash Proof API
  version: 2.0.0
  contact:
    name: FarmDash Engineering
    url: https://www.farmdash.one/agents
  license:
    name: MIT
  description: 'Operations tagged Proof across 2 of this provider''s published API definitions: farmdash-agent-api-openapi.yaml, farmdash-openapi.yaml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://www.farmdash.one/api
  description: Production
tags:
- name: Proof
paths:
  /v1/agent/receipts/share:
    post:
      operationId: createReceiptShare
      summary: Mint a public proof-of-outcome share link for a receipt
      description: 'Creates an unguessable, revocable bearer token (fdrsh_…) over a

        TERMINAL intent receipt (CONFIRMED, FAILED, or REJECTED — in-flight

        receipts are rejected with 409). Only the SHA-256 of the token is

        stored; the token is returned once and cannot be recovered. The served

        projection is sanitized (credential-shaped fields stripped recursively

        and every stripped path disclosed), digest-bound (SHA-256 full + public

        digests), outcome classified, and Ed25519-signed. Requires session

        ownership of the receipt''s parent intent.'
      tags:
      - Proof
      security:
      - bearerAuth: []
      - {}
      servers:
      - url: https://www.farmdash.one
        description: Production (public proof paths live at the site root)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - receipt_id
              - sessionId
              - agentAddress
              - sessionToken
              properties:
                receipt_id:
                  type: string
                  description: Receipt id starting with fdrcpt_
                sessionId:
                  type: string
                agentAddress:
                  type: string
                sessionToken:
                  type: string
      parameters:
      - $ref: '#/components/parameters/X-ClawHub-Skill'
      responses:
        '201':
          description: Share created — token shown once, never recoverable
          content:
            application/json:
              schema:
                type: object
                required:
                - ok
                - token
                - url
                - receipt_id
                - warning
                properties:
                  ok:
                    type: boolean
                    const: true
                  token:
                    type: string
                    description: fdrsh_-prefixed bearer token; store it now
                  url:
                    type: string
                    format: uri
                  receipt_id:
                    type: string
                  created_at:
                    type: string
                    format: date-time
                  warning:
                    type: string
        '400':
          $ref: '#/components/responses/BadRequest'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '404':
          description: Receipt not found
        '409':
          description: Receipt not terminal (still in flight)
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
    delete:
      operationId: revokeReceiptShare
      summary: Revoke a receipt share link
      description: 'Revokes the share (public URL returns 410 afterwards). Only the

        creating agent (or internal service key) can revoke. Pass the token

        as ?token= or in the body, AND the session credentials used at

        creation (sessionId, agentAddress, and sessionToken via body or the

        X-FarmDash-Session-Token header). Revocation propagates immediately —

        share responses are served with Cache-Control: no-store.'
      tags:
      - Proof
      security:
      - bearerAuth: []
      - {}
      servers:
      - url: https://www.farmdash.one
        description: Production (public proof paths live at the site root)
      parameters:
      - $ref: '#/components/parameters/X-ClawHub-Skill'
      - name: token
        in: query
        required: true
        schema:
          type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                token:
                  type: string
                sessionId:
                  type: string
                agentAddress:
                  type: string
                sessionToken:
                  type: string
      responses:
        '200':
          description: Share revoked
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    const: true
                  revoked:
                    type: boolean
                    const: true
        '400':
          $ref: '#/components/responses/BadRequest'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '403':
          description: Unknown share, already revoked, or not the creator
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
    servers:
    - url: https://www.farmdash.one/api
      description: Production
  /r/{token}:
    get:
      operationId: resolveReceiptShare
      summary: Resolve a public receipt share (agent JSON or human page)
      description: 'Public, keyless, TOLL-FREE proof-of-outcome endpoint. Returns the sanitized

        receipt, outcome classification with retry guidance, dual integrity

        digests, and the Ed25519 signature block containing the detached

        signature bytes and the exact signed envelope — verify independently

        against /.well-known/farmdash-receipt-key.json. Responds JSON by

        default and a retro no-JS HTML card when Accept includes text/html.

        Revoked shares return 410. Responses are no-store (revocation is

        immediate); a `valid:true` signature flag is a server self-check —

        third parties MUST verify the signature themselves.

        Verification reads are never payment-walled but share the caller''s

        daily booth budget and 429 past it, so spam burns its own bucket.

        Share tokens are unguessable 256-bit bearer secrets with no listing

        endpoint, so enumeration is infeasible. Minting (POST

        /api/v1/agent/receipts/share) remains session- and toll-gated.'
      tags:
      - Proof
      security:
      - {}
      servers:
      - url: https://www.farmdash.one
        description: Production (public proof paths live at the site root)
      parameters:
      - $ref: '#/components/parameters/X-ClawHub-Skill'
      - name: token
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Shared receipt payload (JSON) or card (HTML)
        '404':
          description: Unknown share token
        '405':
          description: Method not allowed (resolve is GET-only)
        '410':
          description: Share revoked by its creator
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
    servers:
    - url: https://www.farmdash.one/api
      description: Production
  /.well-known/farmdash-receipt-key.json:
    get:
      operationId: getReceiptProofKey
      summary: Public Ed25519 key for verifying shared-receipt signatures
      description: 'Publishes the JWK verification key ring (current key plus any

        retained/retired keys by kid) with the exact third-party verification

        recipe (canonicalize the share JSON receipt object, compare

        public_digest, verify the envelope signature with the key whose kid

        matches integrity.signature.kid). Long-cacheable.

        Key type is validated at load time (Ed25519 only).'
      tags:
      - Proof
      security:
      - {}
      servers:
      - url: https://www.farmdash.one
        description: Production (public proof paths live at the site root)
      parameters:
      - $ref: '#/components/parameters/X-ClawHub-Skill'
      responses:
        '200':
          description: Proof key document
    servers:
    - url: https://www.farmdash.one/api
      description: Production
components:
  headers:
    X-RateLimit-Reset:
      description: UTC epoch seconds when the rate limit window resets
      schema:
        type: string
    X-RateLimit-Limit:
      description: Maximum requests allowed in the current window
      schema:
        type: string
    X-RateLimit-Remaining:
      description: Remaining requests in the current window
      schema:
        type: string
  schemas:
    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
    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
  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.'
  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'
    RateLimitExceeded:
      description: Rate limit exceeded
      headers:
        Retry-After:
          schema:
            type: integer
          description: Seconds until rate limit resets
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    BadRequest:
      description: Invalid parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Pioneer or Syndicate API key
x-refined-from:
- farmdash-agent-api-openapi.yaml
- farmdash-openapi.yaml
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.