analyze_trade
Evaluate a trade offer by comparing the net category impact of the players you're giving vs receiving.
What it does
analyze_trade resolves each player by name against live NHL rosters, pulls their season statistics, and runs a category-by-category comparison across the key fantasy hockey scoring dimensions. You get a full breakdown and a clear ACCEPT / DECLINE / PUSH verdict — with chirp. Counting stats are summed; GAA and SV% are averaged across goalies.
Usage
analyze_trade — giving Nathan MacKinnon, receiving Auston MatthewsOr ask naturally:
Should I trade MacKinnon for Matthews?Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
giving | string[] | ✅ | Player names you are trading away |
receiving | string[] | ✅ | Player names you are receiving |
chirp_intensity | string | — | gentle / standard / savage / ice_cold (default: standard) |
personality_mode | string | — | analytical / motivational / roast_master / championship_coach |
Multi-player trades
Both sides accept arrays — pass multiple names for package deals: giving: ["Player A", "Player B"], receiving: ["Player C"]
Categories compared
| Category | Stat | Note |
|---|---|---|
| G | Goals | Higher is better |
| A | Assists | Higher is better |
| +/- | Plus/minus | Higher is better |
| PIM | Penalty minutes | Higher is better |
| SOG | Shots on goal | Higher is better |
| PPP | Power play points | Higher is better |
| W | Goalie wins | Higher is better |
| GAA | Goals against average | Lower is better |
| SV% | Save percentage | Higher is better |
Categories where both sides have zero stats are skipped automatically.
Example response
{
"trade": {
"giving": ["Nathan MacKinnon"],
"receiving": ["Auston Matthews"]
},
"players": {
"giving": [{ "name": "Nathan MacKinnon", "found": true, "position": "C", "team": "COL", "stats": { "G": 32, "A": 61, "+/-": 22, "SOG": 187, "PPP": 38 } }],
"receiving": [{ "name": "Auston Matthews", "found": true, "position": "C", "team": "TOR", "stats": { "G": 45, "A": 40, "+/-": 15, "SOG": 210, "PPP": 29 } }]
},
"category_breakdown": [
{ "category": "G", "giving": 32, "receiving": 45, "winner": "receiving" },
{ "category": "A", "giving": 61, "receiving": 40, "winner": "giving" },
{ "category": "+/-", "giving": 22, "receiving": 15, "winner": "giving" },
{ "category": "SOG", "giving": 187, "receiving": 210, "winner": "receiving" },
{ "category": "PPP", "giving": 38, "receiving": 29, "winner": "giving" }
],
"summary": {
"receiving_wins": 2,
"giving_wins": 3,
"verdict": "DECLINE"
},
"chirp": {
"verdict_chirp": "💡 you'd be handing away 3 categories for only 2 back. Your opponent is praying you say yes. Hard pass.",
"ice_cold_truth": "🔥 Savage Reality: This trade has 'I got played' written all over it. Close the chat."
}
}Verdict logic
| Result | Meaning |
|---|---|
| ACCEPT | Receiving side wins more categories |
| DECLINE | Giving side wins more categories |
| PUSH | Equal categories each side |
Category context matters
The verdict is based on raw season stats totals. A PUSH might still be worth accepting if you're surplus at the giving player's position or need depth at the receiving player's. Use the category breakdown to decide.
Part of the CHIRP Intelligence layer — Tools Overview
