yieldhunter

io.github.agentsherpaPublished by GitHub account agentsherpav1.0.0Updated Oct 24, 2026

Risk-adjusted stablecoin yield ranks for other agents. Research only. Never holds keys or executes.

VerifiedStreamable HTTPWeb executableFinanceData & Analytics

Overview

AI-generated overview

Remote MCP service that ranks stablecoin yield opportunities on Ethereum, Base and Arbitrum by risk-adjusted score, with explanations and protocol risk cards.

What you can do
  • Check service health, schema and scoring versions, feature flags and available tools
  • List and rank stablecoin yield opportunities across Ethereum, Base and Arbitrum by multi-factor risk-adjusted score
  • Score a single opportunity and break down its APY into base, reward and total with factor rationales
  • Compare two to five opportunities side by side and get a ranked winner with rationale
  • Explain why an opportunity received its score, including weighted factor contributions and exit-risk notes
  • Look up a protocol-level risk card with age, audit signals, known issues and a 0-100 score
When to use it
Useful when an assistant needs to research stablecoin yield options and compare them on risk-adjusted rather than raw APY, or to justify a ranking with factor-level explanations and protocol risk context. It is research tooling, not an execution or advisory service.
Requirements
A remote Streamable HTTP endpoint; no package install, account, API key or environment variable is declared. The assistant connects to the published MCP URL. Network access to the hosted service is required.
Before you install
The service is research only and states it never holds keys or executes trades, so any deposit or trade decision remains the user's. Rankings and scores come from a third-party hosted service and are explicitly not financial advice. Only Ethereum, Base and Arbitrum are supported; other chains return validation errors.

Installation

In SourceWeft

  1. Open yieldhunter in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.agentsherpa%2Fyieldhunter/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "yieldhunter": {
      "type": "http",
      "url": "https://yieldhunter-agent-production.up.railway.app/mcp"
    }
  }
}

README

yieldhunter-connect

Public front door for yieldhunter.eth.

Risk-adjusted ranks. Research only. Not financial advice. Not RNWY Ethereum agent 12099. ERC-8004 on Base: 61006.

The full agent stays in a private repo. This repo only points at the live service.

Sibling

After ranks: a policy check via yieldsentinel-connect / yieldsentinel.eth (Base 63771).

No auto-sync between the two.

Live URLs

Connect snippet

See connect.json. Paste that block into an MCP client that accepts a remote URL.

Agent Plugin (Cursor / Grok marketplace)

This repo is also an Agent Plugins package:

  • plugin.json — manifest
  • mcp.json — remote Streamable HTTP MCP
  • LICENSE — MIT

Marketplace note (approval risk): this is DeFi / stablecoin research tooling for agents. It never custodies funds or executes trades. Curated marketplaces may still reject or delay listings that touch yield/DeFi topics. Research only — not deposit advice.

One-liner: Risk-adjusted ranks, then a policy check. Research only.

Files

  • connect.json — MCP connect snippet
  • agent-card.json — thin pointer (not the live tool list)
  • plugin.json — Agent Plugins manifest
  • mcp.json — Agent Plugins MCP config
  • LICENSE — MIT
  • README.md — this file

Source: README.md at commit 5ab2e89

Tools

6

health

Health

Liveness and capability check for yieldhunter (yieldhunter.eth). Returns service status, schemaVersion, scoringVersion, feature flags, and the list of available tools. Use this first to verify connectivity. If yields+pegs vintage is missing or at/over YH_STALE_DEGRADE_SECONDS (default 2h), health may refresh DefiLlama market caches once (same adapters as list_yields; not a list_yields tool call). Kill switch on: health still answers, refresh skipped. Research estimates only — non-custodial; never holds keys or executes transactions. Copy-paste path starts here, then list_yields. Example input: {}

Takes no parameters.

list_yields

List risk-adjusted yields

Rank stablecoin yield opportunities on Ethereum, Base, and Arbitrum using multi-factor **risk-adjusted** scoring (not raw APY). chains/chainIds: those three only (aliases eth/ETH/Ethereum, arb/ARB, BASE) — any unsupported or blank value (solana, optimism, "") is VALIDATION_ERROR, not a silent default-universe fallback. sourceChainKey: same keys/aliases; blank or unknown keys are VALIDATION_ERROR (bridge cost is not estimated). Default ranking is risk-adjusted score, not highest APY. For headline yield order, use sortBy=net_apy. Default is risk-adjusted ranking with balanced weights. Optional params are policy controls for visiting agents. Default when omitted: sortBy=risk_adjusted, sortOrder=desc, riskAppetite=balanced (v1.1 weights), no minScore, no category filter, diversity=soft (max 2 markets per protocol in presented top-k). Primary composite key: compositeRiskAdjusted (protocol risk, depeg/counterparty, liquidity, yield quality base vs incentive, net yield after gas/bridge). Opportunities may include stability signals: apyChange24h is pool-level DefiLlama apyPct1D when present as a number (including 0 = observed flat change); null/missing means unknown/not provided for that pool (e.g. some Pendle markets) — not the same as 0, never invent 0; tvlChange24hPct is protocol-level DefiLlama change_1d (shared across markets of the same protocol — not this pool's TVL flow; missing stays null); large APY jumps warn only. Also exitRisk/exitRiskReason (size-vs-pool liquidity heuristic only: pool TVL vs notionalUsd + liquidity confidence — not on-chain withdraw, not queue/cap/pause/lockup, not transfer whitelist/eligibility/redemption, not an execution gate; unknown ≠ safe; medium often means liquidity confidence medium, not “small pool”; low is strict; when knownIssues mention transfer/eligibility do not treat low as free exit; soft warnings on high/unknown, plus low/medium if those issues are present; does not change default risk-adjusted ranking). Optional policy k

ParameterslimitassetschainssortBychainIdsminScorediversityminTvlUsdprotocolssortOrdercategorieshorizonDays+6 more

score_opportunity

Score opportunity

Compute the full multi-factor risk-adjusted score for a single opportunity from list_yields. Chain: pass list_yields opportunities[].id as poolId, opportunityId, or id (same DefiLlama pool UUID; id is the canonical list field). Returns APY breakdown (base/reward/total), factor scores with rationales, net yield after gas/bridge, exitRisk heuristic (TVL vs notional + liq conf only; medium ≠ small pool; not queues/caps/transfer whitelist/eligibility/on-chain withdraw; do not treat low as free exit when knownIssues mention transfer/eligibility), warnings, and sources. sourceChainKey is ethereum|base|arbitrum only — unknown keys (foo, solana) are VALIDATION_ERROR; no invented bridge fee. Research estimates only — non-custodial. Example (any one id field): { "id": "43641cf5-a92e-416b-bce9-27113d3c0db6", "horizonDays": 30, "notionalUsd": 10000 } Also accepts poolId or opportunityId with the same value.

ParametersidpoolIdhorizonDaysnotionalUsdopportunityIdsourceChainKey

compare_opportunities

Compare opportunities

Side-by-side comparison of 2–5 opportunities by risk-adjusted score. Pass list_yields opportunities[].id values as poolIds or opportunityIds. Returns ranked list, compact comparison table fields (including protocolSlug for get_protocol_risk), winnerId, and rationale bullets (including when raw APY leader differs from risk-adjusted winner). sourceChainKey is ethereum|base|arbitrum only (unknown → VALIDATION_ERROR; no invented bridge fee). Research only — non-custodial. Example: { "poolIds": ["pool-id-a", "pool-id-b", "pool-id-c"], "horizonDays": 30 }

ParameterspoolIdshorizonDaysnotionalUsdopportunityIdssourceChainKey

explain_score

Explain score

Agent-readable explanation of why an opportunity received its risk-adjusted score. Chain: pass list_yields opportunities[].id as poolId, opportunityId, or id (aliases for the same key). Returns a summary paragraph, factor bullets with weighted contributions, net-yield notes, an exitRisk heuristic line (liquidity-only — not on-chain withdraw or transfer/eligibility; medium often confidence-driven, not pool size; extra bullet when knownIssues note transfer restrictions), plus id and protocolSlug (same as list_yields; pass protocolSlug to get_protocol_risk). sourceChainKey is ethereum|base|arbitrum only (unknown → VALIDATION_ERROR; no invented bridge fee). Prefer this when you need to justify a ranking to a human or another agent. Research only — non-custodial. Example: { "opportunityId": "43641cf5-a92e-416b-bce9-27113d3c0db6", "horizonDays": 30 } Also accepts poolId or id with the same value.

ParametersidpoolIdhorizonDaysnotionalUsdopportunityIdsourceChainKey

get_protocol_risk

Get protocol risk

Protocol-level risk card (age, audit signals, curated known issues, category, score 0–100). Chain: pass list_yields opportunities[].protocolSlug as protocol or protocolSlug. Display names also resolve case- and space-insensitively via DefiLlama protocol metadata (e.g. "Compound V3" → compound-v3, "Curve" → curve-dex, "Euler V2" → euler-v2). Unknown names return NOT_FOUND naming the field, with example {"protocolSlug":"aave-v3"} and up to 3 closest slugs. Higher score = lower protocol risk. Uses curated priors plus DefiLlama metadata when available. Research only — non-custodial. Example: { "protocol": "aave-v3" } Also accepts protocolSlug or a display name such as "Compound V3".

ParametersprotocolprotocolSlug

Version history

1
  1. v1.0.0LatestSep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts