Skip to main content
Glama

Jock Taxes Developer MCP

Match NBA after-tax salary

equivalent_nba_salary

Find the gross salary on a comparison NBA team that matches the after-tax income of a known salary on a baseline team. Ask for the baseline team, comparison team, filing status, and either baseline_salary or base_salary. Do not invent team codes. Call list_tax_calculator_inputs for allowed values. Present the result as a calculation, not as tax or legal advice. Required before this call: baseline_team, comparison_team, and baseline_salary or base_salary. Match a player with list_team_players only after league, team, and season_id are known. Repeat inputs and defaults from the result in the reply. Results are income tax only unless the user asks for take-home: then send include_payroll_taxes, agent_fee_pct, retirement_contribution (401(k), or RRSP on a Canadian club) or rca_contribution (Canadian clubs), and report result.net_pay. Comparisons then match on net_pay.net_economic, which counts an RCA after its estimated payout tax (rca_payout_tax_rate; default 25% Canadian withholding on the US-duty-day share and the US federal marginal rate on the rest, or 25% on all of it for a US person).

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "baseline_team": "<baseline_team>",
      "comparison_team": "<comparison_team>"
    },
    "name": "equivalent_nba_salary"
  }
}

Input Schema

NameRequiredDescriptionDefault
season_idNoSchedule season as eight digits, such as 20252026. Defaults to the latest season for the league when omitted.
toleranceNoDollar tolerance for the equivalent-salary search. Defaults to 1.
base_salaryNoDuty-day base in whole dollars before signing and performance bonuses. Send this with the bonus fields to match Salary + Bonuses. Leave it out when sending baseline_salary.
agent_fee_pctNoAgent fee as a percent of gross pay (0-10), treated as a non-deductible cost. Default 0.
baseline_teamYesTeam that pays the known salary.
birth_countryNoBirth country code used with is_us_person.
filing_statusNoSingle or Married_Joint. Defaults to Single when omitted.
signing_bonusNoSigning bonus in whole dollars. The site adds this into the season total. On NFL it also includes other inducement pay.
baseline_salaryNoOne season total on the baseline team, taxed entirely as duty-day pay. Leave this out when sending base_salary.
comparison_teamYesTeam whose gross pay is solved to match baseline after-tax income.
contract_seasonNoContract season label, such as 2025-26.
primary_domicileNoResident tax home: a state, a city, or a mode such as local_jurisdiction. Defaults to local_jurisdiction when omitted.
rca_contributionNoSalary deferred into a Retirement Compensation Arrangement by a Canadian club, in USD. Excluded from Canadian employment income until paid out: from worldwide income for a Canadian resident and in full from Canadian-source pay for a non-resident (Martin v. The King, 2024 TCC 153). US tax is unchanged. Not applied for US clubs. Comparisons count it after the estimated tax at payout (see rca_payout_tax_rate). Default 0.
performance_bonusNoPerformance bonus in whole dollars. Included in the total only when include_performance_bonus_in_jock_tax is true.
rca_payout_tax_rateNoEstimated tax on the RCA when it is paid out, as a percent (0-100). Default models a player who retires to a no-tax US state and draws the RCA and its refundable tax account down at once: the US-duty-day share, already taxed by the US when contributed, bears Canada's 25% non-resident withholding, and the rest bears the US federal marginal rate on it (37% for a high earner). For a US person, who pays US tax on the whole contribution now, the default is the 25% withholding alone. Lowers net_pay.net_economic, which comparisons match on.
retirement_catch_upNonone (default), 50_plus (+$8,000) or 60_to_63 (+$11,250). Catch-up contributions are always Roth for athletes (prior-year FICA wages over $150,000).
include_payroll_taxesNoOpt in to employee payroll taxes for each team's employer: FICA (Social Security, Medicare, Additional Medicare) and the home state's disability or paid-leave levy for US clubs; CPP/QPP, EI and QPIP for Canadian clubs. Default false. For a Canadian resident it also applies the CPP/QPP and EI credits and the enhanced CPP/QPP deduction on the Canadian return. With any take-home option set, the match uses net_pay.net_economic and the response adds baseline_ and comparison_ net_pay, payroll_taxes, agent_fee and retirement_contribution.
art_xvi4_inducement_sbNoOpt in to Canada–U.S. Treaty Art. XVI(4) on an exempt signing bonus from a Canadian club.
estimated_playoff_gamesNoExtra postseason games. Use 0 when there are none.
retirement_contributionNoAnnual retirement contribution in USD. On a US club it is a 401(k) elective deferral capped at the 2026 limit ($24,500 plus catch-up). On a Canadian club it is an RRSP contribution capped at C$33,810, deducted from Canadian taxable income only. Default 0.
comparison_primary_domicileNoResident tax home modeled for the comparison team.
retirement_contribution_typeNo401(k) only: pretax (default) lowers income-tax wages except in Pennsylvania, Philadelphia, Pittsburgh, Ohio cities, Kansas City and St. Louis; roth lowers nothing. RRSP contributions are always deductible.
exempt_signing_bonus_from_jock_taxNoWhen true, the signing bonus is taxed in the player's domicile and left out of duty-day allocation.
include_performance_bonus_in_jock_taxNoWhen true, performance_bonus is part of the season total and of duty-day pay.

Output Schema

NameRequiredDescriptionDefault
sportYes
inputsYes
resultYes
defaultsYes
disclaimerYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • addedInput schema / properties / agent_fee_pct
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Agent fee as a percent of gross pay (0-10), treated as a non-deductible cost. Default 0.",
      +  "title": "Agent Fee Pct"
      +}
    • addedInput schema / properties / include_payroll_taxes
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Opt in to employee payroll taxes for each team's employer: FICA (Social Security, Medicare, Additional Medicare) and the home state's disability or paid-leave levy for US clubs; CPP/QPP, EI and QPIP for Canadian clubs. Default false. For a Canadian resident it also applies the CPP/QPP and EI credits and the enhanced CPP/QPP deduction on the Canadian return. With any take-home option set, the match uses net_pay.net_economic and the response adds baseline_ and comparison_ net_pay, payroll_taxes, agent_fee and retirement_contribution.",
      +  "title": "Include Payroll Taxes"
      +}
    • addedInput schema / properties / rca_contribution
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Salary deferred into a Retirement Compensation Arrangement by a Canadian club, in USD. Excluded from Canadian employment income until paid out: from worldwide income for a Canadian resident and in full from Canadian-source pay for a non-resident (Martin v. The King, 2024 TCC 153). US tax is unchanged. Not applied for US clubs. Comparisons count it after the estimated tax at payout (see rca_payout_tax_rate). Default 0.",
      +  "title": "Rca Contribution"
      +}
    • addedInput schema / properties / rca_payout_tax_rate
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Estimated tax on the RCA when it is paid out, as a percent (0-100). Default models a player who retires to a no-tax US state and draws the RCA and its refundable tax account down at once: the US-duty-day share, already taxed by the US when contributed, bears Canada's 25% non-resident withholding, and the rest bears the US federal marginal rate on it (37% for a high earner). For a US person, who pays US tax on the whole contribution now, the default is the 25% withholding alone. Lowers net_pay.net_economic, which comparisons match on.",
      +  "title": "Rca Payout Tax Rate"
      +}
    • addedInput schema / properties / retirement_catch_up
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "none (default), 50_plus (+$8,000) or 60_to_63 (+$11,250). Catch-up contributions are always Roth for athletes (prior-year FICA wages over $150,000).",
      +  "title": "Retirement Catch Up"
      +}
    • addedInput schema / properties / retirement_contribution
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Annual retirement contribution in USD. On a US club it is a 401(k) elective deferral capped at the 2026 limit ($24,500 plus catch-up). On a Canadian club it is an RRSP contribution capped at C$33,810, deducted from Canadian taxable income only. Default 0.",
      +  "title": "Retirement Contribution"
      +}
    • addedInput schema / properties / retirement_contribution_type
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "401(k) only: pretax (default) lowers income-tax wages except in Pennsylvania, Philadelphia, Pittsburgh, Ohio cities, Kansas City and St. Louis; roth lowers nothing. RRSP contributions are always deductible.",
      +  "title": "Retirement Contribution Type"
      +}
  2. First observed

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only readOnlyHint=false and destructiveHint=false in annotations, the description carries major weight and delivers: it discloses defaults (tolerance 1, Single, local_jurisdiction, 25% RCA withholding / 37% federal marginal), how the comparison basis switches to net_pay.net_economic when take-home options are set, and which response fields appear as a result.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded, but the single dense paragraph repeats itself ('Ask for the baseline team, comparison team, filing status, and either baseline_salary or base_salary' is restated as 'Required before this call: ...') and duplicates the rca_payout_tax_rate explanation already in the schema. It would read much better as short labeled sections.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 24-parameter, multi-jurisdiction tax tool with an output schema, the description covers the main path, the take-home branch, and RCA treatment well. Many edge parameters (tolerance, estimated_playoff_games, retirement_catch_up, art_xvi4_inducement_sb, birth_country) are left entirely to their schema entries, which is acceptable given 100% coverage but leaves the description less than fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description still adds cross-parameter meaning beyond the schema: the either/or between baseline_salary and base_salary on the primary path, which inputs to prompt the user for, and the bundle of take-home parameters that must be sent together before net_pay matters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb and resource: 'Find the gross salary on a comparison NBA team that matches the after-tax income of a known salary on a baseline team.' The league qualifier plus the baseline/comparison framing cleanly separates it from the sibling equivalent_mlb/nfl/nhl_salary tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit prerequisites ('Required before this call: baseline_team, comparison_team, and baseline_salary or base_salary'), a routing instruction ('Call list_tax_calculator_inputs for allowed values'), an anti-pattern ('Do not invent team codes'), and a conditional path for take-home pay. It never explicitly contrasts itself with calculate_nba_tax, but the when-to-use context is otherwise strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources