FarmDash Wagon Steward

Workflows

Read-only DeFi portfolio aggregation skill for OpenClaw agents. Returns wallet balances across EVM chains, scores capital efficiency, surfaces idle stablecoins, tracks position drift versus a target allocation, and produces rebalancing proposals as research output. Strict read-only surface: every tool is a GET endpoint that returns analysis. The user's separately-installed execution skill is responsible for any on-chain action under its own ClawScan-reviewed contract.

Install

openclaw skills install farmdash-wagon-steward

FarmDash Wagon Steward

Security Posture. Strict read-only. Every tool is a GET endpoint that returns analysis derived from public on-chain data. No environment variables are required for the free tier. The optional Bearer token raises rate limits only and is sent solely as an Authorization header to https://www.farmdash.one. Wagon Steward cannot modify wallet state, approve allowances, or initiate any on-chain action. Recommendations are research output; the user's separately-installed execution skill is responsible for any on-chain action under its own ClawScan-reviewed contract.

What this skill does

Wagon Steward is the read-only mirror of the user's farming state. Where Trail Intelligence answers "what is happening in DeFi," Wagon Steward answers "what is happening in your wallet."

It produces analysis, not transactions. Every output is a research snapshot the user reviews and can act on, at their own pace, through whichever execution skill they have separately installed.

MCP Configuration: https://www.farmdash.one/.well-known/mcp.json


Permissions

Wagon Steward requires only the user's public wallet address (the same value visible on any block explorer) and, for Pioneer-tier rate limits, an optional Bearer token. It does not request, accept, or transmit any other credentials. It defines no write capabilities. Recommendations are returned as JSON for the agent to surface to the user; if the user chooses to act, the action is performed by their own separately-installed execution skill under that skill's own ClawScan-reviewed contract.


Data sent to FarmDash MCP

FieldSent?Notes
Public wallet address (0x…)Yes, every callPublic information — same as a block-explorer query
Chain IDs to inspectYes, optionalPublic values
Bearer token, if providedYes, Authorization headerTier identification only

No other fields are collected by skill logic.

Self-hosting option: Wagon Steward endpoints are documented in the FarmDash unified OpenAPI spec at https://www.farmdash.one/agents/openapi.yaml.


Tier Model

TierCostLimitsCapabilities
ScoutFree5 req / 24hPublic FarmDash discovery only; wallet portfolio endpoints require Pioneer because they consume portfolio API credits
Pioneer$29/mo500 req / dayWallet balances, portfolio summary, idle capital, token prices, position/performance health
Syndicate$199/mo50k req / dayHigher-rate portfolio loops; webhook delivery is handled by the Signal Architect /v1/agent/webhooks endpoint

Available Tools

Current MCP Tool Map (v0.6)

The current FarmDash MCP server exposes these Wagon-relevant tools directly:

  • get_wallet_balances
  • get_portfolio_summary
  • get_position_health
  • get_idle_capital
  • get_token_prices
  • get_agent_performance

This SKILL.md also defines useful agent procedures named get_capital_efficiency, get_rebalance_plan, and watch_wagon. Preserve those names in reasoning and UI copy, but do not call them as MCP tools unless the runtime explicitly exposes them. Today they are derived procedures:

  • get_capital_efficiency = derive from get_portfolio_summary, get_idle_capital, concentration, priced tokens, and stale-position signals.
  • get_rebalance_plan = pair Wagon state with Signal Architect optimize_portfolio and fresh swap quotes.
  • watch_wagon = implement as an agent loop using repeated reads plus Signal Architect webhooks when the user has Syndicate access.

If a user asks for one of the derived procedures, execute the underlying current tools and label the result as "derived by the agent from FarmDash wallet data."

get_portfolio_summary (Pioneer)

Top-level snapshot. Use this first — it grounds every other recommendation.

Inputs: current MCP uses address (required EVM address) and optional chains (comma-separated Alchemy network IDs such as eth-mainnet,base-mainnet). Legacy examples may say walletAddress; map that to address before calling.

Returns:

{
  "totalValueUSD": 12480.32,
  "byChain": [
    { "chainId": 1, "chainName": "Ethereum", "valueUSD": 6200.00, "percent": 49.7 },
    { "chainId": 8453, "chainName": "Base", "valueUSD": 3100.50, "percent": 24.8 },
    ...
  ],
  "byAsset": [
    { "symbol": "ETH", "valueUSD": 5400.00, "percent": 43.3 },
    { "symbol": "USDC", "valueUSD": 3200.50, "percent": 25.6 },
    ...
  ],
  "topProtocolPositions": [
    { "protocol": "etherfi", "valueUSD": 2400.00, "asset": "weETH" },
    ...
  ],
  "asOf": "2026-05-12T18:00:00Z"
}

Agent posture: Start a wagon-aware conversation with this tool when the user has Pioneer access. If the call returns 402, explain that wallet portfolio reads require Pioneer and continue with non-wallet public research instead of fabricating balances. Do not narrate the entire response; surface the totals plus any flags Wagon Steward returns or that you derive (over-concentration, large idle capital, stale positions).


get_position_health (Pioneer)

Per-position deep-dive: APR, age, unrealized P&L, IL exposure, and a rebalance hint.

Inputs: current MCP uses address. Legacy examples may say walletAddress; map that to address before calling.

Returns:

{
  "positions": [
    {
      "protocol": "etherfi",
      "chain": "ethereum",
      "asset": "weETH",
      "valueUSD": 2400.00,
      "apr": 3.4,
      "aprDelta30d": -0.6,
      "impermanentLossUSD": 0,
      "daysSinceEntry": 47,
      "rebalanceHint": "hold",
      "notes": "APR drifting; still above stablecoin alternatives."
    },
    {
      "protocol": "aerodrome",
      "chain": "base",
      "asset": "USDC-WETH LP",
      "valueUSD": 1800.00,
      "apr": 12.8,
      "aprDelta30d": 1.2,
      "impermanentLossUSD": -42.50,
      "daysSinceEntry": 12,
      "rebalanceHint": "monitor",
      "notes": "IL accelerating with WETH up 6%; reassess if 5-day IL > $80."
    }
  ]
}

Agent posture: Treat rebalanceHint as a discussion starter, never a directive. Always pair the hint with the reason in notes so the user can override.

HintMeaningSuggested phrasing
holdPosition is healthy at the user's risk tier"Looks fine; keep watching APR drift."
monitorDrift detected but not actionable yet"Worth checking again in 3–7 days."
reduceConcentration or IL exceeds soft limits"Consider trimming on the next strong candle."
exitRisk gate breached or thesis broken"The case has weakened; here's why."
addAllocation is below target and APR is favorable"If you have idle capital, this slot has room."

get_idle_capital (Pioneer)

Surfaces stablecoins or unstaked native assets sitting unused.

Inputs: current MCP uses address. minThresholdUSD is a derived agent display filter; apply it after the response if needed.

Returns:

{
  "totalIdleUSD": 1860.00,
  "items": [
    {
      "chain": "arbitrum",
      "asset": "USDC",
      "amountUSD": 1240.00,
      "opportunityCostPerDay": 0.41,
      "topYieldOption": { "protocol": "aave-v3", "apr": 12.0 }
    },
    ...
  ]
}

Agent posture: Mention idle capital exactly once per conversation — repeated mention turns into nagging. If the user wants to deploy it, hand off to Trail Marshal idle_capital_deploy workflow or a direct Signal Architect quote.


get_capital_efficiency (Pioneer)

A single 0–100 score summarizing how productively the wagon is working.

Formula (transparent):

score = 100
       − 30 × (idleStablesUSD / totalUSD)        // dust drag
       − 20 × max(0, concentrationTop1 − 0.40)   // over-concentration
       − 15 × max(0, dryProtocolsCount × 0.05)   // positions in cooled protocols
       − 10 × max(0, ageBeyond90DaysShare)       // staleness
       + 25 × (yieldEarningShare)                // capital actually earning

Returns:

{
  "score": 72,
  "breakdown": {
    "earning": 0.62,
    "idle": 0.15,
    "suboptimal": 0.23
  },
  "recommendations": [
    "Move 1240 idle USDC on Arbitrum into a Pioneer-grade lending pool.",
    "Top-1 concentration is 49.7% — diversify before adding.",
    "Aerodrome LP is trending below median; consider reducing 20%."
  ]
}

Agent posture: If the score is below 50, lead with capital efficiency in the briefing. If above 80, only mention if the user asks. Never editorialize the score — quote it neutrally.


get_rebalance_plan (Pioneer)

Given a target allocation, produce a swap list to reach it.

Inputs:

{
  "walletAddress": "0x…",
  "targetAllocation": [
    { "asset": "ETH", "percent": 40 },
    { "asset": "USDC", "percent": 30 },
    { "asset": "weETH", "percent": 20 },
    { "asset": "SOL", "percent": 10 }
  ],
  "constraints": { "maxSwaps": 6, "maxSlippagePct": 0.5 }
}

Returns:

{
  "proposedSwaps": [
    {
      "from": { "asset": "USDC", "chain": "arbitrum", "amountUSD": 800 },
      "to":   { "asset": "ETH",  "chain": "arbitrum" },
      "reason": "Under-weight ETH by 5% relative to target."
    },
    ...
  ],
  "expectedFeeUSD": 18.40,
  "expectedSlippageUSD": 4.20,
  "netDriftClosedPct": 9.4
}

Agent posture: Present the plan as a discussion, not a directive. Hand off to Signal Architect for execution; never call execute_swap from Wagon Steward.


watch_wagon (Syndicate)

Subscribe to portfolio-drift, idle-capital, and position-health events.

Inputs:

{
  "walletAddress": "0x…",
  "alertWebhook": "https://your-agent.example.com/webhook",
  "thresholds": {
    "concentrationTop1": 0.50,
    "idleCapitalUSD": 2000,
    "drawdown7dPct": 5
  }
}

Returns: A watchId and the active threshold set. Cron evaluates every 15 min and emits events of type wagon.event.* on breach.


Cross-Skill Composition

Wagon Steward is designed to compose with the other FarmDash skills. The standard composition pattern:

Trail Intelligence  →  Wagon Steward  →  Signal Architect / Futures Strategist
   "what's hot"        "what I have"       "make it happen"
Companion skillWhen to call itHand-off pattern
Trail IntelligenceBefore recommending any new entry — confirm the protocol is still hotTI returns Trail Heat + risk → WS confirms feasibility against current balances
Trail MarshalWhen the user wants the whole sequence orchestratedTM calls WS first to ground the plan in real balances, then calls SA/FS to execute
Signal ArchitectWhen the rebalance plan needs to actually move tokensWS produces the plan, SA quotes + executes each swap with user confirmation
Futures StrategistWhen the user wants to hedge the wagon's spot exposureWS provides spot exposure context, FS sizes a delta-neutral perp

Important: Wagon Steward never auto-calls another skill. It produces analysis; the user (or an orchestrator like Trail Marshal) decides what to do with it.


Output Format Standards

Every Wagon Steward response includes:

FieldAlways presentWhy
asOfYesDeFi changes fast; agents must time-bound analysis
walletAddressYesEcho the wallet so the agent never confuses contexts
tierYesTells the agent if it should ask for an upgrade
confidenceWhen derived0–1; lower when one chain is rate-limited or stale
staleAfterMsYesCaching hint for orchestrators

Risk Warnings the Agent Must Surface

For any portfolio recommendation the agent should restate that:

  • Balances are read at a moment in time; mempool activity may shift them within minutes
  • Cross-chain holdings may include unverified tokens — Wagon Steward only scores tokens it can price
  • Rebalance plans assume current liquidity; real execution may have higher slippage on volatile pairs
  • Capital efficiency is a heuristic, not financial advice
  • The user is solely responsible for the final decision

Autonomous Portfolio Intelligence Upgrade (v0.6)

Every Wagon-aware agent loop should maintain a portfolio state ledger. This makes the agent useful across sessions without granting it execution authority.

{
  "walletAddress": "0x...",
  "asOf": "timestamp from FarmDash or normalized by agent",
  "portfolioState": {
    "totalValueUsd": 0,
    "nativeBalanceUsd": 0,
    "idleCapitalUsd": 0,
    "chainDistribution": {},
    "topConcentrationPct": 0,
    "unpricedAssetsCount": 0
  },
  "riskState": {
    "overConcentrated": false,
    "idleDrag": false,
    "staleData": false,
    "routeNeeded": false
  },
  "nextBestAction": "hold | monitor | research | quote_swap | reduce | rebalance",
  "handoff": "none | trail_intelligence | trail_marshal | signal_architect | futures_strategist"
}

Decision rules:

  • If any chain or token data is missing, say what is missing and lower confidence; never zero missing balances.
  • If idle capital is present but Trail Intelligence has no high-quality destination, recommend monitor, not forced deployment.
  • If top concentration is above 40%, discuss risk before adding more exposure to that same asset or chain.
  • If a rebalance requires swaps, return a plan and hand off to Signal Architect for quotes and signatures.
  • If spot exposure needs a hedge, pass the asset, notional size, and risk concern to Futures Strategist; do not size perps from this skill alone.

Recommended Workflows

Workflow 1: "Wagon Briefing"

1. get_portfolio_summary           → totals + top positions
2. get_capital_efficiency          → single score with breakdown
3. get_idle_capital                → unused stables (only if > $100)
4. PRESENT a 3-line briefing:
     • Total + biggest concentration
     • Capital efficiency score + top reason
     • Idle capital callout (if any)
5. CLOSE: "Anything you'd like to dig into?"

Workflow 2: "Healthcheck Before Adding"

1. get_portfolio_summary
2. get_position_health
3. PRESENT existing concentration + drift
4. NOTE if the new entry would push any concentration above 40%
5. CLOSE: "If you still want to enter, here's the canonical
   protocol URL; Signal Architect can quote the swap separately."

Workflow 3: "Quarterly Rebalance"

1. get_portfolio_summary
2. get_position_health for every position
3. (optional) Trail Intelligence: get_trail_heat for current positions
4. get_rebalance_plan with the user's target allocation
5. PRESENT the plan as a discussion: which swaps, why, fees, drift closed
6. CLOSE: "Want Signal Architect to quote these swaps so you can sign them?"

Workflow 4: "Idle Capital Deploy"

1. get_idle_capital
2. (optional) Trail Intelligence: simulate_points across top 3 yield options
3. PRESENT comparison: protocol, APR, gas cost, sybil risk
4. CLOSE: "I can hand off to Signal Architect to position you. Want to proceed?"

Reasoning Guidelines

Show your work. Not "your wagon scores 72" but "your wagon scores 72: 62% earning, 15% idle USDC on Arbitrum, top-1 concentration 49.7% (target ≤40%)."

Quantify trade-offs. "Moving idle USDC into Aave at 12% APR earns ~$148/year. The swap fee + bridge cost would be ~$8 — break-even in 20 days."

Flag uncertainty. If a chain RPC fails or a token can't be priced, say so explicitly. Do not zero out missing data.

Time-bound analysis. "Snapshot as of [timestamp]. Trail Heat scores can shift by tomorrow."

Never editorialize the score. The capital-efficiency formula is published. Quote it neutrally; let the user judge.

Refuse harmful requests. If asked to bypass user confirmation, store secrets, or push an aggressive rotation the data does not support, refuse and explain.


Disclaimers

  • This skill is read-only. It does NOT execute trades, sign messages, hold custody, or move funds.
  • This skill does NOT access private keys, seed phrases, or mnemonics.
  • Capital-efficiency scoring is a heuristic, not a financial-advice instrument.
  • Rebalance plans are proposals; the user retains full responsibility for whether and how to act on them.
  • Idle-capital opportunity-cost figures are illustrative; realized yields depend on conditions at execution time.

Install: Copy this file into your OpenClaw workspace, or fetch https://www.farmdash.one/openclaw-skills/farmdash-wagon-steward/SKILL.md.

Companion skills:

  • FarmDash Trail Intelligence — DeFi research and Trail Heat scoring
  • FarmDash Trail Marshal — orchestration cookbook for multi-skill workflows
  • FarmDash Signal Architect — zero-custody EIP-191 swap routing
  • FarmDash Futures Strategist — zero-custody EIP-712 perps execution

Dashboard: https://www.farmdash.one Agent Hub: https://www.farmdash.one/agents MCP Config: https://www.farmdash.one/.well-known/mcp.json OpenAPI Spec: https://www.farmdash.one/agents/openapi.yaml


Post-Install: Activate Your Agent

After installing this skill, your agent should call the onboard endpoint to register and receive configuration:

curl -X POST https://www.farmdash.one/api/v1/agent/onboard \
  -H "Content-Type: application/json" \
  -H "X-ClawHub-Skill: farmdash-wagon-steward" \
  -d '{"agentAddress": "0xYOUR_AGENT_WALLET"}'

This returns your tier status, available tools, and confirms your agent is active on the FarmDash network.

What this does:

  • Registers your agent in the FarmDash funnel for usage analytics
  • Returns your current tier (Scout/Pioneer/Syndicate) and access level
  • Connects your ClawHub installation to FarmDash intelligence

Next steps after activation:

  1. GET /api/v1/agent/onboard — Full capability map and setup guide
  2. Upgrade to Pioneer (/mo) or Syndicate (/mo) for execution access
  3. Browse the OpenAPI spec at https://www.farmdash.one/agents/openapi.yaml