{"name":"find_waiver_moves","title":"Waiver call","description":"Use this when the user asks who to pick up, who to drop, or how to cover an injured or bye-week starter. Finds holes in their lineup and adds that are actually unrostered in their linked league, and returns THE CALL as a Decision Card (ADD) with a decision_id to watch. Does not make the move. Read-only.","inputSchema":{"type":"object","properties":{"position":{"type":"string","description":"optional position to look at (QB, RB, WR, TE, K, DEF)"}}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"outputSchema":{"type":"object","required":["ok","decision"],"properties":{"ok":{"type":"boolean"},"decision":{"oneOf":[{"type":"object","required":["schema_version","decision_id","kind","verdict","headline","subject","confidence","confidence_method","league","updated_at","updated_display","factors","reasoning","risk","sources","watchable","lock_at","watch_hint"],"properties":{"schema_version":{"type":"string","const":"1.0"},"decision_id":{"type":"string","pattern":"^d_[0-9a-f]{12}$"},"kind":{"type":"string","enum":["start_sit","trade","waiver","lineup"]},"verdict":{"type":"string","enum":["START","SIT","TRADE","PASS","ADD","HOLD","NO_CALL"]},"lean":{"type":"string","description":"on NO_CALL: the verdict the facts lean toward"},"headline":{"type":"string"},"subject":{"type":"array","items":{"type":"object","required":["name","role"],"properties":{"name":{"type":"string"},"pos":{"type":"string"},"team":{"type":"string"},"role":{"type":"string","enum":["pick","other","give","get","add","cover"]},"status":{"type":"string"},"projection":{"type":["number","null"]}}}},"confidence":{"type":"integer","minimum":0,"maximum":100},"confidence_method":{"type":"string"},"confidence_breakdown":{"type":"object"},"league":{"type":"object","properties":{"platform":{"type":"string"},"name":{"type":"string"},"teams":{"type":["integer","null"]},"scoring":{"type":"string"},"week":{"type":["integer","null"]},"format_line":{"type":"string"}}},"updated_at":{"type":"string"},"updated_display":{"type":"string"},"factors":{"type":"array","minItems":3,"maxItems":3,"items":{"type":"object","required":["name","direction","note"],"properties":{"name":{"type":"string"},"direction":{"type":"string","enum":["↑","↓","→"]},"note":{"type":"string"}}}},"reasoning":{"type":"string"},"risk":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"as_of":{"type":"string"}}}},"watchable":{"type":"boolean"},"lock_at":{"type":["string","null"]},"watch_hint":{"type":"string"}}},{"type":"null"}],"description":"THE CALL — a Decision Card; null when no call could be made"},"call_line":{"type":"string","description":"the compact one-line rendering of the card"},"players":{"type":"array","items":{"type":"object"}},"code":{"type":"string"},"spoken":{"type":"string"}}},"_meta":{"openai/outputTemplate":"ui://sportscall/decision-card.html","sportscall/version":"1.0"},"scopes":["analysis.read"],"version":"1.0","surfaces":["claude","chatgpt","full"]}