Card snapshot
yieldhunter-agent-production.up.railway.app
·
2026-08-23 02:28:48 UTC
·
cb252b98160caf9db579264aad4727550c0a607f64a304422f734b4f19b2cbfc
This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.
{
"name": "yieldhunter",
"description": "Risk-adjusted stablecoin yield intelligence for other agents on Ethereum, Base, and Arbitrum. Research only \u2014 never holds keys or executes transactions. Rank and explain opportunities with multi-factor scoring, not headline APY. Not financial advice. Not RNWY Ethereum agent 12099.",
"version": "1.0.0",
"documentationUrl": "https://yieldhunter-agent-production.up.railway.app/discovery/agent-context.md",
"iconUrl": "https://euc.li/yieldhunter.eth",
"url": "https://yieldhunter-agent-production.up.railway.app/mcp",
"supportedInterfaces": [
{
"url": "https://yieldhunter-agent-production.up.railway.app/mcp",
"protocolBinding": "MCP-Streamable-HTTP",
"protocolVersion": "2025-06-18"
}
],
"provider": {
"organization": "yieldhunter.eth",
"url": "https://yieldhunter-agent-production.up.railway.app"
},
"capabilities": {
"streaming": false,
"pushNotifications": false,
"extendedAgentCard": false
},
"defaultInputModes": [
"application/json",
"text/plain"
],
"defaultOutputModes": [
"application/json",
"text/plain"
],
"skills": [
{
"id": "health",
"name": "Health",
"description": "Liveness and capability check (status, feature flags, data sources). Call first. Research service only.",
"tags": [
"health",
"status",
"research"
],
"examples": [
"{}"
]
},
{
"id": "list_yields",
"name": "List yields",
"description": "Rank stablecoin yield opportunities with a composite risk-adjusted score (not raw APY). Call after health. Research estimates only.",
"tags": [
"yields",
"stablecoin",
"risk-adjusted",
"research"
],
"examples": [
"{\n \"assets\": [\"USDC\"],\n \"sortBy\": \"risk_adjusted\"\n}",
"After list_yields, contrast row #1 (risk-adjusted winner) with row #2 (often higher rate, thinner liquidity, or other chain). Do not pick the max-APY row in the ten as the contrast. Live protocol/chain names move \u2014 any named pair is a snapshot, not the spec."
]
},
{
"id": "score_opportunity",
"name": "Score opportunity",
"description": "Full multi-factor risk-adjusted score for one opportunity from list_yields. Research only.",
"tags": [
"score",
"yields",
"research"
]
},
{
"id": "compare_opportunities",
"name": "Compare opportunities",
"description": "Side-by-side comparison of 2\u20135 opportunities by risk-adjusted score. Research only.",
"tags": [
"compare",
"yields",
"research"
]
},
{
"id": "explain_score",
"name": "Explain score",
"description": "Explain why an opportunity received its risk-adjusted score (factors, yield mix, caveats). Research only.",
"tags": [
"explain",
"score",
"research"
]
},
{
"id": "get_protocol_risk",
"name": "Protocol risk",
"description": "Protocol-level risk card (age, audit signals, curated known issues). Higher score = lower protocol risk. Research only.",
"tags": [
"protocol",
"risk",
"research"
]
}
],
"notes": "Discovery card only. Connect via MCP Streamable HTTP at /mcp. A2A message/send is not implemented. Copy-paste path: health {} then list_yields {\"assets\":[\"USDC\"],\"sortBy\":\"risk_adjusted\"}. Contrast #1 vs #2, not max APY."
}