Skip to main content
Glama

US 1099 contractor vs W-2 parity

contractor_parity
Read-onlyIdempotent

Calculate tax liabilities, statutory benefits, and net take-home cash between W-2 salaried employment and 1099 independent contractor billing, solving the exact breakeven billing rate ($/hr).

Behavior: Deterministic, idempotent calculation with zero external side effects. Computes federal FICA (Social Security up to statutory wage base and Medicare), federal income tax brackets, state income tax, employer health subsidy, 401(k) match, PTO value, SECA tax with 50% above-the-line deduction, and Section 199A QBI deduction. Returns net spendable cash for both employment models, complete tax breakdowns, effective tax rates, and the exact breakeven hourly rate.

Usage Guidelines: Use when an individual or hiring manager is deciding between a W-2 salaried offer and a 1099 contractor contract. Do not use for solo freelancer baseline rate setting without a W-2 benchmark; use billable_floor instead.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ptoDaysNoAnnual W-2 paid time off days (combined vacation and sick leave).
w2SalaryYesW-2 gross annual salary in USD ($/yr). Must be a positive number.
as_of_dateYesCivil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.
eligibleQBIYesWhether the contractor income qualifies for the Section 199A qualified business income deduction. Required: it changes federal tax and is not assumed.
filingStatusNoIRS income tax filing status: 'single' for unmarried individual or 'mfj' for married filing jointly.single
hoursPerWeekNoExpected billable client hours per week as a 1099 contractor. Must be greater than 0.
weeksPerYearNoActive billable working weeks per year as a 1099 contractor (52 minus unpaid vacation and bench time).
annualExpensesNoAnnual tax-deductible business operating expenses in USD ($/yr) (software, hardware, insurance).
match401kPercentNoW-2 employer 401(k) retirement match as a percentage of gross salary (e.g. 4.0 for 4%).
healthSubsidyAnnualNoAnnual W-2 employer-paid health insurance subsidy in USD ($/yr).
stateTaxRatePercentNoEffective or statutory state income tax rate in percent (e.g. 5.0 for 5%). Set to 0 for states without income tax.
contractorHourlyRateYes1099 contractor hourly billing rate in USD ($/hr). Must be a positive number.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • addedInput schema / properties / as_of_date
      Added value: +{
      +  "description": "Civil date YYYY-MM-DD. Selects the rule pack in force on that date. Required: the engine will not assume a date.",
      +  "example": "2026-09-26",
      +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +  "type": "string"
      +}
    • removedInput schema / properties / eligibleQBI / default
      Removed value: -true
    • changedInput schema / properties / eligibleQBI / description
      Previous value: -"Whether the 1099 contractor business qualifies for the Section 199A 20% Qualified Business Income deduction."New value: +"Whether the contractor income qualifies for the Section 199A qualified business income deduction. Required: it changes federal tax and is not assumed."
    • removedInput schema / properties / selectedRail
      Removed value: -{
      -  "default": "wise",
      -  "description": "Payment rail provider for international contractor payout: 'wise', 'deel', 'payoneer', 'stripe', 'paypal', or 'wire'.",
      -  "enum": [
      -    "wise",
      -    "deel",
      -    "payoneer",
      -    "stripe",
      -    "paypal",
      -    "wire"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / targetCurrency
      Removed value: -{
      -  "default": "EUR",
      -  "description": "Target fiat currency code for international cross-border conversion drag (e.g. EUR, GBP, CAD).",
      -  "type": "string"
      -}
    • changedInput schema / required
      Previous value: -[
      -  "w2Salary",
      -  "contractorHourlyRate"
      -]New value: +[
      +  "w2Salary",
      +  "contractorHourlyRate",
      +  "eligibleQBI",
      +  "as_of_date"
      +]
  2. Changed1 schema field changed
    • removedInput schema / properties / contractorHourlyRate / default
      Removed value: -85
  3. Changed13 schema fields changed
    • changedInput schema / properties / annualExpenses / description
      Previous value: -"1099 deductible business expenses ($/yr)"New value: +"Annual tax-deductible business operating expenses in USD ($/yr) (software, hardware, insurance)."
    • changedInput schema / properties / contractorHourlyRate / description
      Previous value: -"1099 contractor hourly billing rate in USD ($/hr)"New value: +"1099 contractor hourly billing rate in USD ($/hr). Must be a positive number."
    • changedInput schema / properties / eligibleQBI / description
      Previous value: -"Eligible for Section 199A 20% QBI deduction"New value: +"Whether the 1099 contractor business qualifies for the Section 199A 20% Qualified Business Income deduction."
    • changedInput schema / properties / filingStatus / description
      Previous value: -"Tax filing status"New value: +"IRS income tax filing status: 'single' for unmarried individual or 'mfj' for married filing jointly."
    • changedInput schema / properties / healthSubsidyAnnual / description
      Previous value: -"Annual W-2 employer health insurance subsidy ($/yr)"New value: +"Annual W-2 employer-paid health insurance subsidy in USD ($/yr)."
    • changedInput schema / properties / hoursPerWeek / description
      Previous value: -"1099 billable hours per week"New value: +"Expected billable client hours per week as a 1099 contractor. Must be greater than 0."
    • changedInput schema / properties / match401kPercent / description
      Previous value: -"W-2 employer 401(k) match %"New value: +"W-2 employer 401(k) retirement match as a percentage of gross salary (e.g. 4.0 for 4%)."
    • changedInput schema / properties / ptoDays / description
      Previous value: -"W-2 paid time off days"New value: +"Annual W-2 paid time off days (combined vacation and sick leave)."
    • addedInput schema / properties / selectedRail / description
      Added value: +"Payment rail provider for international contractor payout: 'wise', 'deel', 'payoneer', 'stripe', 'paypal', or 'wire'."
    • changedInput schema / properties / stateTaxRatePercent / description
      Previous value: -"State income tax rate %"New value: +"Effective or statutory state income tax rate in percent (e.g. 5.0 for 5%). Set to 0 for states without income tax."
    • changedInput schema / properties / targetCurrency / description
      Previous value: -"Target currency for international cross-border FX drag"New value: +"Target fiat currency code for international cross-border conversion drag (e.g. EUR, GBP, CAD)."
    • changedInput schema / properties / w2Salary / description
      Previous value: -"W-2 gross annual salary in USD ($/yr)"New value: +"W-2 gross annual salary in USD ($/yr). Must be a positive number."
    • changedInput schema / properties / weeksPerYear / description
      Previous value: -"1099 billable weeks per year"New value: +"Active billable working weeks per year as a 1099 contractor (52 minus unpaid vacation and bench time)."
  4. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover readOnly/idempotent/destructive false, but the description adds substantial detail: deterministic, zero external side effects, lists all computed tax items, and specifies exact return contents (net spendable cash, tax breakdowns, effective rates, breakeven hourly rate). This exceeds the annotation-based baseline and fully discloses behavior.

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?

The description is moderately long but well-structured: a clear purpose sentence, a behavior paragraph listing computes and returns, and a usage guideline paragraph. It is front-loaded with the core purpose. Each sentence carries information; there is little waste.

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?

With 12 parameters, 4 required, and no output schema, the description compensates by specifying all return outputs and behavior. It also gives usage conditions. The as_of_date param is explained in the schema, and the description confirms rule-pack selection implicitly. No critical omission for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not restate individual parameters but frames them as inputs to a breakeven calculation, adding aggregate context. This is acceptable but does not add per-parameter meaning beyond the schema's comprehensive descriptions.

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 ('Calculate') and resource ('tax liabilities, statutory benefits, and net take-home cash') distinguishing W-2 vs 1099 and solving the exact breakeven rate. It also names a sibling (billable_floor) as the alternative context, clarifying its unique purpose.

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 states when to use ('deciding between a W-2 salaried offer and a 1099 contractor contract') and when not to ('solo freelancer baseline rate setting without a W-2 benchmark'), pointing to a specific alternative tool. This is direct and actionable guidance.

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