yieldsentinel

Policy check on a described yield position. Complement to yieldhunter. Research only.

Should I use this

Quality & Safety

B
Description quality
100%
Schema completeness
50%
Naming quality
90%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,010Tokens (tool definitions)
~2.9 KBTypical response size
Moderate attention impact (0.79% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "yieldsentinel": {
      "url": "https://yieldsentinel-agent-production.up.railway.app/mcp"
    }
  }
}

Remote endpoints

https://yieldsentinel-agent-production.up.railway.app/mcpstreamable-http

What it can do

Tool inventory

Tools (2)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢health

Liveness and capability check for yieldsentinel (yieldsentinel.eth). Returns service status, schemaVersion, policyVersion, feature flags, and the list of available tools. May refresh research vintage via a yieldhunter health ping; a verdict still requires check_position. YH healthy ≠ YS ok. Use this first to verify connectivity, then call check_position with policyPreset treasury-conservative | balanced-research | rwa-selective (or explicit thresholds). Research estimates only — non-custodial; never holds keys or executes transactions. Example input: {}

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢check_position(poolId, opportunityId, id, protocolSlug, chain, ...)

Evaluate a described stablecoin yield position against a research policy (pull). Always pass your policy rules (or a preset). Without a policy, no meaningful check is possible — the verdict will be review/unknown, never ok. Pass a yieldhunter opportunity id (poolId / opportunityId / id) or protocolSlug. Required for a real check: policyPreset (treasury-conservative | balanced-research | rwa-selective) and/or minScore / maxRewardShare / excludeCategories / maxExitRisk / requireCurated. Presets: treasury-conservative | balanced-research | rwa-selective. rwa-selective does not exclude RWA but is not a free pass (YS policy allowlist + higher bar). requireCurated uses the Yieldsentinel policy allowlist (curated.json), not yieldhunter scoring priors. Scoring ≠ policy approval. Fetches live yieldhunter research (score, APY, TVL, category, rewardShare, exitRisk) and curated flags, then returns a PolicyVerdict plus A2H (summary, suggestedNextSteps, legend). Incomplete or missing data is review/unknown — never a silent ok. A verdict is not an exit signal or execution order. Research only — never holds keys. Example: { "poolId": "43641cf5-a92e-416b-bce9-27113d3c0db6", "policyPreset": "treasury-conservative", "notionalUsd": 10000 }

Input Schema

{
  "type": "object",
  "properties": {
    "poolId": {
      "description": "yieldhunter opportunities[].id (DefiLlama pool UUID). Example: \"43641cf5-a92e-416b-bce9-27113d3c0db6\""
    },
    "opportunityId": {
      "description": "Alias for poolId / id."
    },
    "id": {
      "description": "Same as yieldhunter opportunities[].id."
    },
    "protocolSlug": {
      "description": "Protocol slug, e.g. \"aave-v3\"."
    },
    "chain": {
      "description": "ethereum | base | arbitrum"
    },
    "asset": {
      "description": "Stablecoin symbol, e.g. \"USDC\"."
    },
    "notionalUsd": {
      "description": "Research notional in USD (size hint only). Example: 10000"
    },
    "horizonDays": {
      "description": "Holding horizon in days for net-yield context (default 30)."
    },
    "policyPreset": {
      "description": "Policy preset: \"treasury-conservative\" | \"balanced-research\" | \"rwa-selective\". treasury-conservative excludes RWA; rwa-selective allows RWA but is not a free pass (YS policy allowlist + higher bar)."
    },
    "minScore": {
      "description": "Minimum compositeRiskAdjusted (0–100)."
    },
    "minNetApy": {
      "description": "Minimum net APY estimate."
    },
    "maxRewardShare": {
      "description": "Maximum incentive share of gross APY (0–1)."
    },
    "riskAppetite": {
      "description": "conservative | balanced | aggressive (research posture only)."
    },
    "excludeCategories": {
      "description": "Exclude categories, e.g. [\"rwa\"]."
    },
    "minTvlUsd": {
      "description": "Minimum pool TVL in USD."
    },
    "minProtocolScore": {
      "description": "Minimum yieldhunter protocol risk score (0–100, higher = safer)."
    },
    "maxExitRisk": {
      "description": "Cap on yieldhunter exitRisk heuristic: low | medium | high. Unknown or above the cap → review."
    },
    "requireCurated": {
      "description": "If true, the protocol/pool must be on the Yieldsentinel policy allowlist (curated.json), not yieldhunter scoring priors. Missing allowlist entry → review. Scoring ≠ policy approval."
    }
  },
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded2 tools
verifiedversion not recorded2 tools