Dynasty and redraft fantasy football trade values, trade grades, and Sleeper league rosters.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Grade a dynasty or redraft trade of any size using current market values. Returns a WIN / EVEN / LOSE verdict, the value total for each side, and structural context the raw chart misses (consolidation, best player in the deal, pick-heavy sides). USE WHEN: the user asks whether a trade is fair, who wins a deal, or what they should add to even it out. Pass player names as the user said them — the tool resolves them and tells you if a name was ambiguous or unknown.
Players/picks one manager gives up, by name — e.g. ['Bijan Robinson', '2026 2nd'].
Players/picks the other manager gives up, by name.
Value set to use. Default 'dynasty'. IMPORTANT: there is exactly ONE dynasty table and its QB values are superflex/market-weighted — dynasty values are not split by 1QB vs superflex or by scoring. The redraft sets ARE split: redraft-{sf,1qb}-{ppr,half,std}.
Name for side A (default 'Side A').
Name for side B (default 'Side B').
League team count, 8–16 (default 12). Used only for the transparent roster-spot adjustment.
Grade a dynasty or redraft trade of any size using current market values. Returns a WIN / EVEN / LOSE verdict, the value total for each side, and structural context the raw chart misses (consolidation, best player in the deal, pick-heavy sides). USE WHEN: the user asks whether a trade is fair, who wins a deal, or what they should add to even it out. Pass player names as the user said them — the tool resolves them and tells you if a name was ambiguous or unknown.
| Argument | Type | Description |
|---|---|---|
| format | string | Value set to use. Default 'dynasty'. IMPORTANT: there is exactly ONE dynasty table and its QB values are superflex/market-weighted — dynasty values are not split by 1QB vs superflex or by scoring. The redraft sets ARE split: redraft-{sf,1qb}-{ppr,half,std}. |
| side_a* | array | Players/picks one manager gives up, by name — e.g. ['Bijan Robinson', '2026 2nd']. |
| side_b* | array | Players/picks the other manager gives up, by name. |
| label_a | string | Name for side A (default 'Side A'). |
| label_b | string | Name for side B (default 'Side B'). |
| league_size | integer | League team count, 8–16 (default 12). Used only for the transparent roster-spot adjustment. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"side_a",
"side_b"
],
"properties": {
"format": {
"enum": [
"dynasty",
"redraft-sf-ppr",
"redraft-sf-half",
"redraft-sf-std",
"redraft-1qb-ppr",
"redraft-1qb-half",
"redraft-1qb-std"
],
"type": "string",
"description": "Value set to use. Default 'dynasty'. IMPORTANT: there is exactly ONE dynasty table and its QB values are superflex/market-weighted — dynasty values are not split by 1QB vs superflex or by scoring. The redraft sets ARE split: redraft-{sf,1qb}-{ppr,half,std}."
},
"side_a": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"minItems": 1,
"description": "Players/picks one manager gives up, by name — e.g. ['Bijan Robinson', '2026 2nd']."
},
"side_b": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"minItems": 1,
"description": "Players/picks the other manager gives up, by name."
},
"label_a": {
"type": "string",
"description": "Name for side A (default 'Side A')."
},
"label_b": {
"type": "string",
"description": "Name for side B (default 'Side B')."
},
"league_size": {
"type": "integer",
"maximum": 16,
"minimum": 8,
"description": "League team count, 8–16 (default 12). Used only for the transparent roster-spot adjustment."
}
},
"additionalProperties": false
}Read completed trades from a Sleeper league and identify the highest-value players currently unrostered. USE WHEN: the user asks what their league has paid, wants recent trade history, waiver targets, or replacement-level context. Read-only: nothing is posted to Sleeper.
| Argument | Type | Description |
|---|---|---|
| week | integer | One NFL week. Omit to scan weeks 1–18. |
| limit | integer | Maximum completed trades to return (default 15). |
| format | string | Value set to use. Default 'dynasty'. IMPORTANT: there is exactly ONE dynasty table and its QB values are superflex/market-weighted — dynasty values are not split by 1QB vs superflex or by scoring. The redraft sets ARE split: redraft-{sf,1qb}-{ppr,half,std}. |
| league_id* | string | Sleeper league ID. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"league_id"
],
"properties": {
"week": {
"type": "integer",
"maximum": 18,
"minimum": 1,
"description": "One NFL week. Omit to scan weeks 1–18."
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Maximum completed trades to return (default 15)."
},
"format": {
"enum": [
"dynasty",
"redraft-sf-ppr",
"redraft-sf-half",
"redraft-sf-std",
"redraft-1qb-ppr",
"redraft-1qb-half",
"redraft-1qb-std"
],
"type": "string",
"description": "Value set to use. Default 'dynasty'. IMPORTANT: there is exactly ONE dynasty table and its QB values are superflex/market-weighted — dynasty values are not split by 1QB vs superflex or by scoring. The redraft sets ARE split: redraft-{sf,1qb}-{ppr,half,std}."
},
"league_id": {
"type": "string",
"minLength": 8,
"description": "Sleeper league ID."
}
},
"additionalProperties": false
}Pull real rosters from a Sleeper league and price every team with current market values: total roster value, league power ranking, and each team's best assets. USE WHEN: the user mentions their Sleeper league or asks about their own team — 'is my team contending', 'who should I trade', 'what is my roster worth'. Call with `sleeper_username` alone to list the user's leagues, then again with the chosen `league_id`. Read-only: nothing is written to Sleeper and no login is needed.
| Argument | Type | Description |
|---|---|---|
| team | string | Focus on one team by manager display name or team name; full roster is listed. |
| format | string | Value set to use. Default 'dynasty'. IMPORTANT: there is exactly ONE dynasty table and its QB values are superflex/market-weighted — dynasty values are not split by 1QB vs superflex or by scoring. The redraft sets ARE split: redraft-{sf,1qb}-{ppr,half,std}. |
| season | string | Season year, e.g. '2026'. Defaults to the current season. |
| league_id | string | Sleeper league ID. Returns every team in the league, valued and ranked. |
| sleeper_username | string | Sleeper username. Use this when the user has not given a league ID. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"team": {
"type": "string",
"description": "Focus on one team by manager display name or team name; full roster is listed."
},
"format": {
"enum": [
"dynasty",
"redraft-sf-ppr",
"redraft-sf-half",
"redraft-sf-std",
"redraft-1qb-ppr",
"redraft-1qb-half",
"redraft-1qb-std"
],
"type": "string",
"description": "Value set to use. Default 'dynasty'. IMPORTANT: there is exactly ONE dynasty table and its QB values are superflex/market-weighted — dynasty values are not split by 1QB vs superflex or by scoring. The redraft sets ARE split: redraft-{sf,1qb}-{ppr,half,std}."
},
"season": {
"type": "string",
"description": "Season year, e.g. '2026'. Defaults to the current season."
},
"league_id": {
"type": "string",
"description": "Sleeper league ID. Returns every team in the league, valued and ranked."
},
"sleeper_username": {
"type": "string",
"description": "Sleeper username. Use this when the user has not given a league ID."
}
},
"additionalProperties": false
}Full detail for a single player: market value, overall and positional rank, tier, age, and the players closest to them in value. USE WHEN: the user asks what one player is worth, or wants realistic trade targets at a comparable price. The comparables list is the practical answer to 'what could I get for him' — players inside the even band trade roughly one-for-one.
| Argument | Type | Description |
|---|---|---|
| format | string | Value set to use. Default 'dynasty'. IMPORTANT: there is exactly ONE dynasty table and its QB values are superflex/market-weighted — dynasty values are not split by 1QB vs superflex or by scoring. The redraft sets ARE split: redraft-{sf,1qb}-{ppr,half,std}. |
| player* | string | Full player name, e.g. 'Bijan Robinson'. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"player"
],
"properties": {
"format": {
"enum": [
"dynasty",
"redraft-sf-ppr",
"redraft-sf-half",
"redraft-sf-std",
"redraft-1qb-ppr",
"redraft-1qb-half",
"redraft-1qb-std"
],
"type": "string",
"description": "Value set to use. Default 'dynasty'. IMPORTANT: there is exactly ONE dynasty table and its QB values are superflex/market-weighted — dynasty values are not split by 1QB vs superflex or by scoring. The redraft sets ARE split: redraft-{sf,1qb}-{ppr,half,std}."
},
"player": {
"type": "string",
"minLength": 1,
"description": "Full player name, e.g. 'Bijan Robinson'."
}
},
"additionalProperties": false
}Top players by current market value, overall or filtered to one position (QB/RB/WR/TE, or PICK for rookie draft picks). USE WHEN: the user asks for rankings, tiers, 'who are the top dynasty WRs', or wants to find trade targets in a value range.
| Argument | Type | Description |
|---|---|---|
| limit | integer | How many to return (default 25). |
| format | string | Value set to use. Default 'dynasty'. IMPORTANT: there is exactly ONE dynasty table and its QB values are superflex/market-weighted — dynasty values are not split by 1QB vs superflex or by scoring. The redraft sets ARE split: redraft-{sf,1qb}-{ppr,half,std}. |
| position | string | Filter to one position. 'PICK' returns rookie draft picks. Omit for overall. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "How many to return (default 25)."
},
"format": {
"enum": [
"dynasty",
"redraft-sf-ppr",
"redraft-sf-half",
"redraft-sf-std",
"redraft-1qb-ppr",
"redraft-1qb-half",
"redraft-1qb-std"
],
"type": "string",
"description": "Value set to use. Default 'dynasty'. IMPORTANT: there is exactly ONE dynasty table and its QB values are superflex/market-weighted — dynasty values are not split by 1QB vs superflex or by scoring. The redraft sets ARE split: redraft-{sf,1qb}-{ppr,half,std}."
},
"position": {
"enum": [
"QB",
"RB",
"WR",
"TE",
"PICK"
],
"type": "string",
"description": "Filter to one position. 'PICK' returns rookie draft picks. Omit for overall."
}
},
"additionalProperties": false
}Players whose dynasty market value has moved most recently — risers and fallers, with the size of the move. USE WHEN: the user asks who is trending up or down, wants buy-low or sell-high candidates, or asks what changed in the market. Movement is measured against a recent market baseline, not a fixed window, so treat it as 'what the market has repriced lately'.
| Argument | Type | Description |
|---|---|---|
| limit | integer | How many to return (default 15). |
| position | string | Filter to one position. |
| direction | string | Risers, fallers, or both by absolute move (default 'both'). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "How many to return (default 15)."
},
"position": {
"enum": [
"QB",
"RB",
"WR",
"TE"
],
"type": "string",
"description": "Filter to one position."
},
"direction": {
"enum": [
"up",
"down",
"both"
],
"type": "string",
"description": "Risers, fallers, or both by absolute move (default 'both')."
}
},
"additionalProperties": false
}Find players (and rookie picks) by name and get their current dynasty market value, positional rank, and tier. USE WHEN: you need to resolve a name before grading a trade, or the user asks what someone is worth. Returns several candidates when the name is ambiguous — pick the right one rather than guessing.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max results (default 8). |
| query* | string | Player name or fragment — 'Bijan', 'Marvin Harrison', '2026 1st'. Partial names are fine. |
| format | string | Value set to use. Default 'dynasty'. IMPORTANT: there is exactly ONE dynasty table and its QB values are superflex/market-weighted — dynasty values are not split by 1QB vs superflex or by scoring. The redraft sets ARE split: redraft-{sf,1qb}-{ppr,half,std}. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 25,
"minimum": 1,
"description": "Max results (default 8)."
},
"query": {
"type": "string",
"minLength": 1,
"description": "Player name or fragment — 'Bijan', 'Marvin Harrison', '2026 1st'. Partial names are fine."
},
"format": {
"enum": [
"dynasty",
"redraft-sf-ppr",
"redraft-sf-half",
"redraft-sf-std",
"redraft-1qb-ppr",
"redraft-1qb-half",
"redraft-1qb-std"
],
"type": "string",
"description": "Value set to use. Default 'dynasty'. IMPORTANT: there is exactly ONE dynasty table and its QB values are superflex/market-weighted — dynasty values are not split by 1QB vs superflex or by scoring. The redraft sets ARE split: redraft-{sf,1qb}-{ppr,half,std}."
}
},
"additionalProperties": false
}