Check position (research policy)
check_positionEvaluate 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
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Same as yieldhunter opportunities[].id. | |
| asset | No | Stablecoin symbol, e.g. "USDC". | |
| chain | No | ethereum | base | arbitrum | |
| poolId | No | yieldhunter opportunities[].id (DefiLlama pool UUID). Example: "43641cf5-a92e-416b-bce9-27113d3c0db6" | |
| minScore | No | Minimum compositeRiskAdjusted (0–100). | |
| minNetApy | No | Minimum net APY estimate. | |
| minTvlUsd | No | Minimum pool TVL in USD. | |
| horizonDays | No | Holding horizon in days for net-yield context (default 30). | |
| maxExitRisk | No | Cap on yieldhunter exitRisk heuristic: low | medium | high. Unknown or above the cap → review. | |
| notionalUsd | No | Research notional in USD (size hint only). Example: 10000 | |
| policyPreset | No | 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). | |
| protocolSlug | No | Protocol slug, e.g. "aave-v3". | |
| riskAppetite | No | conservative | balanced | aggressive (research posture only). | |
| opportunityId | No | Alias for poolId / id. | |
| maxRewardShare | No | Maximum incentive share of gross APY (0–1). | |
| requireCurated | No | 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. | |
| minProtocolScore | No | Minimum yieldhunter protocol risk score (0–100, higher = safer). | |
| excludeCategories | No | Exclude categories, e.g. ["rwa"]. |