{"name":"io.github.agentsherpa/yieldsentinel","slug":"agentsherpa-yieldsentinel","title":"yieldsentinel","description":"Policy check on a described yield position. Complement to yieldhunter. Research only.","url":"https://mcp.market/server/agentsherpa-yieldsentinel","rating":null,"grade":"A","score":88,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":23,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-10-14T19:53:54.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T05:35:44.320Z","last_ok_at":"2026-11-04T05:35:44.320Z","latency_ms":86},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/agentsherpa/yieldsentinel-connect","website":"https://yieldsentinel-agent-production.up.railway.app/","version":"1.0.0","remotes":[{"type":"streamable-http","url":"https://yieldsentinel-agent-production.up.railway.app/mcp"}],"packages":[],"tools":[{"name":"check_position","description":"Evaluate a described stablecoin yield position against a research policy (pull).\n\nAlways pass your policy rules (or a preset). Without a policy, no meaningful check is possible — the verdict will be review/unknown, never ok.\n\nPass poolId from yieldhunter list_yields opportunities[].id (also accepted as opportunityId or id). That id is one market. 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.\n\nFetches live yieldhunter research (score, APY, TVL, category, rewardShare, exitRisk) and curated flags, then returns a PolicyVerdict plus A2H (summary, suggestedNextSteps, legend).\n\nIncomplete 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.\n\nExample:\n{ \"poolId\": \"43641cf5-a92e-416b-bce9-27113d3c0db6\", \"policyPreset\": \"treasury-conservative\", \"notionalUsd\": 10000 }","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"poolId":{"description":"yieldhunter list_yields opportunities[].id (DefiLlama pool UUID). Example: \"43641cf5-a92e-416b-bce9-27113d3c0db6\""},"opportunityId":{"description":"Alias for poolId / id."},"id":{"description":"Same as yieldhunter list_yields opportunities[].id."},"protocolSlug":{"description":"Yieldhunter protocol slug. Prefer poolId from list_yields opportunities[].id when the protocol has more than one market."},"chain":{"type":"string","enum":["ethereum","base","arbitrum"],"description":"ethereum | base | arbitrum. Case-insensitive. Also accepts eth, mainnet, arb, arbitrum-one."},"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":{"type":"string","enum":["treasury-conservative","balanced-research","rwa-selective"],"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":{"type":"string","enum":["conservative","balanced","aggressive"],"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":{"type":"string","enum":["low","medium","high"],"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#"}},{"name":"health","description":"Liveness and capability check for yieldsentinel (yieldsentinel.eth).\n\nReturns service status, package version, health schemaVersion (separate from the tool-envelope schemaVersion), policyVersion, feature flags, and the list of available tools.\n\ntoolStats counts all origins. toolStatsExternal is the external bucket. toolStatsInternal is the internal-test bucket. Send header X-YHYS-Test: 1 on every request (initialize, notifications, and each tools/call). On this stateless server that header is the only working internal-test marker. clientInfo.name prefixes yhys-qa / yhys-feel count only for the same request they appear in.\n\nMay refresh research vintage via a yieldhunter health ping; a verdict still requires check_position. YH healthy ≠ YS ok.\n\nUse 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.\n\nExample input: {}","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":true,"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":88,"grade":"A","scanned_at":"2026-11-01T13:28:51.351Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-11-01T13:28:51.285Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1077ms"]},"poisoning":{"score":15,"max":15,"notes":["2 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":15,"max":15,"notes":["last push 18 days ago"]},"identity":{"score":6,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[],"inputs":{"probes":[{"url":"https://yieldsentinel-agent-production.up.railway.app/mcp","reachable":true,"authRequired":false,"latencyMs":1077,"serverInfo":{"name":"yieldsentinel","version":"0.1.5"}}],"packages":[],"repo":{"found":true,"owner":"agentsherpa","repo":"yieldsentinel-connect","archived":false,"pushedAt":"2026-10-14T19:53:54Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/314672598?v=4","ownerCreatedAt":"2026-08-08T14:32:37Z","license":"MIT"},"icon":{"url":null,"source":"none"},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-10-14T19:53:54.000Z","score":23}}}},"grade_history":[],"reviews":[]}