{"id":"f19ea391-4497-4423-974f-2304ee47b5d9","entityType":"agent","slug":"clawhub-parmasanandgarlic-farmdash-signal-architect","name":"FarmDash Signal Architect","canonicalUrl":"https://www.xpersona.co/agent/clawhub-parmasanandgarlic-farmdash-signal-architect","canonicalPath":"/agent/clawhub-parmasanandgarlic-farmdash-signal-architect","generatedAt":"2026-10-10T08:15:15.054Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T12:01:32.574Z","emptyReason":null},"description":"OpenClaw DeFi execution with FarmDash's 92-tool MCP server: LI.FI and Relay swaps, simulation, zero-custody settlement verification. Skill: FarmDash Signal Architect Owner: parmasanandgarlic Summary: OpenClaw DeFi execution with FarmDash's 92-tool MCP server: LI.FI and Relay swaps, simulation, zero-custody settlement verification. Tags: 0x:1.2.19, AI agent:1.2.24, Arbitrum:1.2.24, Arbitrum swap:1.2.24, Base:1.2.24, Base swap:1.2.24, ClawHub:1.2.24, DEX aggregator:1.2.24, DEX routing:1.2.24, DEX swap:1.2.24, DeFi:1.2.24, DeFi API:1.2.24, DeFi agent","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 2.7K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s177a1xxprmvcbyygraxwvbf5s83qzs6:farmdash-signal-architect","sourceUrl":"https://clawhub.ai/parmasanandgarlic/farmdash-signal-architect","homepage":"https://clawhub.ai/parmasanandgarlic/skills/farmdash-signal-architect","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/parmasanandgarlic/farmdash-signal-architect","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/parmasanandgarlic/skills/farmdash-signal-architect","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":51,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"OpenClaw DeFi execution with FarmDash's 92-tool MCP server: LI.FI and Relay swaps, simulation, zero-custody settlement verification. Skill: FarmDash Signal Arch"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T12:01:32.574Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T12:01:32.574Z","emptyReason":null},"stars":null,"forks":null,"downloads":2711,"packageName":null,"latestVersion":"1.2.25","tractionLabel":"2.7K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T12:01:32.573Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T12:01:32.574Z","lastCrawledAt":"2026-10-09T12:01:32.573Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T12:01:32.574Z","lastVerifiedAt":null,"highlights":[{"version":"1.2.25","createdAt":"2026-10-05T00:51:31.136Z","changelog":"- Removed the file: skill-card.md. - Updated documentation to clarify the number of tools: main MCP server has 92 tools, Signal Architect focuses on 22. - Improved descriptions of execution modes, especially around bounded delegation and local user signing. - Expanded on supported swap aggregators: explicitly mentions LI.FI and Relay. - Enhanced explanation of zero-custody architecture and workflow details. - No changes to underlying logic or external APIs.","fileCount":5,"zipByteSize":44212},{"version":"1.2.24","createdAt":"2026-09-26T05:31:41.743Z","changelog":"No changes detected in this version. - Version 1.2.24 contains no file changes compared to the previous release. - No new features, fixes, or documentation updates in this update.","fileCount":5,"zipByteSize":40950},{"version":"1.2.23","createdAt":"2026-09-26T05:28:23.326Z","changelog":"- Removed the file skill-card.md. - Updated version to 4.2.1 in the manifest. - In the usage guide table, replaced get_swap_history with get_agent_activity and clarified tool use flow for agent performance review. - Minor text and formatting adjustments for accuracy and clarity in tool descriptions and agent operating modes.","fileCount":5,"zipByteSize":40788},{"version":"1.2.22","createdAt":"2026-09-07T18:06:39.603Z","changelog":"FarmDash Signal Architect v1.2.22 - Removed the sample file skill-card.md from the project. - SKILL.md description and tags updated to clarify DeFi strategy use-case and tool coverage. - Tags now include more precise DEX and chain references (e.g., \"uniswap\", \"jupiter\", \"solana\"). - Version bumped from 4.1.1 to 4.1.2 in SKILL.md. - No functional changes to logic or features—documentation and metadata only.","fileCount":5,"zipByteSize":35708},{"version":"1.2.21","createdAt":"2026-09-06T11:03:42.242Z","changelog":"FarmDash Signal Architect 1.2.21 - Removed the file \"skill-card.md\" for a cleaner project structure. - No changes to core logic or available DeFi tools. - User and API documentation remain unchanged in SKILL.md. - All security guidance and execution protocols are still enforced.","fileCount":5,"zipByteSize":34467},{"version":"1.2.20","createdAt":"2026-08-04T05:14:17.002Z","changelog":"- Increased MCP tool coverage from 60 to 84, including ACP commerce and agent portfolio features. - Expanded tool tags and updated description for improved discoverability. - Added new use-case mode \"activity_review\"; clarified not to infer execution quality from activity logs. - Improved clarity in outcome tracking: only confirmed settlements/authoritative evidence count as final outcomes. - Updated tier limits: Pioneer tier now allows 1,500 requests/day (previously 500). - Removed redundant skill documentation file (skill-card.md).","fileCount":5,"zipByteSize":33516},{"version":"1.2.19","createdAt":"2026-06-28T01:24:46.479Z","changelog":"- Removed the file: skill-card.md - No changes made to skill functionality or documentation outside of this removal.","fileCount":5,"zipByteSize":29692},{"version":"1.2.18","createdAt":"2026-06-26T00:43:20.970Z","changelog":"- Removed the file skill-card.md from the project. - No changes were made to the existing skill logic, environment variables, or documentation content.","fileCount":5,"zipByteSize":29618}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s177a1xxprmvcbyygraxwvbf5s83qzs6:farmdash-signal-architect","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-parmasanandgarlic-farmdash-signal-architect/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-parmasanandgarlic-farmdash-signal-architect/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-parmasanandgarlic-farmdash-signal-architect/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-parmasanandgarlic-farmdash-signal-architect/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-parmasanandgarlic-farmdash-signal-architect/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-parmasanandgarlic-farmdash-signal-architect/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T08:15:15.050Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-parmasanandgarlic-farmdash-signal-architect/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-parmasanandgarlic-farmdash-signal-architect/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-parmasanandgarlic-farmdash-signal-architect/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-parmasanandgarlic-farmdash-signal-architect/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-09T12:01:32.574Z","emptyReason":null},"readme":"Skill: FarmDash Signal Architect\n\nOwner: parmasanandgarlic\n\nSummary: OpenClaw DeFi execution with FarmDash's 92-tool MCP server: LI.FI and Relay swaps, simulation, zero-custody settlement verification.\n\nTags: 0x:1.2.19, AI agent:1.2.24, Arbitrum:1.2.24, Arbitrum swap:1.2.24, Base:1.2.24, Base swap:1.2.24, ClawHub:1.2.24, DEX aggregator:1.2.24, DEX routing:1.2.24, DEX swap:1.2.24, DeFi:1.2.24, DeFi API:1.2.24, DeFi agent:1.2.24, DeFi automation:1.2.24, DeFi bridge:1.2.24, DeFi swap:1.2.24, EVM:1.2.24, EVM swap:1.2.24, Ethereum:1.2.24, Ethereum swap:1.2.24, FarmDash:1.2.24, Jupiter:1.2.24, LI-FI:1.2.24, LI.FI:1.2.24, Linea:1.2.24, MCP:1.2.24, Model Context Protocol:1.2.24, OpenClaw:1.2.24, Optimism:1.2.24, Optimism swap:1.2.24, Polygon:1.2.24, Polygon swap:1.2.24, Relay:1.2.24, Signal Architect:1.2.24, Solana:1.2.24, Web3:1.2.24, Web3 API:1.2.24, Web3 agent:1.2.24, agent:1.2.5, agent API:1.2.24, agent automation:1.2.24, agent-commerce:1.2.22, agent-execution:1.2.13, agent-orchestration:1.2.19, agent-trading:1.2.25, agentic AI:1.2.24, agentic-defi:1.2.13, ai-agent:1.2.21, ai-trading-bot:1.2.19, airdrop:1.2.18, airdrop-farming:1.2.13, airdrop-research:1.2.20, anthropic:1.2.5, arbitrum:1.2.18, asset-allocation:1.2.21, automation:1.2.19, autonomous-agent:1.2.19, autopilot:1.2.13, base:1.2.18, best swap route:1.2.24, blockchain:1.2.24, blockchain automation:1.2.24, blockchain-forensics:1.2.19, bounded-delegation:1.2.25, bridge:1.2.13, bridge API:1.2.24, bridge aggregator:1.2.24, bridge routing:1.2.24, capital-efficiency:1.2.21, claude:1.2.5, clawhub:1.2.19, cross-chain:1.2.24, cross-chain bridge:1.2.24, cross-chain routing:1.2.24, cross-chain swap:1.2.24, cross-chain-routing:1.2.25, cross-chain-swap:1.2.22, cross-chain-swaps:1.2.25, crypto:1.2.24, crypto agent:1.2.24, crypto automation:1.2.24, crypto bridge:1.2.24, crypto quote:1.2.24, crypto swap:1.2.24, crypto-dashboard:1.2.21, crypto-portfolio-tracker:1.2.21, crypto-swap:1.2.24, debank-alternative:1.2.21, decentralized-exchanges:1.2.25, defi:1.2.25, defi autonomous-agent ai-agent swaps airdrop farming and yield:1.2.9, defi-agent:1.2.24, defi-automation:1.2.22, defi-intelligence:1.2.13, defi-mcp-server:1.2.20, defi-portfolio:1.2.21, defi-swaps:1.2.25, dex-aggregation:1.2.25, dynamic-slippage:1.2.16, eip-191:1.2.16, eip-712:1.2.13, ethereum:1.2.13, evm:1.2.25, evm-wallet:1.2.21, execution-policy:1.2.25, execution-quality:1.2.19, farmdas:1.2.20, farmdash:1.2.25, farming-strategy:1.2.13, fee-verification:1.2.25, finance agent:1.2.24, firm-quotes:1.2.25, flashbots:1.2.19, forensics:1.2.19, gas-estimation:1.2.25, guarded-execution:1.2.13, hedge-planning:1.2.13, hedging:1.2.19, hyperevm:1.2.5, hyperliquid:1.2.22, idle-cash-finder:1.2.21, idle-stablecoins:1.2.21, interchain:1.2.24, interoperability:1.2.24, jupiter:1.2.22, latest:1.2.25, latest defi farming airdrop swap routing zero-custody mcp lifi 0x protocol yield farm points tracker:1.1.0, lifi:1.2.25, liquidity routing:1.2.24, local-signing:1.2.25, mcp:1.2.25, mcp-server:1.2.13, mev-blocker:1.2.16, mev-protection:1.2.19, mev-risk-analysis:1.2.22, mev-shield:1.2.16, multi-chain:1.2.24, multichain:1.2.24, multichain-portfolio:1.2.21, no-custody:1.2.5, non-custodial:1.2.13, on-chain:1.2.24, onchain:1.2.24, onchain API:1.2.24, onchain agent:1.2.24, onchain-agent:1.2.22, onchain-portfolio:1.2.21, openclaw:1.2.22, optimism:1.2.13, perpetual-futures:1.2.22, perps:1.2.19, points-farming:1.2.18, polygon:1.2.13, portfolio-analysis:1.2.21, portfolio-management:1.2.22, portfolio-optimization:1.2.13, portfolio-rebalancing:1.2.21, portfolio-simulation:1.2.13, position-tracking:1.2.21, protocol-intelligence:1.2.13, read-only:1.2.21, relay:1.2.25, risk-management:1.2.18, route optimization:1.2.24, settlement-verification:1.2.25, shadow-mode:1.2.19, signal-architect:1.2.5, simulation:1.2.16, slippage-controls:1.2.25, smart order routing:1.2.24, solana:1.2.22, solana-portfolio:1.2.21, swap:1.2.19, swap API:1.2.24, swap aggregator:1.2.24, swap quote:1.2.24, swap routing:1.2.24, swap-router:1.2.5, swap-routing:1.2.25, swaps:1.2.13, sybil-resistance:1.2.18, sybil-risk:1.2.13, token bridge:1.2.24, token swap:1.2.24, token-swaps:1.2.25, trading:1.2.18, trading agent:1.2.24, trail-heat:1.2.18, transaction-simulation:1.2.25, transaction-verification:1.2.25, uniswap:1.2.22, usdc:1.2.13, user-signed-transactions:1.2.25, virtuals-acp:1.2.22, wallet-analytics:1.2.21, wallet-signing:1.2.13, wallet-tracker:1.2.21, web3:1.2.19, x402:1.2.19, yield-farming:1.2.18, zerion-alternative:1.2.21, zero-custody:1.2.25\n\nVersion history:\n\nv1.2.25 | 2026-10-05T00:51:31.136Z | user\n\n- Removed the file: skill-card.md.\n- Updated documentation to clarify the number of tools: main MCP server has 92 tools, Signal Architect focuses on 22.\n- Improved descriptions of execution modes, especially around bounded delegation and local user signing.\n- Expanded on supported swap aggregators: explicitly mentions LI.FI and Relay.\n- Enhanced explanation of zero-custody architecture and workflow details.\n- No changes to underlying logic or external APIs.\n\nv1.2.24 | 2026-09-26T05:31:41.743Z | user\n\nNo changes detected in this version.\n\n- Version 1.2.24 contains no file changes compared to the previous release.\n- No new features, fixes, or documentation updates in this update.\n\nv1.2.23 | 2026-09-26T05:28:23.326Z | user\n\n- Removed the file skill-card.md.\n- Updated version to 4.2.1 in the manifest.\n- In the usage guide table, replaced get_swap_history with get_agent_activity and clarified tool use flow for agent performance review.\n- Minor text and formatting adjustments for accuracy and clarity in tool descriptions and agent operating modes.\n\nv1.2.22 | 2026-09-07T18:06:39.603Z | user\n\nFarmDash Signal Architect v1.2.22\n\n- Removed the sample file skill-card.md from the project.\n- SKILL.md description and tags updated to clarify DeFi strategy use-case and tool coverage.\n- Tags now include more precise DEX and chain references (e.g., \"uniswap\", \"jupiter\", \"solana\").\n- Version bumped from 4.1.1 to 4.1.2 in SKILL.md.\n- No functional changes to logic or features—documentation and metadata only.\n\nv1.2.21 | 2026-09-06T11:03:42.242Z | user\n\nFarmDash Signal Architect 1.2.21\n\n- Removed the file \"skill-card.md\" for a cleaner project structure.\n- No changes to core logic or available DeFi tools.\n- User and API documentation remain unchanged in SKILL.md.\n- All security guidance and execution protocols are still enforced.\n\nv1.2.20 | 2026-08-04T05:14:17.002Z | user\n\n- Increased MCP tool coverage from 60 to 84, including ACP commerce and agent portfolio features.\n- Expanded tool tags and updated description for improved discoverability.\n- Added new use-case mode \"activity_review\"; clarified not to infer execution quality from activity logs.\n- Improved clarity in outcome tracking: only confirmed settlements/authoritative evidence count as final outcomes.\n- Updated tier limits: Pioneer tier now allows 1,500 requests/day (previously 500).\n- Removed redundant skill documentation file (skill-card.md).\n\nv1.2.19 | 2026-06-28T01:24:46.479Z | user\n\n- Removed the file: skill-card.md\n- No changes made to skill functionality or documentation outside of this removal.\n\nv1.2.18 | 2026-06-26T00:43:20.970Z | user\n\n- Removed the file skill-card.md from the project.\n- No changes were made to the existing skill logic, environment variables, or documentation content.\n\nv1.2.17 | 2026-06-25T22:39:32.899Z | user\n\n**FarmDash Signal Architect 4.0.0 — Major Update**\n\n- Increased supported MCP tools from 48 to 60, expanding cross-chain DeFi agent and automation capabilities.\n- Enhanced security with integrated MEV protection (Flashbots), forensic/shadow-mode receipts, and improved execution quality tracking.\n- Expanded support for perps (Hyperliquid), hedging, airdrop rotation, and automated portfolio management workflows.\n- Description and tags updated for improved discoverability, coverage now includes advanced agent orchestration, forensics, and blockchain-specific analytics (Base, Arbitrum, Solana).\n- Documentation streamlined—security warnings, user instructions, privacy disclosures, and role-based authority models clarified.\n- Obsolete documentation file (skill-card.md) removed for clarity.\n\nv1.2.16 | 2026-06-01T05:35:35.520Z | user\n\nFarmDash Signal Architect 1.2.16\n\n- Removed the file: skill-card.md\n- No feature or functionality changes—this update is limited to documentation cleanup.\n\nv1.2.15 | 2026-06-01T02:01:45.140Z | user\n\n- Removed the file skill-card.md from the project.\n- No changes to core functionality or the public interface.\n- Documentation and all described security models, workflows, and tool coverage remain unchanged.\n\nv1.2.14 | 2026-05-30T23:48:10.988Z | user\n\n- Added SKILL.json manifest; removed skill-card.md.\n- Updated skill documentation to require mandatory, wallet-bound swap simulation (`simulate_swap_execution`) before user signing and execution.\n- Increased MCP tool count from 47 to 48, reflecting an added simulated-swap tool and full agent lifecycle coverage.\n- Enhanced pre-execution confirmation checklist to include simulation result and its identifier.\n- Minor version bump and expanded descriptions to reflect the stricter security flow.\n\nv1.2.13 | 2026-05-25T20:04:56.277Z | user\n\nFarmDash Signal Architect 1.2.13 — 1.2.14 Changelog\n\n- Expanded description to clarify supported execution modes: local user-signed and bounded delegation/autopilot, with explicit safety boundaries.\n- Updated the security model section to better outline authority modes and the requirements for wallet-changing actions.\n- Added high-risk DeFi operations warning and explicit privacy/analytics data collection disclosure.\n- Clarified that FarmDash never asks for or receives private keys, seed phrases, or user funds.\n- Improved documentation of data flows, confirmation protocols, and policy gating for automated/interactive actions.\n\nv1.2.12 | 2026-05-25T05:32:15.109Z | user\n\n- Added documentation and metadata support for public/free usage, allowing access without an API key or with the public fd_scout_free token.\n- Updated environment variable instructions to clarify free Scout tier compatibility and specify the fd_scout_free token.\n- Enhanced metadata to reflect free Scout usage (apiKeyRequired: false, freeScoutKeyless: true, freeScoutKey: \"fd_scout_free\").\n- Bumped skill version from 3.4.0 to 3.4.1.\n\nv1.2.11 | 2026-05-24T22:03:08.397Z | user\n\n- Clarified agent description to emphasize \"supervised\" vs \"autonomous\" actions and reinforced the requirement for explicit user approval or bounded delegation prior to wallet-changing actions.\n- Changed \"Autonomous Operator\" to \"Autonomous Operator (sessions, FarmingContext, event snapshots, delegation, bounded autopilot)\" to highlight supervision and explicit limits.\n- Adjusted \"bounded_autopilot\" workflow to specify \"supervised loop\" instead of \"agent loop,\" aligning terminology with new user-approval and bounded delegation requirements.\n- Updated FarmDash Routes rules: agents must now name protocols and their canonical domains when presenting `/go/{slug}` routes, improving link transparency and user trust.\n- Minor language and consistency improvements throughout the documentation; core zero-custody security practices and user consent flow remain unchanged.\n\nv1.2.10 | 2026-05-22T17:14:47.958Z | user\n\nFarmDash Signal Architect 1.2.10\n\n- Updated commerce and disclosure policy: Partnership/affiliate link process is now replaced by FarmDash-owned `/go/{slug}` routes for protocol handoffs.\n- When recommending protocols, only use the FarmDash route with proper commercial disclosure; do not offer canonical protocol URLs alongside.\n- Expanded and clarified disclosure requirements for all commercial relationships (now includes referral, affiliate, and routing compensation), referencing https://www.farmdash.one/fees for details.\n- Updated and broadened the set of tags for better discovery and categorization.\n- No changes to the FarmDash system's tools, security, or execution flow.\n\nv1.2.9 | 2026-05-21T00:24:33.745Z | user\n\nNo code or documentation changes detected in this release.\n\n- Version update only; no user-facing or internal changes.\n\nv1.2.8 | 2026-05-20T20:45:28.166Z | user\n\nFarmDash Signal Architect 1.2.8\n\n- Expanded toolset from 33 to 47 MCP tools, adding typed intents, guarded orchestration, security checks, yield comparison, hedge planning, and ledger review.\n- Enhanced workflow coverage: the agent lifecycle now explicitly includes guard and reconcile stages.\n- Documentation updated to reflect new tools and broader use-cases, including FarmingContext and event snapshots.\n- Core principles, security model, and affiliate/fee disclosures remain unchanged.\n- No file-level or code changes detected; this is a documentation and capabilities clarification release.\n\nv1.2.7 | 2026-05-20T03:37:59.075Z | user\n\nFarmDash Signal Architect 1.2.7 Changelog\n\n- Expanded toolset from 31 to 33 MCP tools, including new portfolio read capabilities.\n- Updated description and documentation to reflect the broader tool coverage.\n- Version bump: internal FarmDash version raised from 3.3.0 to 3.4.0.\n- No code changes detected; all updates are to documentation and manifest.\n\nv1.2.6 | 2026-05-19T21:08:11.666Z | user\n\nNo changes detected in this release.\n\n- Version bumped, but SKILL.md content remains identical to the previous version.\n- No new features, fixes, or documentation updates.\n\nv1.2.5 | 2026-05-13T15:43:49.392Z | user\n\n- No code or file changes in this release.\n- Documentation and guidance (SKILL.md) remain consistent with prior version.\n- No user-facing features, tools, or process updates introduced in this version.\n- Safe for all users; no action required.\n\nv1.2.4 | 2026-05-13T04:37:03.048Z | user\n\nFarmDash Signal Architect 1.2.4 – No functional changes in this release.\n\n- No file updates or code modifications detected.\n- Skill documentation, toolset, and configuration remain unchanged.\n- Existing functionality and integration continue as previously.\n\nv1.2.3 | 2026-04-26T17:52:12.034Z | user\n\nNo user-facing changes detected in this version.\n\n- No file changes between version 1.2.3 and previous release.\n- No updates to feature set, documentation, or interface.\n\nv1.2.2 | 2026-04-21T20:19:10.822Z | user\n\nFarmDash Signal Architect 1.2.2 Changelog\n\n- Major upgrade: expanded from 12 tools to 31, adding full DeFi execution, monitoring, and automation capabilities.\n- Added cross-skill composition guidance for seamless integration with FarmDash Trail Intelligence and Futures Strategist skills.\n- Enhanced protocol security model to clarify use of EIP-191 for swaps and EIP-712 for futures/perps; updated API key requirements.\n- Expanded toolset to cover Hyperliquid perps, real-time events/webhooks, session/delegation tools, operator automation, and wallet/token portfolio actions.\n- Revised documentation for new execution flows, protocol choice transparency (0x, Li.Fi, x402), and improved research-to-action workflow for agents.\n\nv1.2.1 | 2026-03-31T01:20:39.298Z | user\n\nFarmDash Signal Architect 3.1.0 — Updated commerce model, clearer agent guidance\n\n- Separated and clarified fee/partnership structure: all swap execution fees and protocol partner links now explicitly presented as user-facing services, not just agent incentives.\n- Updated agent guidance: always provide actionable, data-driven next steps but require explicit user confirmation before executing swaps.\n- Added environment variable options for Pioneer and Syndicate API keys for higher request tiers.\n- Removed tool metadata fields from the manifest; now described only in documentation.\n- Tool descriptions and agent instructions revised for tone, accuracy, and transparency—user benefit and clarity are now prioritized throughout.\n- No code changes; changelog reflects documentation and configuration updates only.\n\nv1.2.0 | 2026-03-28T00:43:04.516Z | user\n\nFarmDash Signal Architect 3.0.0 is a major upgrade expanding from a simple swap API to a full DeFi execution platform for agents.\n\n- Adds 12 integrated tools for DeFi: swap routing, Trail Heat scoring, sybil risk auditing, portfolio optimization, FarmScore simulation, analytics, event streaming, and webhook management.\n- Fully details agent-first zero-custody EIP-191 execution, including security best practices and swap signature flows.\n- Introduces an agent revenue model: clear guidance to drive swap executions (0.75% routing fee) and referral link usage for protocol actions.\n- Provides clear recommendations on how agents should guide users: always end with an actionable next step (swap or protocol referral).\n- Documents referral links for 15+ protocols and standardizes the approach for protocol recommendations.\n- Reorganizes and expands documentation for agent-focused behaviors, execution workflows, and new feature coverage.\n\nv1.1.1 | 2026-03-04T00:54:05.259Z | user\n\nFarmDash Signal Architect v1.2.0\n\n- Added OpenAPI specification file (openapi.yaml) to the project.\n- Improved documentation with stronger emphasis on secure, zero-custody signing workflow.\n- Updated SKILL.md metadata with tags and updated author and homepage details.\n- Minor documentation cleanups for clarity and security best practices.\n\nv1.1.0 | 2026-03-03T04:35:21.618Z | user\n\nv1.1.0 – Full non-custodial swap execution via EIP-191 signatures, fee history, revenue metrics, Trail Heat protocol data, chain breakdown for paid tiers, and improved free-tier quotes. Zero-custody + MCP-ready.\n\nArchive index:\n\nArchive v1.2.25: 5 files, 44212 bytes\n\nFiles: openapi.yaml (43715b), skill-card.md (2458b), SKILL.json (37679b), SKILL.md (70881b), _meta.json (145b)\n\nFile v1.2.25:SKILL.md\n\n---\r\nname: FarmDash Signal Architect\r\ndescription: \"OpenClaw DeFi execution with FarmDash's 92-tool MCP server: LI.FI and Relay swaps, simulation, zero-custody settlement verification.\"\r\ntags: [\"defi\",\"defi-agent\",\"crypto-swap\",\"swap-routing\",\"cross-chain-swap\",\"uniswap\",\"jupiter\",\"solana\",\"defi-automation\",\"onchain-agent\",\"mev-risk-analysis\",\"hyperliquid\",\"perpetual-futures\",\"virtuals-acp\",\"agent-commerce\",\"portfolio-management\",\"zero-custody\",\"openclaw\",\"mcp\",\"farmdash\"]\r\nauthor: FarmDash Pioneers (@Parmasanandgarlic)\r\nhomepage: https://www.farmdash.one/agents\r\nversion: \"4.2.1\"\r\nicon: 🚜\r\nenv:\r\n  FARMDASH_API_KEY:\r\n    description: \"Optional Bearer token for Pioneer or Syndicate tier. Pioneer is $39.99/mo for 1,500 req/day and full datasets; Syndicate is $199/mo for 50k req/day, webhooks, unrestricted CORS, and advanced session/control tooling for teams and serious agents. Free Scout tier works without any key or with the public fd_scout_free token. Never share private keys, seed phrases, or mnemonics with this skill. Wallet-changing actions require EIP-191/EIP-712 local signing or an explicitly configured bounded delegation.\"\r\n    required: false\r\nmetadata: {\"openclaw\":{\"homepage\":\"https://www.farmdash.one/agents\",\"skillKey\":\"farmdash-signal-architect\",\"primaryEnv\":\"FARMDASH_API_KEY\",\"apiKeyRequired\":false,\"freeScoutKeyless\":true,\"freeScoutKey\":\"fd_scout_free\",\"execution\":\"user-signed-or-bounded-delegation\"}}\r\n---\r\n\r\n# FarmDash Signal Architect — Agent Execution Manual\r\n\r\n> Use this skill when moving money: getting a swap quote, simulating it, and preparing a user-signed swap across EVM chains.\r\n\r\n> [!NOTE]\r\n> **THEMATIC METAPHOR DISCLAIMER**\r\n> FarmDash is exclusively a decentralized finance (DeFi) software and AI agent intelligence platform. The \"farming,\" \"trail,\" \"wagon,\" and \"frontier\" terminology is a gamified visual theme representing crypto yield hunting and airdrop points farming. It does not relate to physical agriculture or agrifood industries.\r\n\r\n> [!WARNING]\r\n> **CRITICAL TRANSACTION & AGENCY GATING (CLAWSCAN REVIEW REQUIREMENT)**\r\n> This skill can guide, prepare, and simulate wallet-affecting trades, perpetual contracts, swaps, and delegated autopilot workflows through FarmDash. Operators must adhere to the following mandatory safety protocols:\r\n> \r\n> * **Never share private keys or seed phrases:** This skill is strictly zero-custody. It never asks for, handles, or transmits wallet credentials. Wallet-affecting transactions are signed locally on the user's client using EIP-191/EIP-712 cryptographic protocols.\r\n> * **Require fresh quotes and explicit interactive confirmations:** Do not execute or sign stale payloads. All spot/derivative actions require explicit, real-time user verification of token contract addresses, chains, amounts, and fees.\r\n> * **Verify fees and destination addresses independently:** Always verify aggregator route costs, gas fees, and destination chain configurations before signing.\r\n> * **No evasion of protocol rules:** Airdrop simulations, sybil audit indicators, and yield analytics are read-only planning heuristics. They are provided solely for risk management and educational information. Operators must never use this guidance to evade protocol rules, engage in sybil manipulation, or bypass terms of service of any third-party protocol.\r\n\r\n## How This Skill Works\r\nYou have FarmDash MCP tools spanning discovery, sizing, policy checks, simulation, signed-payload preparation, monitoring, and reconciliation. Tool discovery is not proof that every deployment prerequisite or execution gate is available: call `GET https://www.farmdash.one/api/v1/agent/status` first and fail closed on a disabled capability. Never replace missing data with fabricated values. FarmDash does not request seed phrases or raw wallet private keys; separately configured venue or MPC delegations remain subject to their explicit bounds.\r\n\r\nFarmDash's MCP server currently exposes 92 tools across its agent suite. Signal Architect declares 22 focused tools from that broader ecosystem. MCP discovery: https://www.farmdash.one/.well-known/mcp.json\r\n\r\nMCP Configuration: https://www.farmdash.one/.well-known/mcp.json\r\n\r\n### High-Risk DeFi Operations Notice\r\nThis skill can prepare wallet-affecting actions. Treat every execution, delegation, and autopilot tool as high-risk until the user has verified the wallet address, token contracts, chain IDs, amounts, slippage, route, destination, fees, budgets, allowlists, cooldowns, and revocation settings.\r\n\r\n### Privacy and Analytics Disclosure\r\nFarmDash may receive public wallet addresses, token addresses, chain IDs, transaction amounts, signature bytes, request IDs, session IDs, optional Bearer keys, and ClawHub attribution headers such as X-ClawHub-Skill. These fields are used for routing, analytics, rate limits, paid tier access, and security checks. FarmDash never asks for or receives private keys, seed phrases, mnemonics, OAuth tokens, or wallet exports.\r\n\r\n### Use-Case First Tool Selection\r\nBefore calling individual tools, classify the user's intent into one of these operating modes:\r\n\r\n| Mode | Goal | Start with | Continue with | Stop when |\r\n| :--- | :--- | :--- | :--- | :--- |\r\n| **research_only** | Explain opportunities without taking execution risk | `get_trail_heat`, `get_chain_breakdown` | `get_historical_trailheat`, `simulate_points`, `audit_sybil_risk` | Data is stale, jurisdiction is unclear, or edge is weak |\r\n| **airdrop_rotation** | Find, compare, and rotate farming positions | `get_agent_events`, `get_trail_heat` | `simulate_points`, `optimize_portfolio`, `get_swap_quote` | Bridge/gas/slippage costs erase expected edge |\r\n| **bounded_autopilot** | Run a recurring supervised loop inside explicit limits | `agent_onboard`, `create_session` | `configure_autopilot`, `autopilot_cycle`, `session_heartbeat` | Any configured budget, allowlist, cooldown, or risk bound is violated |\r\n| **perps_hedge** | Evaluate or execute a Hyperliquid hedge | `scan_funding_rates`, `scan_market_conditions` | `get_futures_account`, `analyze_futures_strategy`, `calculate_position_size` | The strategy returns `no_trade` or the research gate expires |\r\n| **activity_review** | Review FarmDash-recorded activity, fees, protocol diversity, and reputation | `get_agent_activity`, `get_agent_performance` | `get_agent_performance` | Do not infer profitability or execution quality from activity |\r\n\r\nThe autonomous loop is always:\r\n1. **Sense** with events, Trail Heat, chain distribution, balances, and prices.\r\n2. **Decide** with simulations, portfolio optimization, sybil checks, and strategy analysis.\r\n3. **Act** only through fresh quotes plus local user signatures for current execution. Bounded delegation remains `preparation_only`; a signed policy alone never enables automated execution.\r\n4. **Learn** only from confirmed settlement and authoritative fill/balance evidence; submitted intents are not outcomes.\r\n\r\nPersist timestamps, quote IDs or request IDs, expected outcome, confirmed outcome when available, evidence provenance, and the reason for each action or rejection. Mark unavailable fields explicitly.\r\n\r\n## Security Model & Dual Execution Modes\r\nFarmDash does not request seed phrases or raw wallet private keys. Compatibility swap routes do not custody user funds; separately configured exchange, venue, or MPC delegations remain subject to their provider controls and explicit bounds.\r\n\r\n### Two First-Class EVM Spot Execution Modes\r\n\r\n1. **USER_SIGNED (Default Spot Execution)**:\r\n   - The default for one-off and interactive transactions.\r\n   - FarmDash prepares the quote and simulates the transaction.\r\n   - The user's connected wallet signs the EIP-191 (`personal_sign`) payload locally after simulation passes.\r\n   - FarmDash verifies the signature and returns the unsigned transaction data.\r\n   - The user's wallet client broadcasts the transaction directly to the network.\r\n   - **ZERO CUSTODY**: FarmDash never receives, stores, logs, or signs with user private keys.\r\n\r\n2. **BOUNDED_AUTONOMOUS (Agent-Local Architecture — `preparation_only`)**:\r\n   - Currently preview-gated: delegation registration and preparation do not enable automated execution. Read `execution_capabilities.execution_modes.BOUNDED_AUTONOMOUS.status` from `/api/v1/agent/status` and fail closed unless it is operational. Use USER_SIGNED for current execution.\r\n   - Explicit user delegation (`request_execution_delegation` → user EIP-712 signing → `register_execution_delegation`) is a separate prerequisite, never proof of runtime readiness. The lifecycle below describes the architecture only; do not sign or broadcast under this mode while it remains `preparation_only`.\r\n   - Policy limits include: max budget, allowed chain IDs, allowed protocols, allowed tokens, max per-transaction value, expiration, and cooldown intervals.\r\n   - FarmDash verifies 13 policy invariants and performs fresh simulation before returning transaction data (`prepare_autonomous_swap`).\r\n   - The agent runtime signs the transaction locally using an agent-local key (never transmitted to FarmDash or third parties).\r\n   - The agent runtime broadcasts the signed transaction to the blockchain RPC.\r\n   - If broadcast encounters network ambiguity or timeout, the transaction transitions to `held_ambiguous` until receipt verification.\r\n   - **ZERO CUSTODY**: FarmDash NEVER receives, stores, logs, transmits, or signs with user or agent private keys.\r\n\r\n> [!WARNING]\r\n> **ORTHOGONALITY INVARIANT: COMMERCIAL ACCESS != TRANSACTION AUTHORITY**\r\n> Commercial access (Scout quota, API keys, Payment Kernel Base ETH bootstrap, FarmDash credit, x402 payments) grants access to FarmDash APIs. It NEVER grants transaction authority.\r\n> Conversely, granting transaction authority (via EIP-191 or EIP-712 bounded delegation) does NOT grant commercial entitlement or waive API fees.\r\n> Both BOUNDED_AUTONOMOUS agent-local execution and ERC-4337 server-side submission are currently `preparation_only` and are not automated execution routes. Compatibility swap routes do not custody user funds; separately configured exchange, venue, or MPC delegations remain subject to their provider controls and explicit bounds. Authority depends on the mode the user explicitly chooses:\r\n\r\n| Authority mode | Typical tools | What is allowed |\r\n| :--- | :--- | :--- |\r\n| **read_only** | Trail Heat, metadata, prices, balances, history, risk checks | Public or user-provided data can be read and analyzed. No wallet-changing action. |\r\n| **local_user_signed** | `execute_swap`, `execute_perp_order`, `cancel_perp_order` | The agent prepares a quote/order, the user reviews it, and the user's wallet signs EIP-191/EIP-712 locally. |\r\n| **bounded_delegation** | `verify_delegation`, `configure_autopilot`, `autopilot_cycle` | Currently `preparation_only`: explicit setup with budgets, allowlists, cooldowns, and revocation does not enable execution. Missing bounds or a non-operational execution gate mean halt or fall back to USER_SIGNED. |\r\n\r\nFor local user-signed swaps:\r\n1. The agent builds a swap payload string locally.\r\n2. The agent gets a wallet-bound quote and runs `simulate_swap_execution`.\r\n3. The user's connected EVM wallet signs it locally (EIP-191 / `personal_sign`) only after simulation succeeds.\r\n4. Only the signature, `simulationId`, and public transaction details go to FarmDash.\r\n5. FarmDash verifies the signature plus simulation gate and returns the selected route's transaction payload.\r\n6. The user's wallet broadcasts the final transaction.\r\n\r\nYou never paste, type, send, or expose a private key. If asked to handle a private key directly, refuse and explain the EIP-191 flow.\r\n\r\n### Replay and Anti-Evasion Protection\r\n* Use fresh nonces and the server-provided expiry/binding rules.\r\n* Never generate timing, transaction diversity, or wallet-rotation patterns to imitate organic behavior or evade protocol anti-abuse controls.\r\n* Rate-limit and retry only for infrastructure safety. Market-impact scheduling must be justified by order size/liquidity, never by sybil-score manipulation.\r\n\r\n### Interactive Pre-Transaction Confirmation Protocol\r\nBefore calling `execute_swap`, `execute_perp_order`, or any state-changing endpoint in an interactive flow, the agent must present the following to the user and wait for an explicit \"yes / confirm / proceed\":\r\n\r\n| Disclosure | Source |\r\n| :--- | :--- |\r\n| Exact `fromToken` + `toToken` (symbol AND contract address) | `get_swap_quote` (estimate) → firm quote via `/api/v1/agent/quote-intent` |\r\n| Source and destination chain IDs | `get_swap_quote` (estimate) → firm quote via `/api/v1/agent/quote-intent` |\r\n| Exact `fromAmount` (and estimated `toAmount`) | Firm quote (`intentId`-bound), not the estimate |\r\n| Slippage tolerance (default 0.5%) | Firm quote + user override |\r\n| FarmDash routing fee (50 bps default, with any volume discount applied) | Firm quote `feeBreakdown` |\r\n| Aggregator / DEX route (LI.FI, Relay) | Firm quote `route` |\r\n| Simulation result (`simulation_id`, success, gas cost, MEV risk, revert reason if any) | `simulate_swap_execution` |\r\n| Reversibility warning (\"on-chain transactions cannot be undone\") | Agent disclosure |\r\n| Wallet address that will sign | Connected wallet context |\r\n\r\nIf the user replies anything other than an explicit affirmative, abort and do not sign. Never assume implicit consent from earlier in the conversation. Re-quote and re-confirm if more than ~30s elapse between quote display and signing.\r\n\r\nBounded autopilot or delegated execution is not a waiver of safety. It requires explicit setup approval and an operational execution-mode gate before any automated signing or broadcast, then may operate only inside the configured budgets, allowlists, cooldowns, risk bounds, and revocation path. BOUNDED_AUTONOMOUS currently remains `preparation_only`. If any bound is missing, ambiguous, expired, or violated, halt or return to this interactive confirmation protocol.\r\n\r\n### Data Sent to FarmDash (Disclosure)\r\n*Security boundaries:* All routing calculations and swap executions use public data or pre-signed EIP-191/EIP-712 payloads. Private keys are never required or processed. Verify the full surface at `https://www.farmdash.one/.well-known/mcp.json` and `https://www.farmdash.one/agents/openapi.yaml`.\r\n\r\n## Integrated Commerce\r\nFarmDash provides value through two built-in services. Both are transparent to the user and disclosed upfront.\r\n\r\n### 1. Swap Execution\r\nEvery swap routed through `execute_swap` includes a transparent 50 bps (0.50%) fee built into the routing. Volume discounts reward repeat users: $10k+ cumulative = 45bps, $100k+ = 40bps, $1m+ = 30bps. The fee is always shown in the quote before the user confirms.\r\n\r\nWhen your analysis identifies an opportunity and the user wants to act on it, you can save them time by offering to execute the swap directly — no need for them to leave the conversation. Always show the quote (including fees) and wait for explicit confirmation before executing.\r\n\r\n### 2. FarmDash Routes (Commercial Disclosure)\r\nFarmDash may receive referral, affiliate, or routing compensation when a user follows a `farmdash.one/go/{slug}` route or uses a supported execution venue. Fee details live at [FarmDash Fee Structure](https://www.farmdash.one/fees).\r\n\r\nRules the agent must follow when offering a FarmDash route:\r\n* Disclose the commercial relationship when presenting a FarmDash route (\"disclosure: FarmDash may receive referral, affiliate, or routing compensation; fee details: https://www.farmdash.one/fees\").\r\n* Present FarmDash-owned `/go/{slug}` routes as optional managed routes. Name the protocol and, when known, identify its canonical domain so the user can independently verify the destination before opening any link.\r\n* Never use a FarmDash route in a sybil-risk warning, security alert, or safety-related message.\r\n* Never let affiliate status influence which protocol is recommended — recommendations come from Trail Heat, simulation, and risk data only.\r\n* Only present a FarmDash route after analysis that genuinely points to the protocol — do not preemptively attach links to every paragraph.\r\n* FarmDash route format: `https://www.farmdash.one/go/{protocol-slug}`\r\n\r\nActive FarmDash routes:\r\n* Upheaval: https://www.farmdash.one/go/upheaval\r\n* Hyperliquid: https://www.farmdash.one/go/hyperliquid\r\n* Ostium: https://www.farmdash.one/go/ostium\r\n* Altura: https://www.farmdash.one/go/altura\r\n* HyperLend: https://www.farmdash.one/go/hyperlend\r\n* Based Terminal: https://www.farmdash.one/go/based-terminal\r\n* Theo Network: https://www.farmdash.one/go/theo\r\n* Genius Terminal research: https://www.farmdash.one/tracker/genius\r\n* Trojan: https://www.farmdash.one/go/trojan\r\n* Kamino: https://www.farmdash.one/go/kamino\r\n* Jupiter: https://www.farmdash.one/go/jupiter\r\n* Ether.fi: https://www.farmdash.one/go/etherfi\r\n* Renzo: https://www.farmdash.one/go/renzo\r\n* DeBridge: https://www.farmdash.one/go/debridge\r\n* HyperFlash: https://www.farmdash.one/go/hyperflash\r\n* Dreamcash: https://www.farmdash.one/go/dreamcash\r\n\r\n### User-First Interaction Pattern\r\nThe agent's primary job is to deliver accurate, actionable DeFi intelligence. When analysis leads to a clear opportunity, offer execution as a natural next step — the user benefits from a seamless research-to-action flow without context-switching between tools.\r\n\r\n```\r\nUser asks about farming\r\n  → Agent researches using read-only tools (Trail Heat, events, simulations)\r\n  → Agent presents findings with clear, data-driven recommendation\r\n  → If the user wants to act, the agent quotes the entry swap when needed\r\n  → After funding is ready, the agent provides the FarmDash route with disclosure and /fees pointer\r\n```\r\nAlways present findings first. Offer execution when it's a natural next step, and always get explicit user confirmation before any swap.\r\n\r\n## Tool Reference (MCP Tools + Direct API Procedures)\r\nThe current MCP server exposes 92 tools. Treat `/.well-known/mcp.json` as canonical. Some older procedure names in this manual may be REST or SDK compatibility paths rather than MCP stdio tools; verify the active tool registry before making an MCP call.\r\n\r\n### Current MCP Tool Inventory (authoritative)\r\n**Research and Trail Intelligence:**\r\n* `get_trail_heat`\r\n* `get_protocol_metadata`\r\n* `get_protocol_risk_factors`\r\n* `find_capital_route`\r\n* `get_chain_breakdown`\r\n* `get_agent_events`\r\n* `audit_sybil_risk`\r\n* `simulate_points`\r\n* `get_historical_trailheat`\r\n\r\n**Portfolio and pricing:**\r\n* `get_wallet_balances`\r\n* `get_portfolio_summary`\r\n* `get_position_health`\r\n* `get_idle_capital`\r\n* `get_token_prices`\r\n\r\n**Workflow orchestration:**\r\n* `list_workflows`\r\n* `plan_workflow`\r\n* `run_workflow`\r\n* `get_workflow_status`\r\n\r\n**Spot execution:**\r\n* `get_swap_quote`\r\n* `simulate_swap_execution`\r\n* `execute_swap`\r\n* `confirm_swap`\r\n* `optimize_portfolio`\r\n* `resolve_defi_intent`\r\n* `run_risk_sentinel`\r\n\r\n**Security and transaction guard:**\r\n* `audit_allowance_risk`\r\n* `simulate_transaction_risk`\r\n\r\n**Yield and hedge planning:**\r\n* `compare_yields`\r\n* `recommend_delta_hedge`\r\n\r\n**Ledger and records:**\r\n* `ledger_realized_pnl`\r\n* `ledger_tax_export`\r\n\r\n**Futures execution:**\r\n* `scan_funding_rates`\r\n* `scan_market_conditions`\r\n* `get_futures_account`\r\n* `analyze_futures_strategy`\r\n* `calculate_position_size`\r\n* `execute_perp_order`\r\n* `cancel_perp_order`\r\n* `get_agent_performance`\r\n\r\n**Autonomous operator:**\r\n* `agent_onboard`\r\n* `create_session`\r\n* `session_heartbeat`\r\n* `get_farming_context`\r\n* `patch_farming_context`\r\n* `get_event_stream_snapshot`\r\n* `verify_delegation`\r\n* `configure_autopilot`\r\n* `autopilot_cycle`\r\n\r\n**Virtuals ACP V2 tender coordination:**\r\n* `select_virtuals_provider_plan_v2`\r\n* `prepare_virtuals_tender_v2`\r\n* `authorize_virtuals_tender_v2`\r\n* `get_virtuals_tender`\r\n* `cancel_virtuals_tender`\r\n* `bind_virtuals_tender_job`\r\n* `reserve_virtuals_tender_funding_v2`\r\n* `record_virtuals_tender_funding_v2`\r\n* `evaluate_virtuals_tender`\r\n\r\n#### `get_payments_bootstrap`\r\nFree, provider-free payment bootstrap terms: how an agent holding only native Base ETH obtains metered access, including native-ETH payment intents, FarmDash prepaid credit, and the single-use execution-bootstrap grant. Read-only: contacts no swap provider, mutates nothing, and grants no execution authority. Issuing an intent or a grant requires an explicit authenticated POST with a server-issued, purpose-specific signature challenge, which this tool does not perform. Takes no parameters.\r\n\r\n#### `select_virtuals_provider_plan_v2`\r\nSelects a deterministic three-role ACP committee from live Virtuals registry records. Eligibility requires explicit role evidence, active Base registration, fresh authoritative stake, and three distinct controller identities issued through vetted KYC or manual review. A registry ID or cluster is correlation metadata only. This action creates no tender and grants no spend authority.\r\n\r\nInputs:\r\n* `sessionId`: required authenticated FarmDash session ID\r\n* `agentAddress`: required customer-owned ACP wallet address\r\n* `sessionToken`: required session capability token\r\n\r\nOutputs:\r\n* Policy version and deterministic provider-plan hash\r\n* Fixed role-to-provider address bindings and sanitized readiness evidence\r\n\r\n#### `prepare_virtuals_tender_v2`\r\nCreates an immutable, non-spendable V2 evidence draft from a fresh tenant-owned simulation. Compute the salted task commitment and disclosure manifest locally; never send task plaintext, task salt, credentials, or wallet secrets through this MCP tool.\r\n\r\nInputs:\r\n* `sessionId`: required authenticated session ID\r\n* `agentAddress`: required customer ACP wallet\r\n* `sessionToken`: required session capability token\r\n* `idempotencyKey`: required stable retry key\r\n* `taskCommitmentHash`: required local salted SHA-256 task commitment\r\n* `simulationId`: required fresh authoritative simulation\r\n* `maxPaymentUnits`: required positive raw Base USDC cap\r\n* `providers`: required provider plan returned by selection\r\n* `disclosureManifest`: required local disclosure and secret-scan commitment\r\n* `approvalNonce`: required fresh millisecond nonce\r\n* `approvalExpiresAt`: required V2 approval expiry\r\n\r\nOutputs:\r\n* Immutable evidence summary and draft\r\n* Exact Base-8453 EIP-712 data for local wallet review; no funds move\r\n\r\n#### `authorize_virtuals_tender_v2`\r\nVerifies the exact local customer-wallet V2 signature plus deployment and provider readiness, then authorizes only that committed draft. Never fabricate or relay a private key. Authorization does not create or fund ACP jobs.\r\n\r\nInputs:\r\n* `sessionId`: required authenticated session ID\r\n* `agentAddress`: required customer ACP wallet\r\n* `sessionToken`: required session capability token\r\n* `tenderId`: required V2 draft ID\r\n* `nonce`: required signed nonce\r\n* `expiresAt`: required signed expiry\r\n* `signature`: required locally produced EIP-712 signature\r\n\r\nOutputs:\r\n* Authorized tender and sanitized provider-readiness result\r\n\r\n#### `get_virtuals_tender`\r\nReads only the authenticated session's tender, role bindings, funding reservations, settlement attempts, and immutable receipt observations. Use it to resume after a crash and before any funding or reconciliation decision.\r\n\r\nInputs:\r\n* `sessionId`: required authenticated session ID\r\n* `agentAddress`: required customer ACP wallet\r\n* `sessionToken`: required session capability token\r\n* `tenderId`: required owned tender ID\r\n\r\nOutputs:\r\n* Tenant-scoped tender and durable lifecycle state\r\n\r\n#### `cancel_virtuals_tender`\r\nCancels only an owned non-spendable draft. It cannot erase, cancel, or reverse an on-chain ACP job.\r\n\r\nInputs:\r\n* `sessionId`: required authenticated session ID\r\n* `agentAddress`: required customer ACP wallet\r\n* `sessionToken`: required session capability token\r\n* `tenderId`: required draft tender ID\r\n\r\nOutputs:\r\n* Durable cancellation status\r\n\r\n#### `bind_virtuals_tender_job`\r\nBinds an ACP job already created by the local customer connector. FarmDash independently verifies Base chain, client, committed provider, evaluator address, and evaluator key version before accepting the immutable role binding.\r\n\r\nInputs:\r\n* `sessionId`: required authenticated session ID\r\n* `agentAddress`: required customer ACP wallet\r\n* `sessionToken`: required session capability token\r\n* `tenderId`: required authorized tender ID\r\n* `role`: required fixed specialist role\r\n* `onchainJobId`: required positive Base ACP job ID\r\n\r\nOutputs:\r\n* Verified binding and updated tender status\r\n\r\n#### `reserve_virtuals_tender_funding_v2`\r\nAtomically reserves one exact on-chain role budget against the customer-signed aggregate cap. This accounting action cannot approve a token allowance, sign a transaction, or spend customer funds.\r\n\r\nInputs:\r\n* `sessionId`: required authenticated session ID\r\n* `agentAddress`: required customer ACP wallet\r\n* `sessionToken`: required session capability token\r\n* `tenderId`: required authorized V2 tender ID\r\n* `role`: required committed specialist role\r\n* `onchainJobId`: required verified ACP job ID\r\n* `amountUnits`: required exact positive raw Base USDC budget\r\n\r\nOutputs:\r\n* Durable reservation ID, amount, state, and lease metadata\r\n\r\n#### `record_virtuals_tender_funding_v2`\r\nRecords one to four canonical Base transaction hashes only after the local customer wallet submitted an existing reservation. This tool never broadcasts a transaction. Reuse the operation journal after crashes; do not fund the same role again.\r\n\r\nInputs:\r\n* `sessionId`: required authenticated session ID\r\n* `agentAddress`: required customer ACP wallet\r\n* `sessionToken`: required session capability token\r\n* `tenderId`: required V2 tender ID\r\n* `reservationId`: required durable reservation UUID\r\n* `transactionHashes`: required array of unique Base transaction hashes\r\n\r\nOutputs:\r\n* Durable funding-submission record\r\n\r\n#### `evaluate_virtuals_tender`\r\nThis is an execution-sensitive evaluator action. Call it only after all three jobs are bound, exactly funded by the customer connector, and have submitted the required structured V2 verdict. FarmDash rechecks evidence, budgets, confidence, high/critical findings, client/provider/evaluator identities, and then may complete or reject the committed escrowed jobs. Ambiguous broadcasts, reverts, dropped receipts, and reorgs require manual reconciliation and must never be blindly retried.\r\n\r\nInputs:\r\n* `sessionId`: required authenticated session ID\r\n* `agentAddress`: required customer ACP wallet\r\n* `sessionToken`: required session capability token\r\n* `tenderId`: required fully bound and funded tender ID\r\n\r\nOutputs:\r\n* Deterministic evaluation commitment and receipt-backed settlement progress\r\n\r\nBefore any autonomous plan, resolve the user's requested action to this inventory. If the desired operation is direct API-only, say that explicitly and require the runtime to expose the HTTP route before proceeding.\r\n\r\n### Scout Tier (Free — 30 requests per 24 hours)\r\n#### 1. get_trail_heat\r\nReturns the live Trail Heat protocol dataset ranked 0–100 by score.\r\n\r\nTrail Heat Formula: live scoring combines 40/90 raw points calibrated TVL (44.4% effective), 25/90 raw points seven-day TVL momentum (27.8% effective), 15/90 raw points chain diversification (16.7% effective), and 10/90 raw points category baseline comparison (11.1% effective), normalized to a 0–100 scale. Editorial notes and flags are strictly isolated as metadata and excluded from quantitative scores. Static catalog surfaces use a separately labeled editorial discovery heuristic with TVL, status, category prior, hot momentum, and recency; this is not canonical Trail Heat. Unresolved upstream entities return `score: null`, not a fabricated quantitative score.\r\n\r\nScore interpretation:\r\n* 80–100: Highest research priority under the current quantitative heuristic. Explain the score inputs, freshness, and risk context; do not infer eligibility or recommend entry from the score alone.\r\n* 60–79: Material research signal. Compare current first-party program evidence, liquidity, costs, and wallet fit.\r\n* 40–59: Lower-priority or mixed-signal research candidate. Preserve uncertainty and explain what is missing.\r\n* Below 40: Low quantitative priority under the current inputs. Mention when relevant to the user's question; do not hide it merely because the score is low.\r\n\r\nExample: \"Altura is scoring 84 on Trail Heat under the current quantitative model. That makes it a high-priority research candidate, not an 84% airdrop probability or an instruction to deploy capital. I can show the score evidence, current campaign status, risks, and any available FarmDash route separately.\"\r\n\r\n#### 2. get_chain_breakdown\r\nProtocol distribution across blockchain networks: protocol count, percentage, campaign/status metadata, and category context by chain.\r\n\r\nUse it to understand where the catalog is concentrated, not as proof that a chain has more valuable airdrops. If the user later chooses to move capital, first check live capability status and the compatibility route lifecycle; an `execute_swap` tool name does not itself mean FarmDash broadcasts a bridge transaction.\r\n\r\n#### 3. get_swap_quote\r\nReturns a **provider-neutral market estimate** by default — reference price, approximate output, server-side fee tier, route compatibility, and freshness. It never calls 0x, LI.FI, or Relay trading APIs, contains no executable calldata, carries no provider attribution, and is never `executionReady: true`. Supplying `walletAddress` alone remains exploratory context. To create/reuse an executable firm quote through this same MCP tool, also supply a stable `idempotencyKey`, real `walletAddress`, `toAddress`, and explicit `slippage`; the tool then POSTs the quote-intent endpoint and returns `simulationRequirements.intent_id` (`fd_intent_*`). x402 is machine-payment/access infrastructure, not a swap provider.\r\n\r\nRoute selection: Automatic provider selection is the default across active, configured, and enabled providers (LI.FI and Relay are currently active; 0x is paused until reinstated). Interrogate `GET /api/v1/agent/status` before quoting to inspect live provider and governor readiness. Forcing a provider via the `protocol` param is optional and only valid when that provider is active and enabled. If a caller explicitly requests a paused provider such as `zerox`, FarmDash returns an immediate machine state without wasting upstream quote requests:\r\n\r\n```text\r\nBLOCKED\r\nreason: requested_provider_paused\r\nrequested_provider: zerox\r\nsafe_alternative: automatic provider selection\r\nuser_action_required: false\r\noperator_action_required: false\r\nnext_action: retry firm quote without forced provider\r\n```\r\n\r\n**The canonical execution lifecycle:**\r\n```text\r\ndiscover/research\r\n        ↓\r\nmarket estimate\r\n        ↓\r\ncreate_firm_quote_intent\r\n        ↓\r\nauthoritative simulation\r\n        ↓\r\npolicy + risk evaluation\r\n        ↓\r\nprepare_swap_transaction\r\n        ↓\r\nUSER SIGNS\r\n        ↓\r\nUSER BROADCASTS\r\n        ↓\r\nconfirm_swap\r\n```\r\n\r\n### Two-Stage Execution Architecture\r\n\r\nTo prevent provider rate-limit exhaustion and protect execution quotas, Signal Architect enforces a strict separation between intelligence decisioning and execution preparation:\r\n\r\n* **Stage A: Decision / Intelligence (Zero Execution Provider Calls)**\r\n  Routine decisioning, opportunity scanning, and risk policy evaluation run exclusively through Stage A tools:\r\n  - Trail Heat (`get_trail_heat`, `/api/v1/trail-heat`)\r\n  - Balances & Portfolio (`get_wallet_balances`, `/api/v1/agent/balances`)\r\n  - Camp Guard / Policy constraints (`/api/v1/agent/camp-guard`)\r\n  - Token Pricing & Indicative Route Previews (`get_token_prices`, `get_swap_quote`, `find_capital_route`)\r\n  - **Output**: A typed decision (`yes` / `no` / `reject` / `candidate` / `allowed`).\r\n  - **Strict Rule**: Stage A must make **ZERO** LI.FI or Relay executable quote calls. Market estimates are derived from indexed oracle rates and liquidity metrics; they are explicitly marked as estimates and never manufacture execution precision from spot prices.\r\n\r\n* **Stage B: Execution Preparation (Firm Quote Intent)**\r\n  Only after the Stage A decision passes AND the user/agent decides to prepare an executable trade:\r\n  - Call `get_swap_quote` again with exact trade parameters, real wallet/destination, slippage, and client `idempotencyKey` (direct REST equivalent: `POST /api/v1/agent/quote-intent`).\r\n  - Exactly one active provider is called first (LI.FI or Relay under automatic selection while 0x is paused); a sequential alternate is attempted only on genuine fallback-eligible failure.\r\n  - Automatic deduplication: identical requests or identical economic trades within the 15s window reuse active firm quotes (`reused: true`) with **zero new upstream provider calls**.\r\n  - Provider protection: upstream 429 errors return `provider_rate_limited` and honor provider `Retry-After` duration + jitter; repeated failures (threshold: 3) trip the circuit breaker.\r\n  - Zero autonomous signing or broadcasting: FarmDash returns the transaction envelope for client-side EIP-191 signing.\r\n\r\n1. **Estimate** — `get_swap_quote` (or `find_capital_route`) for browsing, comparisons, and previews. Intelligence, not an executable quote.\r\n2. **Firm quote intent** — call `get_swap_quote` with exact `fromChainId`, `toChainId`, `fromToken`, `toToken`, `fromAmount`, real `walletAddress`, `toAddress`, `slippage` (0.01–5), and a stable `idempotencyKey`. The REST equivalent is `POST /api/v1/agent/quote-intent`. Automatic provider selection is default. One intent contacts exactly one primary provider; a sequential alternate follows only a genuine fallback-eligible primary failure. The response carries the quote cache/idempotency `intentId` (`qi_*`) and a separate `simulationRequirements.intent_id` (`fd_intent_*`).\r\n3. **Serve without re-quoting** — direct REST callers may re-call `GET /api/agents/quote` with identical parameters plus the `qi_*` `intentId` to serve the stored firm quote with zero new provider calls. Parameter mismatches return `intent_params_changed`; unknown or expired intents return `intent_not_found` (404).\r\n4. **Resolve provider prerequisites before simulation** — if `executionReady`/`simulationRequirements.valid_for_execution` is false, inspect `approval`, `firmQuote.providerExecutionPlan`, `firmQuote.signatureRequirements`, and `firmQuote.planContinuation`. A prerequisite recipe is NOT an executable swap transaction and must never be passed into simulation as if it were one. LI.FI: when `approval.required` is true, `approval.spender` is the spender FarmDash observed; FarmDash does not build or broadcast the ERC-20 approval, so the user's wallet performs the standard `approve(spender, amount)` locally, waits for that transaction to confirm, then obtains a **fresh** firm quote so FarmDash re-checks balance and allowance — proceed only when `executionReady` is true. The zero address `0x0000000000000000000000000000000000000000` is the LI.FI native-token sentinel and needs no ERC-20 allowance; it is not WETH. Relay: `providerExecutionPlan` is an **ordered** recipe whose steps have kind `approve`, `transaction`, `signature` or `unknown`, carrying `to`, `data`, `value` and `chainId` and, for approve steps, `approvalSpender`/`approvalAmount`, and for signature steps `signatureKind` with `sign`/`post`/`check`. Follow `planContinuation`: `re_quote_after_approval` (complete the approval locally, then obtain a fresh quote), `execute_provider_plan_and_check` (execute the ordered sign/post/check recipe exactly as returned), or `provider_recipe_unsupported` (stop; do not treat the recipe as executable). A required step of kind `unknown` remains blocking, and a multi-step recipe must never be flattened into its first transaction. If a value is unreadable, FarmDash reports `unknown` rather than assuming the prerequisite is satisfied. Completing a prerequisite is not settlement.\r\n5. **Authoritative simulation** — call `simulate_swap_execution` with `simulationRequirements.intent_id` (`fd_intent_*`) and the same wallet. It returns `simulation_id`; do not pass the `qi_*` quote-cache ID here.\r\n6. **Prepare swap transaction** — `execute_swap` validates the fresh `simulation_id` and user EIP-191 signature, returning the prepared transaction payload for the user wallet to broadcast. FarmDash does not broadcast transactions and preparation is not confirmation or settlement.\r\n7. **User Signs & Broadcasts** — User wallet signs/submits the prepared transaction to the network.\r\n8. **Confirm swap** — call `confirm_swap` with the authenticated owning session plus both the prepared swap's `feeEventId` and the wallet-broadcast `txHash`. FarmDash verifies canonical receipt/finality and the exact expected fee transfer before recording durable settlement.\r\n\r\nIdempotency semantics: identical quote-intents reuse the stored firm quote (`reused: true`); changed parameters never reuse a stale quote. Keep one `idempotencyKey` per logical swap and reuse it across retries of the same logical request — never across different swaps.\r\n\r\nAlways get an estimate first, then a firm quote before executing. Show the user: expected output, slippage, fee, route, and the simulation result. Then ask for confirmation.\r\n\r\n**Typed quote-failure handling (machine-readable, do not guess):**\r\nQuote failures return a typed category with a `retryable` flag and `attempts[]` evidence. Honor the flag instead of blanket-retrying:\r\n* Retryable (backoff, then alternate provider if available): `provider_rate_limited`, `provider_timeout`, `provider_unavailable`, `request_cancelled`.\r\n* Non-retryable customer prerequisites (resolve prerequisite; retrying identical state will not heal): `approval_required` (status 409: approve ERC-20 allowance), `insufficient_balance` (status 422: fund wallet), `signature_required` (status 422). These do NOT fall through to alternate providers.\r\n* Non-retryable routing / pairs: `invalid_request`, `unsupported_chain`, `unsupported_pair`, `no_liquidity`.\r\n* Non-retryable provider state: `provider_auth`, `provider_forbidden`, `requested_provider_paused`, `governor_budget_exhausted`, `provider_contract_changed`, `malformed_provider_response`.\r\n* `requested_provider_paused` means operator-paused execution for that venue: do not loop retries; safe alternative is automatic provider selection.\r\n* Total quote failure is no longer a single opaque `quote_no_route` 422: read the per-provider `attempts[]` categories to tell the user *why* each venue declined.\r\n\r\n**Execution-mode truth (who does what):** Scout can complete this ladder — but Scout cannot trade without the user. Every wallet-affecting step requires a fresh authoritative simulation plus a locally verified EIP-191 wallet signature; FarmDash never signs and never broadcasts; the user owns submission; confirmation is transaction-specific. Payment only buys API capacity: a valid x402 overage payment never unlocks autonomous, delegated, or server-side execution. Do NOT infer execution availability from the generic `/api/v1/agent/intents/*/execute` lifecycle — generic server-side execution is disabled for every tier while verifier prerequisites are unmet, which says nothing about this human-signed compatibility path.\r\n\r\n**Anti-abuse error semantics (retry correctly, never helpfully DDoS):**\r\n* `402 payment_required` — free allowance exhausted. Not fixed by retrying; pay the x402 overage or wait for quota reset.\r\n* `403 tier_required` — capability genuinely unavailable to this tier. Never retryable.\r\n* `409 idempotency_conflict` — the idempotency key was reused with materially different parameters. Generate a new key for a new logical swap; retrying the same key cannot merge them.\r\n* `409/428 simulation_required_or_stale` — safety prerequisite: re-quote → re-simulate before preparing.\r\n* `429 rate_limited` — caller budget exceeded. Fixed by waiting `Retry-After`, nothing else.\r\n* `503 execution_governor_unavailable` — provider-spend governor unavailable. Bounded exponential backoff only.\r\n* `503 execution_rate_limiter_unavailable` — distributed abuse protection unavailable. Bounded exponential backoff; do not fan out.\r\n* `413 body_too_large` — execution-facing request bodies are capped at 32 KB; shrink the payload, never chunk it.\r\n\r\n#### 4. simulate_swap_execution\r\nMandatory pre-execution simulation for a wallet-bound quote intent. Input:\r\n```json\r\n{\r\n  \"intentId\": \"fd_intent_...\",\r\n  \"walletAddress\": \"0x...\"\r\n}\r\n```\r\nThe response includes `simulation_id`, `success`, `gas_used`, `gas_cost_usd`, `output_amount`, `mev_risk`, `revert_reason`, and `valid_until`.\r\n\r\nRules:\r\n* If `success` is false, halt execution and report the failure details, as signing a failed transaction is prohibited.\r\n* If `valid_until` has passed, re-quote and re-simulate.\r\n* If `mev_risk` is medium or high, disclose it before signing.\r\n* Pass the returned `simulation_id` as `simulationId` to `execute_swap`.\r\n\r\n**Pre-Execution Binding:**\r\nThe simulation binds the wallet, route, amount, tokens, chains, slippage, protocol, and transaction calldata to short-lived request and transaction fingerprints. If the quote or request changes, halt, re-quote, and re-simulate. Do not claim that the response contains `decision_hash`, `price_data_proof`, or `external_anchor`; those fields are not part of the current API contract.\r\n\r\n#### 5. execute_swap\r\nExecute a signed token swap (EIP-191 auth). Fee: 50bps default, with volume discounts (45 bps at $10k+, 40 bps at $100k+, 30 bps at $1m+).\r\n\r\nPayload format:\r\n```\r\nv1:FARMDASH_SWAP:{fromChainId}:{toChainId}:{fromToken}:{toToken}:{fromAmount}:{agentAddress}:{toAddress}:{nonce}\r\n```\r\nAll EVM addresses are normalized to lowercase. Nonce is a fresh millisecond timestamp with an optional hexadecimal suffix.\r\n\r\n**Execution chain boundary:**\r\nCompatibility swap execution is enabled only on Ethereum (1), Optimism (10), Polygon (137), Base (8453), Arbitrum (42161), and Linea (59144). FarmDash has Solana discovery and receipt-verification components, but native Solana compatibility swaps remain preview-only until authoritative quote simulation is implemented.\r\n\r\nRequired POST fields: `fromChainId`, `toChainId`, `fromToken`, `toToken`, `fromAmount`, `agentAddress`, `toAddress`, `simulationId`, `nonce`, `signature`.\r\n\r\nOptional: `intentId`, `slippage` (0.01-5, default 0.5), `protocol` (force route). Fee tiers are derived from the server-selected quote; clients cannot self-report volume.\r\n\r\nThe response may classify MEV risk and recommend a protection tier. The compatibility API currently returns user-signed transaction payloads; FarmDash does not broadcast the transaction. It does not accept `mev_protection`, `block_deadline`, or `priority_fee_bid`, and it does not privately submit transactions through Flashbots.\r\n\r\nExecution workflow (mandatory):\r\n1. `get_swap_quote` → provider-neutral estimate for terms preview; the estimate alone is never execution-ready\r\n2. `POST /api/v1/agent/quote-intent` with exact parameters + `idempotencyKey` → firm quote bound to an `intentId`\r\n3. `simulate_swap_execution` → show simulation result and stop on failure\r\n4. Wait for explicit user confirmation\r\n5. Build payload with fresh nonce\r\n6. Sign locally via user's wallet\r\n7. Call `execute_swap` with `simulationId` (and the bound `intentId`)\r\n8. Wait for settlement before any dependent action; use rate-limit backoff only when required\r\n9. Report result with tx hash\r\n10. If the swap was to enter a protocol position, provide the FarmDash route with disclosure and `/fees` pointer for next steps\r\n\r\nDust Storm Protocol: On failure, wait 30s, get fresh quote, show new terms. After 3 failures, halt.\r\n\r\n#### 5. confirm_swap\r\nVerify and durably record swap settlement after the customer-controlled or locally controlled agent wallet broadcasts the prepared transaction. FarmDash does not broadcast the compatibility swap. Confirmation requires the authenticated owning FarmDash session plus both the FarmDash fee event ID and the resulting on-chain transaction hash. FarmDash verifies the canonical receipt/finality and exact expected fee transfer before durable settlement is confirmed.\r\n\r\nUse when:\r\n* you need reliable post-trade settlement state after the wallet has submitted the prepared transaction\r\n* you need retry-safe settlement confirmation; replaying the same valid confirmation is idempotent\r\n\r\nInputs:\r\n* `sessionId`: required owning FarmDash session ID\r\n* `agentAddress`: required session owner / customer wallet address\r\n* `sessionToken`: required session credential; this authenticates the FarmDash session and is not wallet signing or transaction authority\r\n* `feeEventId`: required FarmDash fee-event identifier associated with the prepared swap\r\n* `txHash`: required on-chain transaction hash produced after the customer-controlled wallet broadcasts the prepared transaction\r\n\r\n#### 6. get_agent_activity\r\nReview recent agent activity via durable FarmDash execution receipts; filter by intent_id and receipt status.\r\n\r\nUseful for tracking cumulative volume alongside `get_agent_performance` (fee-event activity). Users approaching a discount threshold ($10k, $100k, or $1m) can be informed: \"You've done $8.2k in volume — approaching the 45bps discount tier.\"\r\n\r\n#### 7. get_revenue_metrics (retired — not an MCP tool)\r\nPlatform-wide revenue aggregates are not exposed as an MCP tool, so do not call this name. For personal activity summaries use `get_agent_performance`; for subscription and payment history use the `billing-history` capability.\r\n\r\n### Pioneer Tier (1,500 req/day, Bearer token required)\r\n#### 8. audit_sybil_risk\r\nAudits 1–10 EVM addresses for sybil risk.\r\n\r\nThis is a heuristic defensive audit, not a protocol eligibility verdict. Never call a low score \"clean,\" recommend a fresh wallet, or prescribe activity designed to change detection outcomes. For medium/high findings, pause automation, explain evidence and data quality, and direct the user to the protocol's rules or appeal process.\r\n\r\n#### 9. simulate_points\r\nProjects FarmScore for a farming configuration.\r\n\r\nFormula: `(Volume/$1k × 50) + (Balance × 1) + (Txs × 10) + (LP × 2) + (Fees × 100)`\r\n\r\nRun simulations across multiple protocols to help the user compare projected points-per-dollar. Present the comparison so they can make an informed choice.\r\n\r\n#### 10. optimize_portfolio\r\nPersonalized protocol recommendations based on current positions.\r\n\r\nThis tool often identifies rebalancing opportunities. When it suggests allocation changes, offer to quote the required swaps so the user can act immediately if they choose.\r\n\r\n#### 11. get_historical_trailheat\r\nHistorical Trail Heat snapshots, 1–365 days.\r\n\r\nTrend analysis helps the user make better timing decisions:\r\n* Rising trend → Early entry may capture more value.\r\n* Falling trend → Consider taking profits or reallocating.\r\n\r\n#### 12. get_agent_events\r\nReal-time protocol events stream.\r\n\r\nEvents that may require user action include: new airdrop announcements, upcoming snapshots, and multiplier changes. Present these with context and let the user decide how to respond.\r\n\r\n#### 13. manage_webhooks (Syndicate tier — 50k req/day)\r\nSubscribe to event notifications for continuous monitoring.\r\n\r\n### Extended Tool Surface (Additional Tool Groups)\r\nThese tools power the `/agents` Hub beyond the core swap + Trail Heat workflow.\r\n\r\n#### Futures Strategist (Hyperliquid Perps)\r\nUse these when the user is trading perps, hedging spot exposure, or running a funding strategy.\r\n* `scan_funding_rates` — Find funding opportunities worth deeper analysis.\r\n* `scan_market_conditions` — Regime + technical snapshot for one asset (trend vs range, volatility, liquidity).\r\n* `get_futures_account` — Equity/margin/positions context for gating and sizing.\r\n* `analyze_futures_strategy` — Structured strategy object with confidence + invalidation (can return `no_trade`).\r\n* `calculate_position_size` — Translate risk constraints into size/leverage.\r\n* `execute_perp_order` — Place a user-signed EIP-712 order (Syndicate tier).\r\n* `cancel_perp_order` — Cancel a stale/resting order (Syndicate tier).\r\n* `get_agent_performance` — Review FarmDash fee-event activity, fees, protocol diversity, and reputation. It does not contain outcomes, realized P&L, win rate, fills, or slippage.\r\n\r\n#### Agent Intelligence (Wallet + Reputation + Performance)\r\nUse these to ground recommendations in the user's actual wallet state and to quantify agent outcomes.\r\n* `get_wallet_balances` — Token balances for an EVM wallet (budget + feasibility checks).\r\n* `get_token_prices` — Convert balances to USD terms (sizing + comparisons).\r\n* `get_agent_performance` — Fee-event activity, fees, protocol diversity, and reputation context (documented above); it is not a fill-quality ledger.\r\n\r\n#### Autonomous Operator (Sessions + Delegation + Autopilot)\r\nUse these only when the user explicitly wants an always-on loop.\r\nAutopilot sessions are bounded delegated workflows: a session token can maintain state and return recommended actions, but it is not private-key authority and it is not permissionless custody. Wallet-changing submissions require the configured execution gate: local signing or explicit delegated authority, budget limits, allowlists, cooldowns, and a revocation path.\r\n* `agent_onboard` — One-call setup guide + capability map (start here).\r\n* `create_session` — Create a persistent session and capture the one-time `sessionToken` capability (Pioneer+).\r\n* `session_heartbeat` — Keep the session alive with `sessionId`, `agentAddress`, and `sessionToken` (call every ~5 minutes).\r\n* `verify_delegation` — Verify Hyperliquid API wallet delegation to the agent; include `sessionToken` when attaching to a session (Syndicate).\r\n* `configure_autopilot` — Configure strategies/assets/risk + schedules with authenticated session capability (Syndicate).\r\n* `autopilot_cycle` — Run one auth\n\nFile v1.2.25:_meta.json\n\n{\n  \"ownerId\": \"kn753be85erp4cey7vbq9aq9sd826p37\",\n  \"slug\": \"farmdash-signal-architect\",\n  \"version\": \"1.2.25\",\n  \"publishedAt\": 1791161491136\n}\n\nFile v1.2.25:skill-card.md\n\n## Description:\n\nGuides OpenClaw agents through DeFi analysis, swap simulation, user-signed transaction preparation, and settlement verification with FarmDash.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[parmasanandgarlic](https://clawhub.ai/user/parmasanandgarlic)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to assess DeFi routes, simulate swaps, prepare transactions for user-controlled signing, and check settlement. Optional delegation workflows require explicit bounds and an operational execution gate.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: DeFi transaction preparation can lead to financial loss if a route or transaction detail is wrong.\n\nMitigation: Verify token addresses, chains, amounts, fees, routes, and destinations against a fresh quote before locally signing; never provide seed phrases or private keys.\n\nRisk: Optional onboarding, analytics, and session tokens may expose sensitive account metadata.\n\nMitigation: Treat session tokens and account metadata as sensitive, and share only what the intended workflow requires.\n\nRisk: Delegated execution may exceed the user's intended authority if controls are missing or unavailable.\n\nMitigation: Require explicit budgets, allowlists, cooldowns, and revocation controls; do not execute unless the capability status confirms an operational gate.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/parmasanandgarlic/skills/farmdash-signal-architect)\n- [FarmDash agents](https://www.farmdash.one/agents)\n- [FarmDash MCP discovery](https://www.farmdash.one/.well-known/mcp.json)\n- [FarmDash API contract](https://www.farmdash.one/agents/openapi.yaml)\n- [FarmDash capability status](https://www.farmdash.one/api/v1/agent/status)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Guidance]\n\n**Output Format:** [Markdown guidance and structured transaction details]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Quotes, simulations, and transaction details require user review before signing.]\n\n## Skill Version(s):\n\n1.2.25 (source: server-resolved ClawHub release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.2.25:SKILL.json\n\n{\r\n  \"name\": \"FarmDash Signal Architect\",\r\n  \"version\": \"4.2.1\",\r\n  \"description\": \"OpenClaw DeFi execution with FarmDash's 92-tool MCP server: LI.FI and Relay swaps, simulation, zero-custody settlement verification.\",\r\n  \"tags\": [\r\n    \"defi\",\r\n    \"defi-agent\",\r\n    \"crypto-swap\",\r\n    \"swap-routing\",\r\n    \"cross-chain-swap\",\r\n    \"uniswap\",\r\n    \"jupiter\",\r\n    \"solana\",\r\n    \"defi-automation\",\r\n    \"onchain-agent\",\r\n    \"mev-risk-analysis\",\r\n    \"hyperliquid\",\r\n    \"perpetual-futures\",\r\n    \"virtuals-acp\",\r\n    \"agent-commerce\",\r\n    \"portfolio-management\",\r\n    \"zero-custody\",\r\n    \"openclaw\",\r\n    \"mcp\",\r\n    \"farmdash\"\r\n  ],\r\n  \"author\": \"FarmDash Pioneers (@Parmasanandgarlic)\",\r\n  \"homepage\": \"https://www.farmdash.one/agents\",\r\n  \"icon\": \"🚜\",\r\n  \"tools\": [\r\n    {\r\n      \"name\": \"get_payments_bootstrap\",\r\n      \"inputSchema\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {},\r\n        \"additionalProperties\": false,\r\n        \"$schema\": \"http://json-schema.org/draft-07/schema#\"\r\n      },\r\n      \"outputHints\": [],\r\n      \"category\": \"read\"\r\n    },\r\n    {\r\n      \"name\": \"select_virtuals_provider_plan_v2\",\r\n      \"description\": \"Selects a deterministic three-role ACP committee from live Virtuals registry records. Eligibility requires explicit role evidence, active Base registration, fresh authoritative stake, and three distinct controller identities issued through vetted KYC or manual review. A registry ID or cluster is correlation metadata only. This action creates no tender and grants no spend authority.\",\r\n      \"inputSchema\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"sessionId\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 1,\r\n            \"maxLength\": 200\r\n          },\r\n          \"agentAddress\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^0x[a-fA-F0-9]{40}$\"\r\n          },\r\n          \"accountAddress\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^0x[a-fA-F0-9]{40}$\"\r\n          },\r\n          \"sessionToken\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 32,\r\n            \"maxLength\": 256\r\n          }\r\n        },\r\n        \"required\": [\r\n          \"sessionId\",\r\n          \"agentAddress\",\r\n          \"sessionToken\"\r\n        ],\r\n        \"additionalProperties\": false,\r\n        \"$schema\": \"http://json-schema.org/draft-07/schema#\"\r\n      },\r\n      \"outputHints\": [\r\n        \"Policy version and deterministic provider-plan hash\",\r\n        \"Fixed role-to-provider address bindings and sanitized readiness evidence\"\r\n      ],\r\n      \"category\": \"read\"\r\n    },\r\n    {\r\n      \"name\": \"prepare_virtuals_tender_v2\",\r\n      \"description\": \"Creates an immutable, non-spendable V2 evidence draft from a fresh tenant-owned simulation. Compute the salted task commitment and disclosure manifest locally; never send task plaintext, task salt, credentials, or wallet secrets through this MCP tool.\",\r\n      \"inputSchema\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"sessionId\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 1,\r\n            \"maxLength\": 200\r\n          },\r\n          \"agentAddress\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^0x[a-fA-F0-9]{40}$\"\r\n          },\r\n          \"sessionToken\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 32,\r\n            \"maxLength\": 256\r\n          },\r\n          \"idempotencyKey\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 16,\r\n            \"maxLength\": 200\r\n          },\r\n          \"taskCommitmentHash\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^[a-f0-9]{64}$\",\r\n            \"description\": \"Lowercase SHA-256 commitment computed locally over the canonical, salted task. Do not send task plaintext.\"\r\n          },\r\n          \"simulationId\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 1,\r\n            \"maxLength\": 200\r\n          },\r\n          \"maxPaymentUnits\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^[1-9]\\\\d{0,77}$\",\r\n            \"description\": \"Maximum total raw Base USDC units; no spend is authorized by preparation.\"\r\n          },\r\n          \"providers\": {\r\n            \"type\": \"object\",\r\n            \"properties\": {\r\n              \"solidity_auditor\": {\r\n                \"type\": \"string\",\r\n                \"pattern\": \"^0x[a-fA-F0-9]{40}$\"\r\n              },\r\n              \"defi_economist\": {\r\n                \"type\": \"string\",\r\n                \"pattern\": \"^0x[a-fA-F0-9]{40}$\"\r\n              },\r\n              \"sentiment_analyst\": {\r\n                \"type\": \"string\",\r\n                \"pattern\": \"^0x[a-fA-F0-9]{40}$\"\r\n              }\r\n            },\r\n            \"required\": [\r\n              \"solidity_auditor\",\r\n              \"defi_economist\",\r\n              \"sentiment_analyst\"\r\n            ],\r\n            \"additionalProperties\": false,\r\n            \"description\": \"Deprecated in V2; use selectionId instead.\"\r\n          },\r\n          \"selectionId\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 1\r\n          },\r\n          \"disclosureManifest\": {\r\n            \"type\": \"object\",\r\n            \"properties\": {\r\n              \"schemaVersion\": {\r\n                \"type\": \"string\",\r\n                \"const\": \"farmdash-acp-disclosure/v1\"\r\n              },\r\n              \"categories\": {\r\n                \"type\": \"array\",\r\n                \"items\": {\r\n                  \"type\": \"string\",\r\n                  \"enum\": [\r\n                    \"transaction_intent\",\r\n                    \"token_addresses\",\r\n                    \"wallet_address\",\r\n                    \"amounts\",\r\n                    \"calldata\",\r\n                    \"strategy_context\",\r\n                    \"proprietary_context\",\r\n                    \"personal_data\",\r\n                    \"credentials_override\"\r\n                  ]\r\n                },\r\n                \"minItems\": 1,\r\n                \"maxItems\": 16\r\n              },\r\n              \"secretScan\": {\r\n                \"type\": \"string\",\r\n                \"enum\": [\r\n                  \"passed\",\r\n                  \"overridden\"\r\n                ]\r\n              },\r\n              \"overrideReasonHash\": {\r\n                \"type\": \"string\",\r\n                \"pattern\": \"^[a-f0-9]{64}$\"\r\n              }\r\n            },\r\n            \"required\": [\r\n              \"schemaVersion\",\r\n              \"categories\",\r\n              \"secretScan\"\r\n            ],\r\n            \"additionalProperties\": false\r\n          },\r\n          \"approvalNonce\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^\\\\d{10,20}$\"\r\n          },\r\n          \"approvalExpiresAt\": {\r\n            \"type\": \"string\",\r\n            \"format\": \"date-time\"\r\n          }\r\n        },\r\n        \"required\": [\r\n          \"sessionId\",\r\n          \"agentAddress\",\r\n          \"sessionToken\",\r\n          \"idempotencyKey\",\r\n          \"taskCommitmentHash\",\r\n          \"simulationId\",\r\n          \"maxPaymentUnits\",\r\n          \"selectionId\",\r\n          \"disclosureManifest\",\r\n          \"approvalNonce\",\r\n          \"approvalExpiresAt\"\r\n        ],\r\n        \"additionalProperties\": false,\r\n        \"$schema\": \"http://json-schema.org/draft-07/schema#\"\r\n      },\r\n      \"outputHints\": [\r\n        \"Immutable evidence summary and draft\",\r\n        \"Exact Base-8453 EIP-712 data for local wallet review; no funds move\"\r\n      ],\r\n      \"category\": \"write\"\r\n    },\r\n    {\r\n      \"name\": \"authorize_virtuals_tender_v2\",\r\n      \"description\": \"Verifies the exact local customer-wallet V2 signature plus deployment and provider readiness, then authorizes only that committed draft. Never fabricate or relay a private key. Authorization does not create or fund ACP jobs.\",\r\n      \"inputSchema\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"sessionId\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 1,\r\n            \"maxLength\": 200\r\n          },\r\n          \"agentAddress\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^0x[a-fA-F0-9]{40}$\"\r\n          },\r\n          \"sessionToken\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 32,\r\n            \"maxLength\": 256\r\n          },\r\n          \"tenderId\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^fdat_[A-Za-z0-9_-]{8,59}$\"\r\n          },\r\n          \"nonce\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^\\\\d{10,20}$\"\r\n          },\r\n          \"expiresAt\": {\r\n            \"type\": \"string\",\r\n            \"format\": \"date-time\"\r\n          },\r\n          \"signature\": {\r\n            \"type\": \"string\",\r\n            \"maxLength\": 16386,\r\n            \"pattern\": \"^0x[0-9a-fA-F]+$\"\r\n          }\r\n        },\r\n        \"required\": [\r\n          \"sessionId\",\r\n          \"agentAddress\",\r\n          \"sessionToken\",\r\n          \"tenderId\",\r\n          \"nonce\",\r\n          \"expiresAt\",\r\n          \"signature\"\r\n        ],\r\n        \"additionalProperties\": false,\r\n        \"$schema\": \"http://json-schema.org/draft-07/schema#\"\r\n      },\r\n      \"outputHints\": [\r\n        \"Authorized tender and sanitized provider-readiness result\"\r\n      ],\r\n      \"category\": \"write\"\r\n    },\r\n    {\r\n      \"name\": \"get_virtuals_tender\",\r\n      \"description\": \"Reads only the authenticated session's tender, role bindings, funding reservations, settlement attempts, and immutable receipt observations. Use it to resume after a crash and before any funding or reconciliation decision.\",\r\n      \"inputSchema\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"sessionId\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 1,\r\n            \"maxLength\": 200\r\n          },\r\n          \"agentAddress\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^0x[a-fA-F0-9]{40}$\"\r\n          },\r\n          \"sessionToken\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 32,\r\n            \"maxLength\": 256\r\n          },\r\n          \"tenderId\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^fdat_[A-Za-z0-9_-]{8,59}$\"\r\n          }\r\n        },\r\n        \"required\": [\r\n          \"sessionId\",\r\n          \"agentAddress\",\r\n          \"sessionToken\",\r\n          \"tenderId\"\r\n        ],\r\n        \"additionalProperties\": false,\r\n        \"$schema\": \"http://json-schema.org/draft-07/schema#\"\r\n      },\r\n      \"outputHints\": [\r\n        \"Tenant-scoped tender and durable lifecycle state\"\r\n      ],\r\n      \"category\": \"read\"\r\n    },\r\n    {\r\n      \"name\": \"cancel_virtuals_tender\",\r\n      \"description\": \"Cancels only an owned non-spendable draft. It cannot erase, cancel, or reverse an on-chain ACP job.\",\r\n      \"inputSchema\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"sessionId\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 1,\r\n            \"maxLength\": 200\r\n          },\r\n          \"agentAddress\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^0x[a-fA-F0-9]{40}$\"\r\n          },\r\n          \"sessionToken\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 32,\r\n            \"maxLength\": 256\r\n          },\r\n          \"tenderId\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^fdat_[A-Za-z0-9_-]{8,59}$\"\r\n          }\r\n        },\r\n        \"required\": [\r\n          \"sessionId\",\r\n          \"agentAddress\",\r\n          \"sessionToken\",\r\n          \"tenderId\"\r\n        ],\r\n        \"additionalProperties\": false,\r\n        \"$schema\": \"http://json-schema.org/draft-07/schema#\"\r\n      },\r\n      \"outputHints\": [\r\n        \"Durable cancellation status\"\r\n      ],\r\n      \"category\": \"write\"\r\n    },\r\n    {\r\n      \"name\": \"bind_virtuals_tender_job\",\r\n      \"description\": \"Binds an ACP job already created by the local customer connector. FarmDash independently verifies Base chain, client, committed provider, evaluator address, and evaluator key version before accepting the immutable role binding.\",\r\n      \"inputSchema\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"sessionId\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 1,\r\n            \"maxLength\": 200\r\n          },\r\n          \"agentAddress\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^0x[a-fA-F0-9]{40}$\"\r\n          },\r\n          \"sessionToken\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 32,\r\n            \"maxLength\": 256\r\n          },\r\n          \"tenderId\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^fdat_[A-Za-z0-9_-]{8,59}$\"\r\n          },\r\n          \"role\": {\r\n            \"type\": \"string\",\r\n            \"enum\": [\r\n              \"solidity_auditor\",\r\n              \"defi_economist\",\r\n              \"sentiment_analyst\"\r\n            ]\r\n          },\r\n          \"onchainJobId\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^[1-9]\\\\d{0,77}$\"\r\n          }\r\n        },\r\n        \"required\": [\r\n          \"sessionId\",\r\n          \"agentAddress\",\r\n          \"sessionToken\",\r\n          \"tenderId\",\r\n          \"role\",\r\n          \"onchainJobId\"\r\n        ],\r\n        \"additionalProperties\": false,\r\n        \"$schema\": \"http://json-schema.org/draft-07/schema#\"\r\n      },\r\n      \"outputHints\": [\r\n        \"Verified binding and updated tender status\"\r\n      ],\r\n      \"category\": \"write\"\r\n    },\r\n    {\r\n      \"name\": \"reserve_virtuals_tender_funding_v2\",\r\n      \"description\": \"Atomically reserves one exact on-chain role budget against the customer-signed aggregate cap. This accounting action cannot approve a token allowance, sign a transaction, or spend customer funds.\",\r\n      \"inputSchema\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"sessionId\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 1,\r\n            \"maxLength\": 200\r\n          },\r\n          \"agentAddress\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^0x[a-fA-F0-9]{40}$\"\r\n          },\r\n          \"sessionToken\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 32,\r\n            \"maxLength\": 256\r\n          },\r\n          \"tenderId\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^fdat_[A-Za-z0-9_-]{8,59}$\"\r\n          },\r\n          \"role\": {\r\n            \"type\": \"string\",\r\n            \"enum\": [\r\n              \"solidity_auditor\",\r\n              \"defi_economist\",\r\n              \"sentiment_analyst\"\r\n            ]\r\n          },\r\n          \"onchainJobId\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^[1-9]\\\\d{0,77}$\"\r\n          },\r\n          \"amountUnits\": {\r\n            \"$ref\": \"#/properties/onchainJobId\"\r\n          }\r\n        },\r\n        \"required\": [\r\n          \"sessionId\",\r\n          \"agentAddress\",\r\n          \"sessionToken\",\r\n          \"tenderId\",\r\n          \"role\",\r\n          \"onchainJobId\",\r\n          \"amountUnits\"\r\n        ],\r\n        \"additionalProperties\": false,\r\n        \"$schema\": \"http://json-schema.org/draft-07/schema#\"\r\n      },\r\n      \"outputHints\": [\r\n        \"Durable reservation ID, amount, state, and lease metadata\"\r\n      ],\r\n      \"category\": \"write\"\r\n    },\r\n    {\r\n      \"name\": \"record_virtuals_tender_funding_v2\",\r\n      \"description\": \"Records one to four canonical Base transaction hashes only after the local customer wallet submitted an existing reservation. This tool never broadcasts a transaction. Reuse the operation journal after crashes; do not fund the same role again.\",\r\n      \"inputSchema\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"sessionId\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 1,\r\n            \"maxLength\": 200\r\n          },\r\n          \"agentAddress\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^0x[a-fA-F0-9]{40}$\"\r\n          },\r\n          \"sessionToken\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 32,\r\n            \"maxLength\": 256\r\n          },\r\n          \"tenderId\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^fdat_[A-Za-z0-9_-]{8,59}$\"\r\n          },\r\n          \"reservationId\": {\r\n            \"type\": \"string\",\r\n            \"format\": \"uuid\"\r\n          },\r\n          \"transactionHashes\": {\r\n            \"type\": \"array\",\r\n            \"items\": {\r\n              \"type\": \"string\",\r\n              \"pattern\": \"^0x[a-fA-F0-9]{64}$\"\r\n            },\r\n            \"minItems\": 1,\r\n            \"maxItems\": 4\r\n          }\r\n        },\r\n        \"required\": [\r\n          \"sessionId\",\r\n          \"agentAddress\",\r\n          \"sessionToken\",\r\n          \"tenderId\",\r\n          \"reservationId\",\r\n          \"transactionHashes\"\r\n        ],\r\n        \"additionalProperties\": false,\r\n        \"$schema\": \"http://json-schema.org/draft-07/schema#\"\r\n      },\r\n      \"outputHints\": [\r\n        \"Durable funding-submission record\"\r\n      ],\r\n      \"category\": \"write\"\r\n    },\r\n    {\r\n      \"name\": \"evaluate_virtuals_tender\",\r\n      \"description\": \"This is an execution-sensitive evaluator action. Call it only after all three jobs are bound, exactly funded by the customer connector, and have submitted the required structured V2 verdict. FarmDash rechecks evidence, budgets, confidence, high/critical findings, client/provider/evaluator identities, and then may complete or reject the committed escrowed jobs. Ambiguous broadcasts, reverts, dropped receipts, and reorgs require manual reconciliation and must never be blindly retried.\",\r\n      \"inputSchema\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"sessionId\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 1,\r\n            \"maxLength\": 200\r\n          },\r\n          \"agentAddress\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^0x[a-fA-F0-9]{40}$\"\r\n          },\r\n          \"sessionToken\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 32,\r\n            \"maxLength\": 256\r\n          },\r\n          \"tenderId\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^fdat_[A-Za-z0-9_-]{8,59}$\"\r\n          }\r\n        },\r\n        \"required\": [\r\n          \"sessionId\",\r\n          \"agentAddress\",\r\n          \"sessionToken\",\r\n          \"tenderId\"\r\n        ],\r\n        \"additionalProperties\": false,\r\n        \"$schema\": \"http://json-schema.org/draft-07/schema#\"\r\n      },\r\n      \"outputHints\": [\r\n        \"Deterministic evaluation commitment and receipt-backed settlement progress\"\r\n      ],\r\n      \"category\": \"execution\"\r\n    },\r\n    {\r\n      \"name\": \"get_trail_heat\",\r\n      \"description\": \"Returns the live Trail Heat protocol dataset ranked 0–100 by score.\\r\\n\\r\\nTrail Heat Formula: live scoring combines 40/90 raw points calibrated TVL (44.4% effective), 25/90 raw points seven-day TVL momentum (27.8% effective), 15/90 raw points chain diversification (16.7% effective), and 10/90 raw points category baseline comparison (11.1% effective), normalized to a 0–100 scale. Editorial notes and flags are strictly isolated as metadata and excluded from quantitative scores. Static catalog surfaces use a separately labeled editorial discovery heuristic with TVL, status, category prior, hot momentum, and recency; this is not canonical Trail Heat. Unresolved upstream entities return `score: null`, not a fabricated quantitative score.\\r\\n\\r\\nScore interpretation:\\r\\n* 80–100: Highest research priority under the current quantitative heuristic. Explain the score inputs, freshness, and risk context; do not infer eligibility or recommend entry from the score alone.\\r\\n* 60–79: Material research signal. Compare current first-party program evidence, liquidity, costs, and wallet fit.\\r\\n* 40–59: Lower-priority or mixed-signal research candidate. Preserve uncertainty and explain what is missing.\\r\\n* Below 40: Low quantitative priority under the current inputs. Mention when relevant to the user's question; do not hide it merely because the score is low.\\r\\n\\r\\nExample: \\\"Altura is scoring 84 on Trail Heat under the current quantitative model. That makes it a high-priority research candidate, not an 84% airdrop probability or an instruction to deploy capital. I can show the score evidence, current campaign status, risks, and any available FarmDash route separately.\\\" Takes no parameters.\",\r\n      \"inputSchema\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {},\r\n        \"additionalProperties\": false,\r\n        \"$schema\": \"http://json-schema.org/draft-07/schema#\"\r\n      },\r\n      \"outputHints\": [],\r\n      \"category\": \"read\"\r\n    },\r\n    {\r\n      \"name\": \"get_chain_breakdown\",\r\n      \"description\": \"Protocol distribution across blockchain networks: protocol count, percentage, campaign/status metadata, and category context by chain.\\r\\n\\r\\nUse it to understand where the catalog is concentrated, not as proof that a chain has more valuable airdrops. If the user later chooses to move capital, first check live capability status and the compatibility route lifecycle; an `execute_swap` tool name does not itself mean FarmDash broadcasts a bridge transaction. Takes no parameters.\",\r\n      \"inputSchema\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {},\r\n        \"additionalProperties\": false,\r\n        \"$schema\": \"http://json-schema.org/draft-07/schema#\"\r\n      },\r\n      \"outputHints\": [],\r\n      \"category\": \"read\"\r\n    },\r\n    {\r\n      \"name\": \"get_swap_quote\",\r\n      \"description\": \"Get swap pricing in two explicit modes. Without idempotencyKey, return a provider-neutral market estimate with zero trading-provider calls. With idempotencyKey plus walletAddress, toAddress and slippage, create or reuse a firm wallet-bound quote intent from an active provider (LI.FI or Relay; 0x only if runtime status reports it reinstated) and return simulationRequirements.intent_id for simulate_swap_execution. x402 is machine-payment/access infrastructure, not a swap provider. Resolve any approval/signature prerequisites locally and re-quote when instructed before simulation.\",\r\n      \"inputSchema\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"fromChainId\": {\r\n            \"type\": \"integer\"\r\n          },\r\n          \"toChainId\": {\r\n            \"type\": \"integer\"\r\n          },\r\n          \"fromToken\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^0x[a-fA-F0-9]{40}$\",\r\n            \"description\": \"ERC-20 token contract address deployed on the corresponding chain. Do not pass a wallet/EOA; the token address and chain ID must match.\"\r\n          },\r\n          \"toToken\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^0x[a-fA-F0-9]{40}$\",\r\n            \"description\": \"ERC-20 token contract address deployed on the corresponding chain. Do not pass a wallet/EOA; the token address and chain ID must match.\"\r\n          },\r\n          \"fromAmount\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^[0-9]+$\"\r\n          },\r\n          \"protocol\": {\r\n            \"type\": \"string\",\r\n            \"enum\": [\r\n              \"lifi\",\r\n              \"relay\"\r\n            ]\r\n          },\r\n          \"walletAddress\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^0x[a-fA-F0-9]{40}$\"\r\n          },\r\n          \"toAddress\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^0x[a-fA-F0-9]{40}$\"\r\n          },\r\n          \"slippage\": {\r\n            \"type\": \"number\",\r\n            \"minimum\": 0.01,\r\n            \"maximum\": 5\r\n          },\r\n          \"expectedUpsideUsd\": {\r\n            \"type\": \"number\"\r\n          },\r\n          \"riskBufferUsd\": {\r\n            \"type\": \"number\"\r\n          },\r\n          \"healthFactor\": {\r\n            \"type\": \"number\"\r\n          },\r\n          \"liquidationBufferPct\": {\r\n            \"type\": \"number\"\r\n          },\r\n          \"safetyMode\": {\r\n            \"type\": \"string\",\r\n            \"enum\": [\r\n              \"strict\",\r\n              \"balanced\"\r\n            ]\r\n          },\r\n          \"idempotencyKey\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 1,\r\n            \"maxLength\": 128\r\n          }\r\n        },\r\n        \"required\": [\r\n          \"fromChainId\",\r\n          \"toChainId\",\r\n          \"fromToken\",\r\n          \"toToken\",\r\n          \"fromAmount\"\r\n        ],\r\n        \"additionalProperties\": false,\r\n        \"$schema\": \"http://json-schema.org/draft-07/schema#\"\r\n      },\r\n      \"outputHints\": [],\r\n      \"category\": \"read\"\r\n    },\r\n    {\r\n      \"name\": \"simulate_swap_execution\",\r\n      \"description\": \"Mandatory pre-execution simulation for a wallet-bound quote intent. Input:\\r\\n```json\\r\\n{\\r\\n  \\\"intentId\\\": \\\"fd_intent_...\\\",\\r\\n  \\\"walletAddress\\\": \\\"0x...\\\"\\r\\n}\\r\\n```\\r\\nThe response includes `simulation_id`, `success`, `gas_used`, `gas_cost_usd`, `output_amount`, `mev_risk`, `revert_reason`, and `valid_until`.\\r\\n\\r\\nRules:\\r\\n* If `success` is false, halt execution and report the failure details, as signing a failed transaction is prohibited.\\r\\n* If `valid_until` has passed, re-quote and re-simulate.\\r\\n* If `mev_risk` is medium or high, disclose it before signing.\\r\\n* Pass the returned `simulation_id` as `simulationId` to `execute_swap`.\\r\\n\\r\\n**Pre-Execution Binding:**\\r\\nThe simulation binds the wallet, route, amount, tokens, chains, slippage, protocol, and transaction calldata to short-lived request and transaction fingerprints. If the quote or request changes, halt, re-quote, and re-simulate. Do not claim that the response contains `decision_hash`, `price_data_proof`, or `external_anchor`; those fields are not part of the current API contract.\",\r\n      \"inputSchema\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"intentId\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 1\r\n          },\r\n          \"walletAddress\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^0x[a-fA-F0-9]{40}$\"\r\n          }\r\n        },\r\n        \"required\": [\r\n          \"intentId\",\r\n          \"walletAddress\"\r\n        ],\r\n        \"additionalProperties\": false,\r\n        \"$schema\": \"http://json-schema.org/draft-07/schema#\"\r\n      },\r\n      \"outputHints\": [],\r\n      \"category\": \"read\"\r\n    },\r\n    {\r\n      \"name\": \"execute_swap\",\r\n      \"description\": \"Prepare a compatibility swap only after the required policy, simulation, signature, and quote-freshness gates pass. Released quote providers are selected dynamically based on live capability status. FarmDash returns the prepared transaction for the customer or agent wallet to submit; FarmDash does not broadcast the compatibility transaction and preparation is not confirmation or settlement.\",\r\n      \"inputSchema\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"fromChainId\": {\r\n            \"type\": \"integer\"\r\n          },\r\n          \"toChainId\": {\r\n            \"type\": \"integer\"\r\n          },\r\n          \"fromToken\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^0x[a-fA-F0-9]{40}$\",\r\n            \"description\": \"ERC-20 token contract address deployed on the corresponding chain. Do not pass a wallet/EOA; the token address and chain ID must match.\"\r\n          },\r\n          \"toToken\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^0x[a-fA-F0-9]{40}$\",\r\n            \"description\": \"ERC-20 token contract address deployed on the corresponding chain. Do not pass a wallet/EOA; the token address and chain ID must match.\"\r\n          },\r\n          \"fromAmount\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^[0-9]+$\"\r\n          },\r\n          \"agentAddress\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^0x[a-fA-F0-9]{40}$\"\r\n          },\r\n          \"toAddress\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^0x[a-fA-F0-9]{40}$\"\r\n          },\r\n          \"nonce\": {\r\n            \"type\": \"string\"\r\n          },\r\n          \"signature\": {\r\n            \"type\": \"string\"\r\n          },\r\n          \"simulationId\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 1\r\n          },\r\n          \"intentId\": {\r\n            \"type\": \"string\"\r\n          },\r\n          \"slippage\": {\r\n            \"type\": \"number\"\r\n          },\r\n          \"protocol\": {\r\n            \"type\": \"string\",\r\n            \"enum\": [\r\n              \"lifi\",\r\n              \"relay\"\r\n            ]\r\n          }\r\n        },\r\n        \"required\": [\r\n          \"fromChainId\",\r\n          \"toChainId\",\r\n          \"fromToken\",\r\n          \"toToken\",\r\n          \"fromAmount\",\r\n          \"agentAddress\",\r\n          \"toAddress\",\r\n          \"nonce\",\r\n          \"signature\",\r\n          \"simulationId\"\r\n        ],\r\n        \"additionalProperties\": false,\r\n        \"$schema\": \"http://json-schema.org/draft-07/schema#\"\r\n      },\r\n      \"outputHints\": [],\r\n      \"category\": \"execution\"\r\n    },\r\n    {\r\n      \"name\": \"confirm_swap\",\r\n      \"description\": \"Confirm settlement of a FarmDash fee event for a compatibility swap that the customer or agent wallet has already signed, submitted and broadcast. FarmDash prepares the compatibility transaction; the wallet broadcasts it, so a transaction hash exists only after that broadcast and both feeEventId and transactionHash are required. Authenticated owning-session credentials are required (sessionId, agentAddress, sessionToken); sessionToken is session/authentication authority, not wallet execution or signing authority. FarmDash verifies the canonical-chain receipt and required finality together with the exact expected fee transfer before durably marking the fee event settled. Re-submitting the same valid confirmation is idempotent. confirm_swap never broadcasts the compatibility swap.\",\r\n      \"inputSchema\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"sessionId\": {\r\n            \"type\": \"string\"\r\n          },\r\n          \"agentAddress\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^0x[a-fA-F0-9]{40}$\"\r\n          },\r\n          \"sessionToken\": {\r\n            \"type\": \"string\"\r\n          },\r\n          \"feeEventId\": {\r\n            \"type\": \"string\"\r\n          },\r\n          \"txHash\": {\r\n            \"type\": \"string\"\r\n          }\r\n        },\r\n        \"required\": [\r\n          \"sessionId\",\r\n          \"agentAddress\",\r\n          \"sessionToken\",\r\n          \"feeEventId\",\r\n          \"txHash\"\r\n        ],\r\n        \"additionalProperties\": false,\r\n        \"$schema\": \"http://json-schema.org/draft-07/schema#\"\r\n      },\r\n      \"outputHints\": [],\r\n      \"category\": \"write\"\r\n    },\r\n    {\r\n      \"name\": \"get_agent_activity\",\r\n      \"description\": \"Lists durable FarmDash receipts, optionally filtered by intent and status. Use only fields returned by the receipt API; do not claim shadow-mode drift, venue fills, or realized P&L unless present.\",\r\n      \"inputSchema\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"sessionId\": {\r\n            \"type\": \"string\"\r\n          },\r\n          \"agentAddress\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^0x[a-fA-F0-9]{40}$\"\r\n          },\r\n          \"sessionToken\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 32,\r\n            \"maxLength\": 256\r\n          },\r\n          \"intentId\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^fdi\\\\_\"\r\n          },\r\n          \"status\": {\r\n            \"type\": \"string\",\r\n            \"enum\": [\r\n              \"SUBMITTED\",\r\n              \"CONFIRMED\",\r\n              \"FAILED\",\r\n              \"REJECTED\"\r\n            ]\r\n          },\r\n          \"limit\": {\r\n            \"type\": \"integer\",\r\n            \"minimum\": 1,\r\n            \"maximum\": 250\r\n          }\r\n        },\r\n        \"additionalProperties\": false,\r\n        \"$schema\": \"http://json-schema.org/draft-07/schema#\"\r\n      },\r\n      \"outputHints\": [],\r\n      \"category\": \"read\"\r\n    },\r\n    {\r\n      \"name\": \"audit_sybil_risk\",\r\n      \"description\": \"Audits 1–10 EVM addresses for sybil risk.\\r\\n\\r\\nThis is a heuristic defensive audit, not a protocol eligibility verdict. Never call a low score \\\"clean,\\\" recommend a fresh wallet, or prescribe activity designed to change detection outcomes. For medium/high findings, pause automation, explain evidence and data quality, and direct the user to the protocol's rules or appeal process.\",\r\n      \"inputSchema\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"addresses\": {\r\n            \"type\": \"array\",\r\n            \"items\": {\r\n              \"type\": \"string\",\r\n              \"pattern\": \"^0x[a-fA-F0-9]{40}$\"\r\n            },\r\n            \"minItems\": 1,\r\n            \"maxItems\": 10\r\n          }\r\n        },\r\n        \"required\": [\r\n          \"addresses\"\r\n        ],\r\n        \"additionalProperties\": false,\r\n        \"$schema\": \"http://json-schema.org/draft-07/schema#\"\r\n      },\r\n      \"outputHints\": [],\r\n      \"category\": \"risk\"\r\n    },\r\n    {\r\n      \"name\": \"simulate_points\",\r\n      \"description\": \"Projects FarmScore for a farming configuration.\\r\\n\\r\\nFormula: `(Volume/$1k × 50) + (Balance × 1) + (Txs × 10) + (LP × 2) + (Fees × 100)`\\r\\n\\r\\nRun simulations across multiple protocols to help the user compare projected points-per-dollar. Present the comparison so they can make an informed choice.\",\r\n      \"inputSchema\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"totalVolumeUsd\": {\r\n            \"type\": \"number\",\r\n            \"minimum\": 0\r\n          },\r\n          \"txCount\": {\r\n            \"type\": \"integer\",\r\n            \"minimum\": 0\r\n          },\r\n          \"daysActive\": {\r\n            \"type\": \"integer\",\r\n            \"minimum\": 0\r\n          },\r\n          \"walletBalanceUsd\": {\r\n            \"type\": \"number\",\r\n            \"minimum\": 0\r\n          },\r\n          \"uniqueContracts\": {\r\n            \"type\": \"integer\",\r\n            \"minimum\": 0\r\n          },\r\n          \"isCexFundingOnly\": {\r\n            \"type\": \"boolean\"\r\n          },\r\n          \"protocolPoints\": {\r\n            \"type\": \"object\",\r\n            \"additionalProperties\": {\r\n              \"type\": \"number\"\r\n            }\r\n          }\r\n        },\r\n        \"required\": [\r\n          \"totalVolumeUsd\",\r\n          \"txCount\",\r\n          \"daysActive\",\r\n          \"walletBalanceUsd\",\r\n          \"uniqueContracts\",\r\n          \"isCexFundingOnly\",\r\n          \"protocolPoints\"\r\n        ],\r\n        \"additionalProperties\": false,\r\n        \"$schema\": \"http://json-schema.org/draft-07/schema#\"\r\n      },\r\n      \"outputHints\": [],\r\n      \"category\": \"read\"\r\n    },\r\n    {\r\n      \"name\": \"optimize_portfolio\",\r\n      \"description\": \"Personalized protocol recommendations based on current positions.\\r\\n\\r\\nThis tool often identifies rebalancing opportunities. When it suggests allocation changes, offer to quote the required swaps so the user can act immediately if they choose.\",\r\n      \"inputSchema\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"currentProtocols\": {\r\n            \"type\": \"array\",\r\n            \"items\": {\r\n              \"type\": \"string\"\r\n            }\r\n          },\r\n          \"riskPreference\": {\r\n            \"type\": \"string\",\r\n            \"enum\": [\r\n              \"conservative\",\r\n              \"balanced\",\r\n              \"aggressive\"\r\n            ]\r\n          },\r\n          \"chains\": {\r\n            \"type\": \"array\",\r\n            \"items\": {\r\n              \"type\": \"string\"\r\n            }\r\n          },\r\n          \"budget\": {\r\n            \"type\": \"string\",\r\n            \"enum\": [\r\n              \"low\",\r\n              \"medium\",\r\n              \"high\"\r\n            ]\r\n          }\r\n        },\r\n        \"required\": [\r\n          \"currentProtocols\",\r\n          \"riskPreference\"\r\n        ],\r\n        \"additionalProperties\": false,\r\n        \"$schema\": \"http://json-schema.org/draft-07/schema#\"\r\n      },\r\n      \"outputHints\": [],\r\n      \"category\": \"read\"\r\n    },\r\n    {\r\n      \"name\": \"get_historical_trailheat\",\r\n      \"description\": \"Historical Trail Heat snapshots, 1–365 days.\\r\\n\\r\\nTrend analysis helps the user make better timing decisions:\\r\\n* Rising trend → Early entry may capture more value.\\r\\n* Falling trend → Consider taking profits or reallocating.\",\r\n      \"inputSchema\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"protocolId\": {\r\n            \"type\": \"string\"\r\n          },\r\n          \"days\": {\r\n            \"type\": \"integer\",\r\n            \"minimum\": 1,\r\n            \"maximum\": 365,\r\n            \"default\": 30\r\n          }\r\n        },\r\n        \"additionalProperties\": false,\r\n        \"$schema\": \"http://json-schema.org/draft-07/schema#\"\r\n      },\r\n      \"outputHints\": [],\r\n      \"category\": \"read\"\r\n    },\r\n    {\r\n      \"name\": \"get_agent_events\",\r\n      \"description\": \"Real-time protocol events stream.\\r\\n\\r\\nEvents that may require user action include: new airdrop announcements, upcoming snapshots, and multiplier changes. Present these with context and let the user decide how to respond. Takes no parameters.\",\r\n      \"inputSchema\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {},\r\n        \"additionalProperties\": false,\r\n        \"$schema\": \"http://json-schema.org/draft-07/schema#\"\r\n      },\r\n      \"outputHints\": [],\r\n      \"category\": \"read\"\r\n    }\r\n  ],\r\n  \"operatingRules\": [],\r\n  \"requiredEnv\": {\r\n    \"FARMDASH_API_KEY\": {\r\n      \"description\": \"Optional Bearer token for Pioneer or Syndicate tier. Pioneer is $39.99/mo for 1,500 req/day and full datasets; Syndicate is $199/mo for 50k req/day, webhooks, unrestricted CORS, and advanced session/control tooling for teams and serious agents. Free Scout tier works without any key or with the public fd_scout_free token. Never share private keys, seed phrases, or mnemonics with this skill. Wallet-changing actions require EIP-191/EIP-712 local signing or an explicitly configured bounded delegation.\",\r\n      \"required\": false\r\n    }\r\n  },\r\n  \"links\": {\r\n    \"website\": \"https://www.farmdash.one/\",\r\n    \"agentHub\": \"https://www.farmdash.one/agents\",\r\n    \"canonicalSkill\": \"https://www.farmdash.one/openclaw-skills/farmdash-signal-architect/SKILL.md\",\r\n    \"documentation\": \"https://www.farmdash.one/docs\",\r\n    \"status\": \"https://www.farmdash.one/api/v1/agent/status\",\r\n    \"openApi\": \"https://www.farmdash.one/agents/openapi.yaml\",\r\n    \"mcpDiscovery\": \"https://www.farmdash.one/.well-known/mcp.json\",\r\n    \"fees\": \"https://www.farmdash.one/fees\",\r\n    \"security\": \"https://www.farmdash.one/security\"\r\n  }\r\n}\n\nFile v1.2.25:openapi.yaml\n\nopenapi: 3.0.3\r\ninfo:\r\n  title: FarmDash Signal Architect API\r\n  version: 1.2.0\r\n  description: |\r\n    Customer-controlled intelligence and workflow API for DeFi agents and serious airdrop farmers:\r\n    structured opportunity intelligence, quote generation, user-authorized transaction preparation,\r\n    x402 flows, and fee history. FarmDash does not request seed phrases or raw wallet private keys.\r\n    Compatibility swap routes do not custody user funds; separately configured venue or MPC\r\n    delegations remain subject to their provider controls and explicit policy bounds.\r\n\r\n    ## Authentication\r\n    - **Scout (Free)**: No auth. 30 requests/24h per IP.\r\n    - **Pioneer**: `Authorization: Bearer <PIONEER_KEY>`. 1,500 requests/day.\r\n    - **Syndicate**: `Authorization: Bearer <SYNDICATE_KEY>`. $199/mo USDC, 50,000 requests/day, webhooks, unrestricted CORS, and advanced control/session tooling for teams and serious agents.\r\n    - **Swap execution**: Requires fresh quote review plus EIP-191 agent wallet signature.\r\n    - **Delegation/autopilot**: Requires explicit user-configured budgets, allowlists, and revocation path.\r\n    - **Privacy**: Public wallet addresses, token addresses, chain IDs, amounts, signatures, request IDs, and analytics headers may be sent to FarmDash; private keys and seed phrases are never sent.\r\n\r\n    ## Dust Storm Protocol\r\n    If an upstream API fails, FarmDash returns a typed error or a previously\r\n    validated stale response with a `warnings` array containing\r\n    `{ kind: \"dust_storm\", message: \"...\" }`. Missing data remains unknown\r\n    rather than being converted into a synthetic zero.\r\n\r\n    ## x402 Payment Wall\r\n    When free-tier limits are exceeded, responses include `X-Payment-*` headers\r\n    describing a one-off USDC payment on Base that unlocks the current request.\r\n  contact:\r\n    name: FarmDash Engineering\r\n    url: https://www.farmdash.one/agents\r\n  license:\r\n    name: MIT\r\n\r\nservers:\r\n  - url: https://www.farmdash.one/api\r\n    description: Production\r\n\r\npaths:\r\n  /v1/agent/protocols:\r\n    get:\r\n      operationId: getProtocolCatalog\r\n      summary: Get catalog protocol directory (discovery heuristic scores)\r\n      description: |\r\n        Returns the curated FarmDash catalog with EDITORIAL discovery heuristic scores (catalog-editorial-v1). NOT live Trail Heat — canonical quantitative Trail Heat: /v1/trail-heat.\r\n        Live quantitative Trail Heat uses calibrated TVL, seven-day TVL momentum, chain diversification,\r\n        and category outperformance when upstream data is available. Editorial notes are separate\r\n        metadata and excluded from the quantitative score. Static tracker pages use a distinct catalog\r\n        discovery heuristic with TVL, status, category prior,\r\n        hot momentum, and recency.\r\n        Scout tier receives top 3 with encrypted numeric values.\r\n        Pioneer/Syndicate tiers receive the full unencrypted dataset.\r\n      tags: [Intelligence]\r\n      security:\r\n        - bearerAuth: []\r\n        - {}\r\n      parameters:\r\n        - $ref: '#/components/parameters/X-ClawHub-Skill'\r\n      responses:\r\n        '200':\r\n          description: Protocol dataset\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: '#/components/schemas/ProtocolsResponse'\r\n        '402':\r\n          description: Free-tier limit exceeded — x402 payment required\r\n          headers:\r\n            X-Payment-Required:\r\n              schema: { type: string }\r\n            X-Payment-Address:\r\n              schema: { type: string }\r\n              description: Treasury wallet (USDC on Base)\r\n            X-Payment-Token:\r\n              schema: { type: string }\r\n              description: USDC contract on Base\r\n            X-Payment-Amount:\r\n              schema: { type: string }\r\n              description: Quoted amount in token decimals (e.g. 10000 = 0.01 USDC default overage)\r\n            X-Payment-Chain-Id:\r\n              schema: { type: string }\r\n              description: \"8453 (Base)\"\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: '#/components/schemas/PaymentRequiredError'\r\n        '429':\r\n          description: Rate limit exceeded\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: '#/components/schemas/ErrorResponse'\r\n\r\n  /v1/agent/chain-breakdown:\r\n    get:\r\n      operationId: getChainBreakdown\r\n      summary: Get protocol distribution by chain\r\n      description: |\r\n        Aggregates the protocol directory by blockchain network.\r\n        Returns per-chain protocol counts, confirmed airdrops, points programs,\r\n        and category coverage. Scout tier receives top 3 chains with encrypted numerics.\r\n      tags: [Intelligence]\r\n      security:\r\n        - bearerAuth: []\r\n        - {}\r\n      parameters:\r\n        - $ref: '#/components/parameters/X-ClawHub-Skill'\r\n      responses:\r\n        '200':\r\n          description: Chain breakdown data\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: '#/components/schemas/ChainBreakdownResponse'\r\n        '402':\r\n          description: Free-tier limit exceeded\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: '#/components/schemas/PaymentRequiredError'\r\n        '429':\r\n          description: Rate limit exceeded\r\n\r\n  /agents/quote:\r\n    get:\r\n      operationId: getSwapQuote\r\n      summary: Get a token swap quote\r\n      description: |\r\n        Provider-neutral market estimate by default: returns an explicitly\r\n        labelled `market_estimate` (reference price, approximate output,\r\n        server fee tier, route compatibility, freshness) WITHOUT calling 0x,\r\n        LI.FI, or Relay trading APIs. Browsing, polling, previews, and\r\n        wallet-supplied GETs all receive estimation — a `walletAddress` alone\r\n        is exploratory context, never execution intent, and never fans out\r\n        into provider APIs. The estimate is intelligence, not a provider\r\n        quote: no executable calldata, no provider attribution, no liquidity\r\n        confirmation, never `executionReady: true`.\r\n        For execution, POST `/v1/agent/quote-intent` with exact parameters, a\r\n        real wallet, and an idempotency key to receive a firm single-provider\r\n        quote bound to an `intentId`; then re-call this endpoint with the\r\n        identical parameters plus `intentId` to serve the stored firm quote\r\n        with zero new provider calls. Changed parameters never reuse a stale\r\n        quote (`intent_params_changed`); unknown/expired intents return\r\n        `intent_not_found`. One intent contacts exactly one primary provider;\r\n        a sequential alternate follows only a genuine primary failure.\r\n        `mock=true` is not supported and returns a typed 400 without contacting a provider.\r\n      tags: [Swap]\r\n      parameters:\r\n        - $ref: '#/components/parameters/X-ClawHub-Skill'\r\n        - in: query\r\n          name: fromChainId\r\n          required: true\r\n          schema: { type: integer }\r\n          description: Source chain ID (e.g. 1 = Ethereum, 8453 = Base, 42161 = Arbitrum)\r\n        - in: query\r\n          name: toChainId\r\n          required: true\r\n          schema: { type: integer }\r\n          description: Destination chain ID\r\n        - in: query\r\n          name: fromToken\r\n          required: true\r\n          schema: { type: string, pattern: '^0x[a-fA-F0-9]{40}$' }\r\n          description: Source token contract address (checksummed)\r\n        - in: query\r\n          name: toToken\r\n          required: true\r\n          schema: { type: string, pattern: '^0x[a-fA-F0-9]{40}$' }\r\n          description: Destination token contract address\r\n        - in: query\r\n          name: fromAmount\r\n          required: true\r\n          schema: { type: string, pattern: '^\\d+$' }\r\n          description: Amount in wei (no leading zeros)\r\n        - in: query\r\n          name: protocol\r\n          required: false\r\n          schema:\r\n            type: string\r\n            enum: [lifi, relay]\r\n          description: Force a specific routing protocol (auto-selected if omitted)\r\n        - in: query\r\n          name: walletAddress\r\n          required: false\r\n          schema: { type: string, pattern: '^0x[a-fA-F0-9]{40}$' }\r\n          description: Optional real wallet. Exploratory context only — a wallet alone never triggers provider quoting. For execution, POST /api/v1/agent/quote-intent.\r\n        - in: query\r\n          name: toAddress\r\n          required: false\r\n          schema: { type: string, pattern: '^0x[a-fA-F0-9]{40}$' }\r\n          description: Optional destination wallet override for previewing the signed route\r\n        - in: query\r\n          name: slippage\r\n          required: false\r\n          schema: { type: number, minimum: 0.01, maximum: 5 }\r\n          description: Optional slippage tolerance in percent\r\n        - in: query\r\n          name: expectedUpsideUsd\r\n          required: false\r\n          schema: { type: number }\r\n          description: Optional upside estimate used to enforce positive net edge\r\n        - in: query\r\n          name: riskBufferUsd\r\n          required: false\r\n          schema: { type: number }\r\n          description: Optional execution-risk haircut added to total route cost\r\n        - in: query\r\n          name: healthFactor\r\n          required: false\r\n          schema: { type: number }\r\n          description: Optional health factor used for halt checks\r\n        - in: query\r\n          name: liquidationBufferPct\r\n          required: false\r\n          schema: { type: number }\r\n          description: Optional liquidation buffer percentage used for halt checks\r\n        - in: query\r\n          name: safetyMode\r\n          required: false\r\n          schema: { $ref: '#/components/schemas/SwapSafetyMode' }\r\n          description: \"`strict` halts on severe quote decay, `balanced` downgrades that condition to a warning\"\r\n        - in: query\r\n          name: intentId\r\n          required: false\r\n          schema: { type: string }\r\n          description: Execution-intent ID from POST /api/v1/agent/quote-intent. Serves the stored firm quote with zero new provider calls when all other parameters exactly match the intent; mismatches return intent_params_changed, unknown IDs return intent_not_found.\r\n      responses:\r\n        '200':\r\n          description: Market estimate (default) or stored firm quote when intentId is supplied and parameters match\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: '#/components/schemas/SwapQuoteResponse'\r\n        '400':\r\n          description: Invalid parameters\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: '#/components/schemas/ErrorResponse'\r\n        '402':\r\n          description: Free-tier limit exceeded\r\n        '404':\r\n          description: Unknown/expired intentId (intent_not_found)\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: '#/components/schemas/ErrorResponse'\r\n        '422':\r\n          description: Typed quote failure. Categories carry machine-readable retryable flags (e.g. no_liquidity/unsupported_pair retryable false; provider_rate_limited/provider_unavailable retryable true). Read attempts[] evidence per provider.\r\n        '429':\r\n          description: Rate limit exceeded\r\n        '502':\r\n          description: Typed live quote provider degradation (retryable). Includes provider rate-limit code quote_provider_rate_limited.\r\n        '504':\r\n          description: Live quote provider timed out. Code quote_provider_timeout, retryable true.\r\n\r\n  /v1/agent/market-estimate:\r\n    get:\r\n      operationId: getMarketEstimate\r\n      summary: Get a provider-neutral market estimate\r\n      description: |\r\n        Explicit estimation endpoint for browsing, previews, and walletless\r\n        exploration. Returns an explicitly labelled market_estimate (reference\r\n        price, approximate output, server fee tier, freshness) and makes zero\r\n        0x/LI.FI/Relay trading calls. Never executable, never attributed.\r\n        For execution, POST /v1/agent/quote-intent.\r\n      tags: [Swap]\r\n      parameters:\r\n        - $ref: '#/components/parameters/X-ClawHub-Skill'\r\n        - in: query\r\n          name: fromChainId\r\n          required: true\r\n          schema: { type: integer }\r\n        - in: query\r\n          name: toChainId\r\n          required: true\r\n          schema: { type: integer }\r\n        - in: query\r\n          name: fromToken\r\n          required: true\r\n          schema: { type: string, pattern: '^0x[a-fA-F0-9]{40}$' }\r\n        - in: query\r\n          name: toToken\r\n          required: true\r\n          schema: { type: string, pattern: '^0x[a-fA-F0-9]{40}$' }\r\n        - in: query\r\n          name: fromAmount\r\n          required: true\r\n          schema: { type: string, pattern: '^\\d+$' }\r\n      responses:\r\n        '200':\r\n          description: Market estimate\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: '#/components/schemas/SwapQuoteResponse'\r\n        '400':\r\n          description: Invalid parameters\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: '#/components/schemas/ErrorResponse'\r\n        '429':\r\n          description: Rate limit exceeded\r\n\r\n  /v1/agent/quote-intent:\r\n    post:\r\n      operationId: createQuoteIntent\r\n      summary: Create an execution intent with a firm single-provider quote\r\n      description: |\r\n        Explicit execution intent. Requires exact chain pair, token pair,\r\n        amount, real wallet/taker, destination, slippage, and a client\r\n        idempotency key; the fee tier is resolved server-side before any\r\n        provider call. One intent contacts exactly one primary provider; a\r\n        sequential alternate follows only a genuine primary failure.\r\n        Identical intents reuse the stored firm quote (HTTP 200 reused:true);\r\n        changed parameters never reuse a stale quote. The firm quote flows\r\n        through simulate, approval, and prepare without further provider\r\n        quote requests. Quote is not execution; FarmDash never signs or\r\n        broadcasts.\r\n      tags: [Swap]\r\n      requestBody:\r\n        required: true\r\n        content:\r\n          application/json:\r\n            schema:\r\n              type: object\r\n              required: [fromChainId, toChainId, fromToken, toToken, fromAmount, walletAddress, toAddress, slippage, idempotencyKey]\r\n              properties:\r\n                fromChainId: { type: integer }\r\n                toChainId: { type: integer }\r\n                fromToken: { type: string }\r\n                toToken: { type: string }\r\n                fromAmount: { type: string }\r\n                walletAddress: { type: string }\r\n                toAddress: { type: string }\r\n                slippage: { type: number, minimum: 0.01, maximum: 5 }\r\n                protocol: { type: string, enum: [lifi, relay] }\r\n                idempotencyKey: { type: string }\r\n      responses:\r\n        '201':\r\n          description: Firm quote bound to a new execution intent\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: '#/components/schemas/SwapQuoteResponse'\r\n        '200':\r\n          description: Stored firm quote reused for an identical intent\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: '#/components/schemas/SwapQuoteResponse'\r\n        '400':\r\n          description: Invalid parameters\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: '#/components/schemas/ErrorResponse'\r\n        '402':\r\n          description: Free-tier limit exceeded\r\n        '409':\r\n          description: This idempotencyKey was already used for a materially different request (idempotency_conflict). Generate a new key for a new logical swap.\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: '#/components/schemas/ErrorResponse'\r\n        '413':\r\n          description: Request body too large. Execution-facing bodies are capped at 32 KB.\r\n        '429':\r\n          description: Rate limit exceeded\r\n        '502':\r\n          description: Typed live quote provider degradation\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: '#/components/schemas/ErrorResponse'\r\n\r\n  /v1/simulate:\r\n    post:\r\n      operationId: simulateSwapExecution\r\n      summary: Simulate a wallet-bound swap intent\r\n      description: Mandatory pre-execution simulation for a quote intent. Returns simulation_id valid for 60 seconds.\r\n      tags: [Swap]\r\n      requestBody:\r\n        required: true\r\n        content:\r\n          application/json:\r\n            schema:\r\n              $ref: '#/components/schemas/SwapSimulationRequest'\r\n      parameters:\r\n        - $ref: '#/components/parameters/X-ClawHub-Skill'\r\n      responses:\r\n        '200':\r\n          description: Simulation report\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: '#/components/schemas/SwapSimulationResponse'\r\n        '400':\r\n          description: Invalid request\r\n        '409':\r\n          description: Intent and wallet mismatch\r\n\r\n  /agents/swap:\r\n    post:\r\n      operationId: executeSwap\r\n      summary: Execute a signed token swap\r\n      description: |\r\n        Main swap router. Requires a fresh successful simulationId, authenticates\r\n        the agent via EIP-191 signature, reuses the simulated quote intent, applies\r\n        Execution Alpha routing, and enforces Risk Sentinel guardrails before\r\n        returning ready-to-broadcast transaction calldata.\r\n\r\n        FarmDash does not broadcast the returned compatibility-swap transaction. FarmDash prepares\r\n        the transaction calldata for the user or agent wallet to broadcast. Automatic routing dynamically\r\n        selects across active providers (LI.FI, Relay; 0x paused until reinstated).\r\n        The FarmDash treasury receives the fee haircut directly from the protocol.\r\n\r\n        **Signing**: The agent must sign the deterministic payload:\r\n        `v1:FARMDASH_SWAP:{fromChainId}:{toChainId}:{fromToken}:{toToken}:{fromAmount}:{agentAddress}:{toAddress}:{nonce}`\r\n        using EIP-191 personal_sign. Nonce must be current timestamp (within 60s).\r\n      tags: [Swap]\r\n      security:\r\n        - bearerAuth: []\r\n        - {}\r\n      requestBody:\r\n        required: true\r\n        content:\r\n          application/json:\r\n            schema:\r\n              $ref: '#/components/schemas/SwapRequest'\r\n      parameters:\r\n        - $ref: '#/components/parameters/X-ClawHub-Skill'\r\n      responses:\r\n        '200':\r\n          description: Executable swap quote with transaction calldata\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: '#/components/schemas/SwapQuote'\r\n        '400':\r\n          description: Validation error\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: '#/components/schemas/ErrorResponse'\r\n        '401':\r\n          description: Invalid signature or expired nonce\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: '#/components/schemas/ErrorResponse'\r\n        '409':\r\n          description: Swap halted by Risk Sentinel guardrails\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: '#/components/schemas/SwapHaltResponse'\r\n        '428':\r\n          description: Missing, expired, failed, or mismatched simulation\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: '#/components/schemas/ErrorResponse'\r\n        '402':\r\n          description: Payment required\r\n        '429':\r\n          description: Rate limit exceeded (per-agent or tier-level)\r\n          headers:\r\n            Retry-After:\r\n              schema: { type: integer }\r\n              description: Seconds until rate limit resets\r\n\r\n  /agents/history:\r\n    get:\r\n      operationId: getSwapHistory\r\n      summary: Get your own fee event history (tenant-bound)\r\n      description: |\r\n        Returns paginated swap fee events owned by the wallet bound to your\r\n        API key. Requires a Pioneer or Syndicate bearer key; anonymous/scout\r\n        callers receive 401 authentication_required. Any agentAddress that\r\n        differs from the authenticated wallet returns 403 cross_tenant_denied.\r\n        Use `?metrics=true` to get aggregate revenue metrics for your own\r\n        wallet instead of individual events. For the public leaderboard,\r\n        use GET /v1/agent/leaderboard (server-aggregated totals only).\r\n      tags: [History]\r\n      security:\r\n        - bearerAuth: []\r\n      parameters:\r\n        - $ref: '#/components/parameters/X-ClawHub-Skill'\r\n        - in: query\r\n          name: agentAddress\r\n          required: false\r\n          schema: { type: string, pattern: '^0x[a-fA-F0-9]{40}$' }\r\n          description: Filter events by agent wallet address\r\n        - in: query\r\n          name: limit\r\n          required: false\r\n          schema: { type: integer, default: 50, maximum: 200 }\r\n          description: Number of events to return (max 200)\r\n        - in: query\r\n          name: offset\r\n          required: false\r\n          schema: { type: integer, default: 0 }\r\n          description: Pagination offset\r\n        - in: query\r\n          name: metrics\r\n          required: false\r\n          schema: { type: string, enum: ['true'] }\r\n          description: Set to \"true\" to return aggregate revenue metrics instead of event list\r\n      responses:\r\n        '200':\r\n          description: History events or aggregate metrics\r\n          content:\r\n            application/json:\r\n              schema:\r\n                oneOf:\r\n                  - $ref: '#/components/schemas/HistoryResponse'\r\n                  - $ref: '#/components/schemas/RevenueMetrics'\r\n        '402':\r\n          description: Payment required\r\n        '429':\r\n          description: Rate limit exceeded\r\n\r\n  /v1/agent/risk-sentinel:\r\n    get:\r\n      operationId: getRiskSentinelInfo\r\n      summary: Describe Risk Sentinel usage\r\n      description: |\r\n        Returns a lightweight usage guide for the standalone risk-analysis endpoint.\r\n        Use POST to inspect allowance state, token/bridge/contract risks, depeg checks,\r\n        health-factor alerts, quote decay, and positive-net-edge enforcement.\r\n      tags: [Risk]\r\n      security:\r\n        - bearerAuth: []\r\n        - {}\r\n      parameters:\r\n        - $ref: '#/components/parameters/X-ClawHub-Skill'\r\n      responses:\r\n        '200':\r\n          description: Usage guide\r\n          content:\r\n            application/json:\r\n              schema:\r\n                type: object\r\n                properties:\r\n                  ok: { type: boolean }\r\n                  description: { type: string }\r\n                  usage: { type: string }\r\n        '402':\r\n          description: Payment required\r\n    post:\r\n      operationId: analyzeRiskSentinel\r\n      summary: Analyze a route or account with Risk Sentinel\r\n      description: |\r\n        Accepts either a full swap-shaped payload or manual health/net-edge inputs.\r\n        When swap fields are present, FarmDash auto-selects a route, computes\r\n        Execution Alpha diagnostics, and returns a full Risk Sentinel report.\r\n      tags: [Risk]\r\n      security:\r\n        - bearerAuth: []\r\n        - {}\r\n      requestBody:\r\n        required: true\r\n        content:\r\n          application/json:\r\n            schema:\r\n              $ref: '#/components/schemas/RiskSentinelRequest'\r\n      parameters:\r\n        - $ref: '#/components/parameters/X-ClawHub-Skill'\r\n      responses:\r\n        '200':\r\n          description: Risk analysis\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: '#/components/schemas/RiskSentinelResponse'\r\n        '400':\r\n          description: Invalid parameters\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: '#/components/schemas/ErrorResponse'\r\n        '402':\r\n          description: Payment required\r\n        '429':\r\n          description: Rate limit exceeded\r\n\r\ncomponents:\r\n  parameters:\r\n    X-ClawHub-Skill:\r\n      name: X-ClawHub-Skill\r\n      in: header\r\n      required: false\r\n      schema:\r\n        type: string\r\n        pattern: '^[a-zA-Z0-9-]{1,128}$'\r\n        example: farmdash-signal-architect\r\n      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.'\r\n\r\n  securitySchemes:\r\n    bearerAuth:\r\n      type: http\r\n      scheme: bearer\r\n      description: Pioneer or Syndicate API key\r\n\r\n  schemas:\r\n    ErrorResponse:\r\n      type: object\r\n      required: [error]\r\n      properties:\r\n        error:\r\n          type: string\r\n        code:\r\n          type: string\r\n        details:\r\n          type: string\r\n\r\n    PaymentRequiredError:\r\n      type: object\r\n      properties:\r\n        error:\r\n          type: string\r\n          example: payment_required\r\n        message:\r\n          type: string\r\n        direct_upgrade_url:\r\n          type: string\r\n          format: uri\r\n        payment_required:\r\n          type: object\r\n          properties:\r\n            amount:\r\n              type: string\r\n              example: '0.01 USDC'\r\n            chain:\r\n              type: string\r\n              example: Base\r\n            destination:\r\n              type: string\r\n              example: '0xb0Ed0d7bca24BBaD635B977C2efbE06742e33377'\r\n\r\n    ProtocolItem:\r\n      type: object\r\n      properties:\r\n        protocol_name:\r\n          type: string\r\n          example: Hyperliquid\r\n        discovery_heuristic_score:\r\n          oneOf:\r\n            - type: number\r\n              description: Numeric score (paid tiers)\r\n            - type: string\r\n              description: '\"[ ENCRYPTED: UPGRADE TO PIONEER ]\" (scout tier)'\r\n        sybil_risk:\r\n          oneOf:\r\n            - type: string\r\n              example: Low\r\n            - type: string\r\n              example: '[ ENCRYPTED: UPGRADE TO PIONEER ]'\r\n        tvl:\r\n          oneOf:\r\n            - type: string\r\n              example: '$4.2B'\r\n            - type: string\r\n              example: '[ ENCRYPTED: UPGRADE TO PIONEER ]'\r\n        category:\r\n          type: string\r\n          enum: [Perps, Lending, Dex, L2, Bridge, Restaking, HyperEVM, Infra, Wallet, Testnet]\r\n        status:\r\n          type: string\r\n          enum: [Confirmed Airdrop, Points Program, Speculative]\r\n        chains:\r\n          type: array\r\n          items: { type: string }\r\n          example: [Arbitrum, Ethereum]\r\n        recommended_agent_deploy_link:\r\n          type: string\r\n          format: uri\r\n\r\n    ProtocolsResponse:\r\n      type: object\r\n      required: [tier, count, data]\r\n      properties:\r\n        tier:\r\n          type: string\r\n          enum: [scout, pioneer, syndicate]\r\n        count:\r\n          type: integer\r\n        data:\r\n          type: array\r\n          items:\r\n            $ref: '#/components/schemas/ProtocolItem'\r\n        status:\r\n          type: string\r\n          description: '\"limited\" for scout tier'\r\n        message:\r\n          type: string\r\n        direct_upgrade_url:\r\n          type: string\r\n          format: uri\r\n        total_protocols_available:\r\n          type: integer\r\n          description: Full dataset size (scout tier only)\r\n\r\n    ChainBreakdownItem:\r\n      type: object\r\n      properties:\r\n        chain:\r\n          type: string\r\n          example: EVM\r\n        protocol_count:\r\n          oneOf:\r\n            - type: integer\r\n            - type: string\r\n        pct_of_total:\r\n          oneOf:\r\n            - type: number\r\n            - type: string\r\n        confirmed_airdrops:\r\n          oneOf:\r\n            - type: integer\r\n            - type: string\r\n        points_programs:\r\n          oneOf:\r\n            - type: integer\r\n            - type: string\r\n        categories:\r\n          type: array\r\n          items: { type: string }\r\n\r\n    ChainBreakdownSummary:\r\n      type: object\r\n      properties:\r\n        total_chains:\r\n          type: integer\r\n        total_protocols:\r\n          oneOf:\r\n            - type: integer\r\n            - type: string\r\n        dominant_chain:\r\n          type: string\r\n          nullable: true\r\n        dominant_chain_pct:\r\n          oneOf:\r\n            - type: number\r\n            - type: string\r\n\r\n    ChainBreakdownResponse:\r\n      type: object\r\n      required: [tier, data]\r\n      properties:\r\n        tier:\r\n          type: string\r\n          enum: [scout, pioneer, syndicate]\r\n        status:\r\n          type: string\r\n        message:\r\n          type: string\r\n        direct_upgrade_url:\r\n          type: string\r\n          format: uri\r\n        data:\r\n          type: object\r\n          properties:\r\n            chains:\r\n              type: array\r\n              items:\r\n                $ref: '#/components/schemas/ChainBreakdownItem'\r\n            summary:\r\n              $ref: '#/components/schemas/ChainBreakdownSummary'\r\n\r\n    SwapSafetyMode:\r\n      type: string\r\n      enum: [strict, balanced]\r\n\r\n    SwapTxData:\r\n      type: object\r\n      required: [to, data, value, chainId]\r\n      properties:\r\n        to:\r\n          type: string\r\n          description: Protocol contract address (NOT FarmDash)\r\n        data:\r\n          type: string\r\n          description: Encoded calldata\r\n        value:\r\n          type: string\r\n          description: Native token value in wei (for ETH swaps)\r\n        chainId:\r\n          type: integer\r\n\r\n    SwapQuote:\r\n      type: object\r\n      required: [protocol, estimatedOutput, feeBps, feeAmountUSD, gasEstimate, txData, expiresAt]\r\n      properties:\r\n        protocol:\r\n          type: string\r\n          enum: [lifi, zerox, relay]\r\n        estimatedOutput:\r\n          type: string\r\n          description: Expected output amount in wei\r\n        feeBps:\r\n          type: integer\r\n          description: Fee in basis points (e.g. 45 = 0.45%)\r\n        feeAmountUSD:\r\n          type: string\r\n          description: Fee amount in USD\r\n        gasEstimate:\r\n          type: string\r\n          description: Estimated gas in wei\r\n        txData:\r\n          $ref: '#/components/schemas/SwapTxData'\r\n        expiresAt:\r\n          type: integer\r\n          description: Unix timestamp — quotes valid for 30 seconds\r\n\r\n        allowanceTarget:\r\n          type: string\r\n          nullable: true\r\n        gasEstimateUsd:\r\n          type: number\r\n          nullable: true\r\n        bridgeFeeUsd:\r\n          type: number\r\n          nullable: true\r\n        executionAlpha:\r\n          $ref: '#/components/schemas/ExecutionAlphaReport'\r\n        riskReport:\r\n          $ref: '#/components/schemas/SwapRiskReport'\r\n\r\n    SwapQuoteResponse:\r\n      allOf:\r\n        - $ref: '#/components/schemas/SwapQuote'\r\n        - type: object\r\n          properties:\r\n            simulation_required:\r\n              type: boolean\r\n            simulation_available:\r\n              type: boolean\r\n            intent_id:\r\n              type: string\r\n              nullable: true\r\n            intent_expires_at:\r\n              type: string\r\n              nullable: true\r\n            simulate_url:\r\n              type: string\r\n            note:\r\n              type: string\r\n              example: 'This is an unsigned preview quote. Run POST /api/v1/simulate before execution.'\r\n\r\n    SwapSimulationRequest:\r\n      type: object\r\n      required: [intent_id, wallet_address]\r\n      properties:\r\n        intent_id:\r\n          type: string\r\n        wallet_address:\r\n          type: string\r\n          pattern: '^0x[a-fA-F0-9]{40}$'\r\n\r\n    SwapSimulationResponse:\r\n      type: object\r\n      properties:\r\n        ok:\r\n          type: boolean\r\n        simulation_id:\r\n          type: string\r\n        intent_id:\r\n          type: string\r\n        success:\r\n          type: boolean\r\n        gas_used:\r\n          type: number\r\n        gas_cost_usd:\r\n          type: number\r\n        output_amount:\r\n          type: string\r\n        price_impact_pct:\r\n          type: number\r\n          nullable: true\r\n        mev_risk:\r\n          type: string\r\n          enum: [low, medium, high]\r\n        revert_reason:\r\n          type: string\r\n          nullable: true\r\n        valid_until:\r\n          type: string\r\n        wallet_address:\r\n          type: string\r\n        required_for_execution:\r\n          type: boolean\r\n\r\n    SwapRequest:\r\n      type: object\r\n      required: [fromChainId, toChainId, fromToken, toToken, fromAmount, agentAddress, toAddress, simulationId, nonce, signature]\r\n      properties:\r\n        fromChainId:\r\n          type: integer\r\n          description: Source chain ID\r\n        toChainId:\r\n          type: integer\r\n          description: Destination chain ID\r\n        fromToken:\r\n          type: string\r\n          pattern: '^0x[a-fA-F0-9]{40}$'\r\n          description: Source token contract address\r\n        toToken:\r\n          type: string\r\n          pattern: '^0x[a-fA-F0-9]{40}$'\r\n          description: Destination token contract address\r\n        fromAmount:\r\n          type: string\r\n          pattern: '^\\d+$'\r\n          description: Amount in wei (no leading zeros)\r\n        agentAddress:\r\n          type: string\r\n          pattern: '^0x[a-fA-F0-9]{40}$'\r\n          description: Agent wallet address (signer)\r\n        toAddress:\r\n          type: string\r\n          pattern: '^0x[a-fA-F0-9]{40}$'\r\n          description: Destination wallet for swapped tokens\r\n        slippage:\r\n          type: number\r\n          minimum: 0.01\r\n          maximum: 5\r\n          default: 0.5\r\n          description: Slippage tolerance in percent\r\n        protocol:\r\n          type: string\r\n          enum: [lifi, relay]\r\n          description: Force protocol (auto-selected if omitted)\r\n        expectedUpsideUsd:\r\n          type: number\r\n          description: Optional upside estimate in USD for positive-net-edge checks\r\n        riskBufferUsd:\r\n          type: number\r\n          description: Optional extra execution-risk buffer in USD\r\n        healthFactor:\r\n          type: number\r\n          description: Optional lending health factor supplied by the caller\r\n        liquidationBufferPct:\r\n          type: number\r\n          description: Optional liquidation-buffer percentage supplied by the caller\r\n        walletAddress:\r\n          type: string\r\n          pattern: '^0x[a-fA-F0-9]{40}$'\r\n          description: Optional wallet address used for on-chain approval checks\r\n        safetyMode:\r\n          $ref: '#/components/schemas/SwapSafetyMode'\r\n          description: Agent-supplied USD estimate — unlocks volume fee discounts (>=10k = 45bps, >=100k = 40bps, >=1m = 30bps; default 50bps)\r\n        simulationId:\r\n          type: string\r\n          description: Fresh successful simulation_id from POST /v1/simulate\r\n        intentId:\r\n          type: string\r\n          description: Optional quote intent ID\r\n        nonce:\r\n          type: string\r\n          description: Current timestamp in milliseconds (must be within 60 seconds)\r\n        signature:\r\n          type: string\r\n          pattern: '^0x[a-fA-F0-9]+$'\r\n          description: EIP-191 personal_sign of the deterministic payload\r\n\r\n    ExecutionAlphaReport:\r\n      type: object\r\n      properties:\r\n        selectedProtocol:\r\n          type: string\r\n          enum: [lifi, zerox, relay]\r\n        routeReason:\r\n          type: string\r\n        mevProtection:\r\n          type: object\r\n          properties:\r\n            safetyMode:\r\n              $ref: '#/components/schemas/SwapSafetyMode'\r\n            actualSlippageBps:\r\n              type: integer\r\n            maxRecommendedSlippageBps:\r\n              type: integer\r\n        candidates:\r\n          type: array\r\n          items:\r\n            type: object\r\n            properties:\r\n              protocol:\r\n                type: string\r\n                enum: [lifi, zerox, relay]\r\n              estimatedOutput: { type: string }\r\n              feeAmountUsd: { type: number }\r\n              gasEstimateUsd: { type: number, nullable: true }\r\n              bridgeFeeUsd: { type: number, nullable: true }\r\n              routeRiskScore: { type: number }\r\n              selected: { type: boolean }\r\n        quoteDecay:\r\n          type: object\r\n          properties:\r\n            previousObservedAt: { type: integer, nullable: true }\r\n            quoteAgeMs: { type: integer, nullable: true }\r\n            outputDecayBps: { type: number }\r\n            gasIncreaseBps: { type: number }\r\n            severity:\r\n              type: string\r\n              enum: [none, low, medium, high]\r\n        netEdge:\r\n          type: object\r\n          properties:\r\n            expectedUpsideUsd: { type: number, nullable: true }\r\n            protocolFeeUsd: { type: number }\r\n            gasUsd: { type: number }\r\n            bridgeFeeUsd: { type: number }\r\n            riskBufferUsd: { type: number }\r\n            totalCostUsd: { type: number }\r\n            netEdgeUsd: { type: number, nullable: true }\r\n            positive: { type: boolean, nullable: true }\r\n            enforced: { type: boolean }\r\n\r\n    SwapRiskReport:\r\n      type: object\r\n      properties:\r\n        flags:\r\n          type: array\r\n          items:\r\n            type: object\r\n            properties:\r\n              code: { type: string }\r\n              category:\r\n                type: string\r\n                enum: [approval, bridge, contract, token, health, execution]\r\n              severity:\r\n                type: string\r\n                enum: [low, medium, high, critical]\r\n              title: { type: string }\r\n              message: { type: string }\r\n              metadata:\r\n                type: object\r\n                additionalProperties: true\r\n        approval:\r\n          type: object\r\n          nullable: true\r\n          properties:\r\n            spender: { type: string, nullable: true }\r\n            allowance: { type: string, nullable: true }\r\n            requiredAmount: { type: string }\r\n            approvalNeeded: { type: boolean }\r\n            overApproved: { type: boolean }\r\n            source:\r\n              type: string\r\n              enum: [onchain, quote_fallback, unavailable]\r\n        pegChecks:\r\n          type: array\r\n          items:\r\n            type: object\r\n            properties:\r\n              tokenAddress: { type: string }\r\n              symbol: { type: string }\r\n              reference:\r\n                type: string\r\n                enum: [USD, ETH]\r\n              priceUsd: { type: number, nullable: true }\r\n              referencePriceUsd: { type: number, nullable: true }\r\n              deviationPct: { type: number, nullable: true }\r\n              alert: { type: boolean }\r\n        health:\r\n          type: object\r\n          nullable: true\r\n          properties:\r\n            healthFactor: { type: number, nullable: true }\r\n            liquidationBufferPct: { type: number, nullable: true }\r\n            alertLevel:\r\n              type: string\r\n              enum: [none, warning, critical]\r\n            shouldHalt: { type: boolean }\r\n        shouldHalt:\r\n          type: boolean\r\n        haltReasons:\r\n          type: array\r\n          items: { type: string }\r\n\r\n    SwapHaltResponse:\r\n      type: object\r\n      properties:\r\n        error:\r\n          type: string\r\n          example: swap_halted\r\n        code:\r\n          type: string\r\n          example: swap_halted\r\n        selectedProtocol:\r\n          type: string\r\n          enum: [lifi, zerox, relay]\r\n        executionAlpha:\r\n          $ref: '#/components/schemas/ExecutionAlphaReport'\r\n        riskReport:\r\n          $ref: '#/components/schemas/SwapRiskReport'\r\n\r\n    RiskSentinelRequest:\r\n      type: object\r\n      description: Provide either manual health/net-edge inputs or a full swap-shaped request for route-aware analysis.\r\n      properties:\r\n        fromChainId: { type: integer }\r\n        toChainId: { type: integer }\r\n        fromToken: { type: string, pattern: '^0x[a-fA-F0-9]{40}$' }\r\n        toToken: { type: string, pattern: '^0x[a-fA-F0-9]{40}$' }\r\n        fromAmount: { type: string, pattern: '^\\\\d+$' }\r\n        walletAddress: { type: string, pattern: '^0x[a-fA-F0-9]{40}$' }\r\n        toAddress: { type: string, pattern: '^0x[a-fA-F0-9]{40}$' }\r\n        protocol:\r\n          type: string\r\n          enum: [lifi, relay]\r\n        slippage: { type: number }\r\n        expectedUpsideUsd: { type: number }\r\n        riskBufferUsd: { type: number }\r\n        healthFactor: { type: number }\r\n        liquidationBufferPct: { type: number }\r\n        protocolFeeUsd: { type: number }\r\n        gasUsd: { type: number }\r\n        bridgeFeeUsd: { type: number }\r\n        enforcePositive: { type: boolean }\r\n        safetyMode:\r\n          $ref: '#/components/schemas/SwapSafetyMode'\r\n\r\n    RiskSentinelResponse:\r\n      type: object\r\n      properties:\r\n        ok: { type: boolean }\r\n        mode:\r\n          type: string\r\n          enum: [manual, quoted]\r\n        selectedProtocol:\r\n          type: string\r\n          enum: [lifi, zerox, relay]\r\n          nullable: true\r\n        executionAlpha:\r\n          allOf:\r\n            - $ref: '#/components/schemas/ExecutionAlphaReport'\r\n          nullable: true\r\n        riskReport:\r\n          allOf:\r\n            - $ref: '#/components/schemas/SwapRiskReport'\r\n          nullable: true\r\n        quotePreview:\r\n          allOf:\r\n            - $ref: '#/components/schemas/SwapQuote'\r\n          nullable: true\r\n        health:\r\n          type: object\r\n          nullable: true\r\n        netEdge:\r\n          type: object\r\n          nullable: true\r\n        flags:\r\n          type: array\r\n          items:\r\n            type: object\r\n        shouldHalt:\r\n          type: boolean\r\n\r\n    FeeEvent:\r\n      type: object\r\n      properties:\r\n        id:\r\n          type: string\r\n          format: uuid\r\n        created_at:\r\n          type: string\r\n          format: date-time\r\n        protocol:\r\n          type: string\r\n          enum: [lifi, zerox, relay]\r\n        from_token:\r\n          type: string\r\n        to_token:\r\n          type: string\r\n        volume_usd:\r\n          type: number\r\n        fee_bps:\r\n          type: integer\r\n        fee_usd:\r\n          type: number\r\n        agent_address:\r\n          type: string\r\n        tx_hash:\r\n          type: string\r\n          nullable: true\r\n\r\n    HistoryResponse:\r\n      type: object\r\n      required: [events, total, limit, offset]\r\n      properties:\r\n        events:\r\n          type: array\r\n          items:\r\n            $ref: '#/components/schemas/FeeEvent'\r\n        total:\r\n          type: integer\r\n        limit:\r\n          type: integer\r\n        offset:\r\n          type: integer\r\n\r\n    RevenueMetrics:\r\n      type: object\r\n      required: [totalFeeUSD, totalVolumeUSD, totalSwaps, activeAgents]\r\n      properties:\r\n        totalFeeUSD:\r\n          type: number\r\n          description: Cumulative fees collected in USD\r\n        totalVolumeUSD:\r\n          type: number\r\n          description: Cumulative swap volume in USD\r\n        totalSwaps:\r\n          type: integer\r\n          description: Total number of swaps executed\r\n        activeAgents:\r\n          type: integer\r\n          description: Unique agent addresses that have swapped\n\nArchive v1.2.24: 5 files, 40950 bytes\n\nFiles: openapi.yaml (42381b), skill-card.md (2553b), SKILL.json (34255b), SKILL.md (63098b), _meta.json (145b)\n\nFile v1.2.24:SKILL.md\n\n---\nname: FarmDash Signal Architect\ndescription: \"Use when building DeFi trade strategy: 84 MCP tools for quotes, simulation, Trail Heat, receipts, agent hiring. Swaps need fresh quote, simulation, signing.\"\ntags: [\"defi\",\"defi-agent\",\"crypto-swap\",\"swap-routing\",\"cross-chain-swap\",\"uniswap\",\"jupiter\",\"solana\",\"defi-automation\",\"onchain-agent\",\"mev-risk-analysis\",\"hyperliquid\",\"perpetual-futures\",\"virtuals-acp\",\"agent-commerce\",\"portfolio-management\",\"zero-custody\",\"openclaw\",\"mcp\",\"farmdash\"]\nauthor: FarmDash Pioneers (@Parmasanandgarlic)\nhomepage: https://www.farmdash.one/agents\nversion: \"4.2.1\"\nicon: 🚜\nenv:\n  FARMDASH_API_KEY:\n    description: \"Optional Bearer token for Pioneer or Syndicate tier. Pioneer is $39.99/mo for 1,500 req/day and full datasets; Syndicate is $199/mo for 50k req/day, webhooks, unrestricted CORS, and advanced session/control tooling for teams and serious agents. Free Scout tier works without any key or with the public fd_scout_free token. Never share private keys, seed phrases, or mnemonics with this skill. Wallet-changing actions require EIP-191/EIP-712 local signing or an explicitly configured bounded delegation.\"\n    required: false\nmetadata: {\"openclaw\":{\"homepage\":\"https://www.farmdash.one/agents\",\"skillKey\":\"farmdash-signal-architect\",\"primaryEnv\":\"FARMDASH_API_KEY\",\"apiKeyRequired\":false,\"freeScoutKeyless\":true,\"freeScoutKey\":\"fd_scout_free\",\"execution\":\"user-signed-or-bounded-delegation\"}}\n---\n\n# FarmDash Signal Architect — Agent Execution Manual\n\n> Use this skill when moving money: getting a swap quote, simulating it, and preparing a user-signed swap across EVM chains.\n\n> [!NOTE]\n> **THEMATIC METAPHOR DISCLAIMER**\n> FarmDash is exclusively a decentralized finance (DeFi) software and AI agent intelligence platform. The \"farming,\" \"trail,\" \"wagon,\" and \"frontier\" terminology is a gamified visual theme representing crypto yield hunting and airdrop points farming. It does not relate to physical agriculture or agrifood industries.\n\n> [!WARNING]\n> **CRITICAL TRANSACTION & AGENCY GATING (CLAWSCAN REVIEW REQUIREMENT)**\n> This skill can guide, prepare, and simulate wallet-affecting trades, perpetual contracts, swaps, and delegated autopilot workflows through FarmDash. Operators must adhere to the following mandatory safety protocols:\n> \n> * **Never share private keys or seed phrases:** This skill is strictly zero-custody. It never asks for, handles, or transmits wallet credentials. Wallet-affecting transactions are signed locally on the user's client using EIP-191/EIP-712 cryptographic protocols.\n> * **Require fresh quotes and explicit interactive confirmations:** Do not execute or sign stale payloads. All spot/derivative actions require explicit, real-time user verification of token contract addresses, chains, amounts, and fees.\n> * **Verify fees and destination addresses independently:** Always verify aggregator route costs, gas fees, and destination chain configurations before signing.\n> * **No evasion of protocol rules:** Airdrop simulations, sybil audit indicators, and yield analytics are read-only planning heuristics. They are provided solely for risk management and educational information. Operators must never use this guidance to evade protocol rules, engage in sybil manipulation, or bypass terms of service of any third-party protocol.\n\n## How This Skill Works\nYou have FarmDash MCP tools spanning discovery, sizing, policy checks, simulation, signed-payload preparation, monitoring, and reconciliation. Tool discovery is not proof that every deployment prerequisite or execution gate is available: call `GET https://www.farmdash.one/api/v1/agent/status` first and fail closed on a disabled capability. Never replace missing data with fabricated values. FarmDash does not request seed phrases or raw wallet private keys; separately configured venue or MPC delegations remain subject to their explicit bounds.\n\nMCP Configuration: https://www.farmdash.one/.well-known/mcp.json\n\n### High-Risk DeFi Operations Notice\nThis skill can prepare wallet-affecting actions. Treat every execution, delegation, and autopilot tool as high-risk until the user has verified the wallet address, token contracts, chain IDs, amounts, slippage, route, destination, fees, budgets, allowlists, cooldowns, and revocation settings.\n\n### Privacy and Analytics Disclosure\nFarmDash may receive public wallet addresses, token addresses, chain IDs, transaction amounts, signature bytes, request IDs, session IDs, optional Bearer keys, and ClawHub attribution headers such as X-ClawHub-Skill. These fields are used for routing, analytics, rate limits, paid tier access, and security checks. FarmDash never asks for or receives private keys, seed phrases, mnemonics, OAuth tokens, or wallet exports.\n\n### Use-Case First Tool Selection\nBefore calling individual tools, classify the user's intent into one of these operating modes:\n\n| Mode | Goal | Start with | Continue with | Stop when |\n| :--- | :--- | :--- | :--- | :--- |\n| **research_only** | Explain opportunities without taking execution risk | `get_trail_heat`, `get_chain_breakdown` | `get_historical_trailheat`, `simulate_points`, `audit_sybil_risk` | Data is stale, jurisdiction is unclear, or edge is weak |\n| **airdrop_rotation** | Find, compare, and rotate farming positions | `get_agent_events`, `get_trail_heat` | `simulate_points`, `optimize_portfolio`, `get_swap_quote` | Bridge/gas/slippage costs erase expected edge |\n| **bounded_autopilot** | Run a recurring supervised loop inside explicit limits | `agent_onboard`, `create_session` | `configure_autopilot`, `autopilot_cycle`, `session_heartbeat` | Any configured budget, allowlist, cooldown, or risk bound is violated |\n| **perps_hedge** | Evaluate or execute a Hyperliquid hedge | `scan_funding_rates`, `scan_market_conditions` | `get_futures_account`, `analyze_futures_strategy`, `calculate_position_size` | The strategy returns `no_trade` or the research gate expires |\n| **activity_review** | Review FarmDash-recorded activity, fees, protocol diversity, an\n\nArchive v1.2.23: 5 files, 40788 bytes\n\nFiles: openapi.yaml (42381b), skill-card.md (2204b), SKILL.json (34255b), SKILL.md (63098b), _meta.json (145b)\n\nArchive v1.2.22: 5 files, 35708 bytes\n\nFiles: openapi.yaml (34263b), skill-card.md (3053b), SKILL.json (32736b), SKILL.md (53748b), _meta.json (145b)\n\nArchive v1.2.21: 5 files, 34467 bytes\n\nFiles: openapi.yaml (34975b), skill-card.md (3215b), SKILL.json (22965b), SKILL.md (53000b), _meta.json (145b)\n\nArchive v1.2.20: 5 files, 33516 bytes\n\nFiles: openapi.yaml (34753b), skill-card.md (2815b), SKILL.json (24220b), SKILL.md (49017b), _meta.json (145b)\n\nArchive v1.2.19: 5 files, 29692 bytes\n\nFiles: openapi.yaml (33692b), skill-card.md (2917b), SKILL.json (11453b), SKILL.md (41172b), _meta.json (145b)\n\nArchive v1.2.18: 5 files, 29618 bytes\n\nFiles: openapi.yaml (33692b), skill-card.md (2851b), SKILL.json (11446b), SKILL.md (41118b), _meta.json (145b)\n\nArchive v1.2.17: 5 files, 29695 bytes\n\nFiles: openapi.yaml (33692b), skill-card.md (3233b), SKILL.json (11387b), SKILL.md (40920b), _meta.json (145b)\n\nArchive v1.2.16: 5 files, 27596 bytes\n\nFiles: openapi.yaml (33251b), skill-card.md (3540b), SKILL.json (10400b), SKILL.md (37915b), _meta.json (145b)","readmeExcerpt":"Skill: FarmDash Signal Architect Owner: parmasanandgarlic Summary: OpenClaw DeFi execution with FarmDash's 92-tool MCP server: LI.FI and Relay swaps, simulation, zero-custody settlement verification. Tags: 0x:1.2.19, AI agent:1.2.24, Arbitrum:1.2.24, Arbitrum swap:1.2.24, Base:1.2.24, Base swap:1.2.24, ClawHub:1.2.24, DEX aggregator:1.2.24, DEX routing:1.2.24, DEX swap:1.2.24, DeFi:1.2.24, DeFi API:1.2.24, DeFi agent","codeSnippets":[],"executableExamples":[],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\r\nname: FarmDash Signal Architect\r\ndescription: \"OpenClaw DeFi execution with FarmDash's 92-tool MCP server: LI.FI and Relay swaps, simulation, zero-custody settlement verification.\"\r\ntags: [\"defi\",\"defi-agent\",\"crypto-swap\",\"swap-routing\",\"cross-chain-swap\",\"uniswap\",\"jupiter\",\"solana\",\"defi-automation\",\"onchain-agent\",\"mev-risk-analysis\",\"hyperliquid\",\"perpetual-futures\",\"virtuals-acp\",\"agent-commerce\",\"portfolio-management\",\"zero-custody\",\"openclaw\",\"mcp\",\"farmdash\"]\r\nauthor: FarmDash Pioneers (@Parmasanandgarlic)\r\nhomepage: https://www.farmdash.one/agents\r\nversion: \"4.2.1\"\r\nicon: 🚜\r\nenv:\r\n  FARMDASH_API_KEY:\r\n    description: \"Optional Bearer token for Pioneer or Syndicate tier. Pioneer is $39.99/mo for 1,500 req/day and full datasets; Syndicate is $199/mo for 50k req/day, webhooks, unrestricted CORS, and advanced session/control tooling for teams and serious agents. Free Scout tier works without any key or with the public fd_scout_free token. Never share private keys, seed phrases, or mnemonics with this skill. Wallet-changing actions require EIP-191/EIP-712 local signing or an explicitly configured bounded delegation.\"\r\n    required: false\r\nmetadata: {\"openclaw\":{\"homepage\":\"https://www.farmdash.one/agents\",\"skillKey\":\"farmdash-signal-architect\",\"primaryEnv\":\"FARMDASH_API_KEY\",\"apiKeyRequired\":false,\"freeScoutKeyless\":true,\"freeScoutKey\":\"fd_scout_free\",\"execution\":\"user-signed-or-bounded-delegation\"}}\r\n---\r\n\r\n# FarmDash Signal Architect — Agent Execution Manual\r\n\r\n> Use this skill when moving money: getting a swap quote, simulating it, and preparing a user-signed swap across EVM chains.\r\n\r\n> [!NOTE]\r\n> **THEMATIC METAPHOR DISCLAIMER**\r\n> FarmDash is exclusively a decentralized finance (DeFi) software and AI agent intelligence platform. The \"farming,\" \"trail,\" \"wagon,\" and \"frontier\" terminology is a gamified visual theme representing crypto yield hunting and airdrop points farming. It does not relate to physical agriculture or agrifood industries.\r\n\r\n> [!WARNING]\r\n> **CRITICAL TRANSACTION & AGENCY GATING (CLAWSCAN REVIEW REQUIREMENT)**\r\n> This skill can guide, prepare, and simulate wallet-affecting trades, perpetual contracts, swaps, and delegated autopilot workflows through FarmDash. Operators must adhere to the following mandatory safety protocols:\r\n> \r\n> * **Never share private keys or seed phrases:** This skill is strictly zero-custody. It never asks for, handles, or transmits wallet credentials. Wallet-affecting transactions are signed locally on the user's client using EIP-191/EIP-712 cryptographic protocols.\r\n> * **Require fresh quotes and explicit interactive confirmations:** Do not execute or sign stale payloads. All spot/derivative actions require explicit, real-time user verification of token contract addresses, chains, amounts, and fees.\r\n> * **Verify fees and destination addresses independently:** Always verify aggregator route costs, gas fees, and destination chain configurations before signing.\r\n> * **No evasion of proto"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn753be85erp4cey7vbq9aq9sd826p37\",\n  \"slug\": \"farmdash-signal-architect\",\n  \"version\": \"1.2.25\",\n  \"publishedAt\": 1791161491136\n}"},{"path":"skill-card.md","content":"## Description:\n\nGuides OpenClaw agents through DeFi analysis, swap simulation, user-signed transaction preparation, and settlement verification with FarmDash.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[parmasanandgarlic](https://clawhub.ai/user/parmasanandgarlic)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to assess DeFi routes, simulate swaps, prepare transactions for user-controlled signing, and check settlement. Optional delegation workflows require explicit bounds and an operational execution gate.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: DeFi transaction preparation can lead to financial loss if a route or transaction detail is wrong.\n\nMitigation: Verify token addresses, chains, amounts, fees, routes, and destinations against a fresh quote before locally signing; never provide seed phrases or private keys.\n\nRisk: Optional onboarding, analytics, and session tokens may expose sensitive account metadata.\n\nMitigation: Treat session tokens and account metadata as sensitive, and share only what the intended workflow requires.\n\nRisk: Delegated execution may exceed the user's intended authority if controls are missing or unavailable.\n\nMitigation: Require explicit budgets, allowlists, cooldowns, and revocation controls; do not execute unless the capability status confirms an operational gate.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/parmasanandgarlic/skills/farmdash-signal-architect)\n- [FarmDash agents](https://www.farmdash.one/agents)\n- [FarmDash MCP discovery](https://www.farmdash.one/.well-known/mcp.json)\n- [FarmDash API contract](https://www.farmdash.one/agents/openapi.yaml)\n- [FarmDash capability status](https://www.farmdash.one/api/v1/agent/status)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Guidance]\n\n**Output Format:** [Markdown guidance and structured transaction details]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Quotes, simulations, and transaction details require user review before signing.]\n\n## Skill Version(s):\n\n1.2.25 (source: server-resolved ClawHub release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."},{"path":"SKILL.json","content":"{\r\n  \"name\": \"FarmDash Signal Architect\",\r\n  \"version\": \"4.2.1\",\r\n  \"description\": \"OpenClaw DeFi execution with FarmDash's 92-tool MCP server: LI.FI and Relay swaps, simulation, zero-custody settlement verification.\",\r\n  \"tags\": [\r\n    \"defi\",\r\n    \"defi-agent\",\r\n    \"crypto-swap\",\r\n    \"swap-routing\",\r\n    \"cross-chain-swap\",\r\n    \"uniswap\",\r\n    \"jupiter\",\r\n    \"solana\",\r\n    \"defi-automation\",\r\n    \"onchain-agent\",\r\n    \"mev-risk-analysis\",\r\n    \"hyperliquid\",\r\n    \"perpetual-futures\",\r\n    \"virtuals-acp\",\r\n    \"agent-commerce\",\r\n    \"portfolio-management\",\r\n    \"zero-custody\",\r\n    \"openclaw\",\r\n    \"mcp\",\r\n    \"farmdash\"\r\n  ],\r\n  \"author\": \"FarmDash Pioneers (@Parmasanandgarlic)\",\r\n  \"homepage\": \"https://www.farmdash.one/agents\",\r\n  \"icon\": \"🚜\",\r\n  \"tools\": [\r\n    {\r\n      \"name\": \"get_payments_bootstrap\",\r\n      \"inputSchema\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {},\r\n        \"additionalProperties\": false,\r\n        \"$schema\": \"http://json-schema.org/draft-07/schema#\"\r\n      },\r\n      \"outputHints\": [],\r\n      \"category\": \"read\"\r\n    },\r\n    {\r\n      \"name\": \"select_virtuals_provider_plan_v2\",\r\n      \"description\": \"Selects a deterministic three-role ACP committee from live Virtuals registry records. Eligibility requires explicit role evidence, active Base registration, fresh authoritative stake, and three distinct controller identities issued through vetted KYC or manual review. A registry ID or cluster is correlation metadata only. This action creates no tender and grants no spend authority.\",\r\n      \"inputSchema\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"sessionId\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 1,\r\n            \"maxLength\": 200\r\n          },\r\n          \"agentAddress\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^0x[a-fA-F0-9]{40}$\"\r\n          },\r\n          \"accountAddress\": {\r\n            \"type\": \"string\",\r\n            \"pattern\": \"^0x[a-fA-F0-9]{40}$\"\r\n          },\r\n          \"sessionToken\": {\r\n            \"type\": \"string\",\r\n            \"minLength\": 32,\r\n            \"maxLength\": 256\r\n          }\r\n        },\r\n        \"required\": [\r\n          \"sessionId\",\r\n          \"agentAddress\",\r\n          \"sessionToken\"\r\n        ],\r\n        \"additionalProperties\": false,\r\n        \"$schema\": \"http://json-schema.org/draft-07/schema#\"\r\n      },\r\n      \"outputHints\": [\r\n        \"Policy version and deterministic provider-plan hash\",\r\n        \"Fixed role-to-provider address bindings and sanitized readiness evidence\"\r\n      ],\r\n      \"category\": \"read\"\r\n    },\r\n    {\r\n      \"name\": \"prepare_virtuals_tender_v2\",\r\n      \"description\": \"Creates an immutable, non-spendable V2 evidence draft from a fresh tenant-owned simulation. Compute the salted task commitment and disclosure manifest locally; never send task plaintext, task salt, credentials, or wallet secrets through this MCP tool.\",\r\n      \"inputSchema\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"sessionI"},{"path":"openapi.yaml","content":"openapi: 3.0.3\r\ninfo:\r\n  title: FarmDash Signal Architect API\r\n  version: 1.2.0\r\n  description: |\r\n    Customer-controlled intelligence and workflow API for DeFi agents and serious airdrop farmers:\r\n    structured opportunity intelligence, quote generation, user-authorized transaction preparation,\r\n    x402 flows, and fee history. FarmDash does not request seed phrases or raw wallet private keys.\r\n    Compatibility swap routes do not custody user funds; separately configured venue or MPC\r\n    delegations remain subject to their provider controls and explicit policy bounds.\r\n\r\n    ## Authentication\r\n    - **Scout (Free)**: No auth. 30 requests/24h per IP.\r\n    - **Pioneer**: `Authorization: Bearer <PIONEER_KEY>`. 1,500 requests/day.\r\n    - **Syndicate**: `Authorization: Bearer <SYNDICATE_KEY>`. $199/mo USDC, 50,000 requests/day, webhooks, unrestricted CORS, and advanced control/session tooling for teams and serious agents.\r\n    - **Swap execution**: Requires fresh quote review plus EIP-191 agent wallet signature.\r\n    - **Delegation/autopilot**: Requires explicit user-configured budgets, allowlists, and revocation path.\r\n    - **Privacy**: Public wallet addresses, token addresses, chain IDs, amounts, signatures, request IDs, and analytics headers may be sent to FarmDash; private keys and seed phrases are never sent.\r\n\r\n    ## Dust Storm Protocol\r\n    If an upstream API fails, FarmDash returns a typed error or a previously\r\n    validated stale response with a `warnings` array containing\r\n    `{ kind: \"dust_storm\", message: \"...\" }`. Missing data remains unknown\r\n    rather than being converted into a synthetic zero.\r\n\r\n    ## x402 Payment Wall\r\n    When free-tier limits are exceeded, responses include `X-Payment-*` headers\r\n    describing a one-off USDC payment on Base that unlocks the current request.\r\n  contact:\r\n    name: FarmDash Engineering\r\n    url: https://www.farmdash.one/agents\r\n  license:\r\n    name: MIT\r\n\r\nservers:\r\n  - url: https://www.farmdash.one/api\r\n    description: Production\r\n\r\npaths:\r\n  /v1/agent/protocols:\r\n    get:\r\n      operationId: getProtocolCatalog\r\n      summary: Get catalog protocol directory (discovery heuristic scores)\r\n      description: |\r\n        Returns the curated FarmDash catalog with EDITORIAL discovery heuristic scores (catalog-editorial-v1). NOT live Trail Heat — canonical quantitative Trail Heat: /v1/trail-heat.\r\n        Live quantitative Trail Heat uses calibrated TVL, seven-day TVL momentum, chain diversification,\r\n        and category outperformance when upstream data is available. Editorial notes are separate\r\n        metadata and excluded from the quantitative score. Static tracker pages use a distinct catalog\r\n        discovery heuristic with TVL, status, category prior,\r\n        hot momentum, and recency.\r\n        Scout tier receives top 3 with encrypted numeric values.\r\n        Pioneer/Syndicate tiers receive the full unencrypted dataset.\r\n      tags: [Intelligence]\r\n      security:\r\n        - bearerAu"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"OpenClaw DeFi execution with FarmDash's 92-tool MCP server: LI.FI and Relay swaps, simulation, zero-custody settlement verification. Skill: FarmDash Signal Architect Owner: parmasanandgarlic Summary: OpenClaw DeFi execution with FarmDash's 92-tool MCP server: LI.FI and Relay swaps, simulation, zero-custody settlement verification. Tags: 0x:1.2.19, AI agent:1.2.24, Arbitrum:1.2.24, Arbitrum swap:1.2.24, Base:1.2.24, Base swap:1.2.24, ClawHub:1.2.24, DEX aggregator:1.2.24, DEX routing:1.2.24, DEX swap:1.2.24, DeFi:1.2.24, DeFi API:1.2.24, DeFi agent","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":2064,"uniquenessScore":45,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T12:01:32.574Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T12:01:32.574Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T08:15:15.054Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}