Skip to main content
Glama

Jock Taxes Developer MCP

Match NFL after-tax salary

equivalent_nfl_salary

Find the gross salary on a comparison NFL 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. On NFL, other_duty_day_pay is added to the duty-day base and other_inducement_pay is added into the signing bonus. Send those with base_salary, not with a single season total. 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_nfl_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.
other_duty_day_payNoNFL cash bucket added to the duty-day base before the season total is summed.
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).
other_inducement_payNoNFL cash bucket added into signing_bonus.
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.
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.8/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=false), the description discloses that results are income tax only by default, that comparisons switch to net_pay.net_economic when take-home options are set, and how RCA payout tax is modeled by default (25% Canadian withholding on the US-duty-day share, US federal marginal rate on the rest). It also adds an output-facing obligation — present the result as a calculation, not tax or legal advice, and echo inputs and defaults — which the annotations cannot convey.

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

Conciseness4/5

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

Purpose and the required-input list are front-loaded, and nearly every sentence carries operational content. The closing RCA sentence is a dense multi-clause run-on (default rate derivation, US-person variant) that would read better split, and some schema-level detail is restated.

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

Completeness5/5

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

For a 25-parameter tool with an output schema and annotations, the description covers everything an agent needs to invoke it correctly: required inputs, the two salary-input modes, the tax-only versus take-home branch, the net_pay.net_economic matching basis, and cross-tool sequencing. Return-shape details can be left to the output schema.

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 earns above that by explaining how parameters combine rather than what they are: other_duty_day_pay adds to the duty-day base and other_inducement_pay folds into the signing bonus, and both should be sent with base_salary rather than a single season total. The either/or rule between baseline_salary and base_salary is likewise clarified in prose. It stops short of touching the lower-stakes params (tolerance, season_id, estimated_playoff_games), which the schema already covers.

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 specific verb and resource — find the gross salary on a comparison team that matches the after-tax income of a known salary on a baseline team — which is unmistakably distinct from calculate_nfl_tax and from the MLB/NBA/NHL equivalents. An agent can pick this tool without opening the schema.

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

Usage Guidelines5/5

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

Explicitly names prerequisites (baseline_team, comparison_team, and baseline_salary or base_salary), routes to siblings (list_tax_calculator_inputs for allowed team codes, list_team_players only after league/team/season_id are known), and states the exclusion 'Do not invent team codes.' It also gives the conditional branch that selects the take-home mode (include_payroll_taxes, agent_fee_pct, retirement/rca contribution) versus the default income-tax-only comparison.

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